Abstract

Formal modelling languages play a key role in the development of software: they enable users to specify functional requirements that serve as documentation as well; they enable users to prove the correctness of system properties, especially for critical systems. However, there is still an open question on how to map formal models to a specific programming language. In order to propose a solution, this paper presents a source-to-source mapping between Event-B models, a formal modelling language for reactive systems, and Eiffel programs, an Object Oriented (O-O) programming language. The mapping not only generates an actual Eiffel code of the Event-B model, but also translates model properties as contracts. The contracts follow the Design by Contract principle and are natively supported by the programming language. The mapping is implemented in the freely available Rodin plug-in EB2Eiffel. Thus, users can develop systems (i) starting with the modelling of functional requirements (properties) in Event-B, then (ii) formally proving the correctness of such properties in Rodin and finally (iii) by using EB2Eiffel to translate the model into Eiffel. In Eiffel, users can extend/customise the implementation of the model and formally prove it against the initial model. This paper also presents different Event-B models from the literature to test EB2Eiffel and its limitations. The article is published in the authors’ wording.

Highlights

  • Formal modelling languages play a key role in the development of software: they enable users to specify functional requirements that serve as documentation as well; they enable users to prove the correctness of system properties, especially for critical systems

  • In order to propose a solution, this paper presents a source-to-source mapping between Event-B models, a formal modelling language for reactive systems, and Eiffel programs, an Object Oriented (O-O) programming language

  • Event-B is a formal modelling language for reactive systems, introduced by Abrial [1], which allows the modelling of complete systems

Read more

Summary

Introduction

This paper presents a series of rules to produce Eiffel programs from Event-B models, bridging both top-down and bottom-up approaches. The Code Generation tool [4] generates concurrent Java and Ada programs for a tasking extension of Event-B Unlike these tools, the work presented here does not require user’s intervention, while it works on the proper syntax of the Event-B model. Translation from Event-B into Eiffel fel comes with different tools to prove Eiffel code statically (e.g. Autoproof [16]) that fully supports the language. Another difference is the translation of carrier sets. Section 5. is devoted for conclusions, outlining potential improvements and directions for future work

Event-B
Eiffel
Translation
Implementation
Event-B and Rodin Structure
The General Structure of the Tool
Traversing the Abstract Syntax Tree
Translating into Eiffel
Evaluation
Conclusion
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.