Foundations of Semantics and Model Checking in a Software Engineering Course

Formal methods provide systematic and rigorous techniques for software development and we believe that they should be part of academic software engineering education. In this paper, we describe how we included a selection of formal methods in a foundational Bachelor- level Software Engineering course. We show how we introduce the basic elements of modeling and programming language semantics, and discuss how we address the theory and practice of model checking within the scope of the two semesters of the course.

[1]  Tiziana Margaria,et al.  Tool-supported enhancement of diagnosis in model-driven verification , 2009, Innovations in Systems and Software Engineering.

[2]  Robin Milner,et al.  Algebraic laws for nondeterminism and concurrency , 1985, JACM.

[3]  Robin Milner,et al.  A Calculus of Communicating Systems , 1980, Lecture Notes in Computer Science.

[4]  Tiziana Margaria,et al.  Service-Orientation: Conquering Complexity with XMDD , 2012, Conquering Complexity.

[5]  Edmund M. Clarke,et al.  Model Checking , 1999, Handbook of Automated Reasoning.

[6]  Bernhard Steffen,et al.  Model-Checking: A Tutorial Introduction , 1999, SAS.

[7]  R. J. van Glabbeek,et al.  Labelled Transition Systems , 2011 .

[8]  Tiziana Margaria,et al.  Model-Driven Development with the jABC , 2006, Haifa Verification Conference.