Special Topics in Software Engineering:
Verified Software Development with the B-Method
This course introduces students to the B-Method [1, 2], a state based, model-oriented formal method intended for software development. The strength of the B-Method lies in a well-defined development process, which allows one to specify a software system as a collection of components called B-machines and to refine such an abstract specification to a concrete one. The concrete specification can be automatically translated to ADA, C or another programming language. An internal consistency of the abstract specification and correctness of each refinement step are verified by proving a set of predicates called proof obligations (PObs). The whole development process, including proving, is supported by an industrial-strength software tool called Atelier B.
During the course the students will develop a software controller for a railway scenario. They will be able to run the scenario with the controller in a tool set containing the corresponding simulation game .
Dr. Štefan Korečko
In two lectures and three practical classes the course covers all important steps of B-Method: from the formal specification through verification to the refinement to an executable implementation.
The marks of this course will be obtained from the practical parts that will be graded by the lecturer.
 Abrial, J. R., The B-Book: Assigning Programs to Meanings, Cambridge University Press, 1996.
 Abrial, J. R., Modeling in Event-B: System and Software Engineering, Cambridge University Press, 2010.
 Š. Korečko, J. Sorád, “Using simulation games in teaching formal methods for software development,” in Innovative Teaching Strategies and New Learning Paradigms in Computer Programming, R. Queirós, Ed., IGI Global, 2015, pp. 106–130. (draft version available here).
The following freely available software will be used during the course: