Special Topics in Software Engineering:

Verified Software Development with the B-Method

339.354 1KV Korecko Block

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 [3].


Dr. Štefan Korečko
Technical University of Košice
Department of Computers and Informatics


Date Time Topics Room
Th, 22.3.2018 13:45 - 18:00 Lecture 1
Practical 1
K 012D
Fr, 23.3.2018 08:30 - 12:30
13:45 - 16:00
Lecture 2
Practical 2
Practical 3
S3 058


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.

  • Lecture 1: Introduction to the B-Method, its language and development process. Specification and verification of abstract machines.
  • Practical 1 (My first machine): Work with Atelier B IDE, focusing on a specification and verification of a simple abstract machine component.
  • Lecture 2: Modular programming. From abstract specification to executable implementations with verified refinement.
  • Practical 2 (Going bigger): Specification and verification of a modular specification in Atelier B.
  • Practical 3 (Let’s run it): Verified refinement of the modular specification to an executable form.


The marks of this course will be obtained from the practical parts that will be graded by the lecturer.


[1] Abrial, J. R., The B-Book: Assigning Programs to Meanings, Cambridge University Press, 1996.

[2] Abrial, J. R., Modeling in Event-B: System and Software Engineering, Cambridge University Press, 2010.

[3] Š. 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: