The role of model checking in software engineering