The B method is method of software development based on B, a tool-supported formal method based around an abstract machine notation, used in the development of computer software. It was originally developed by Jean-Raymond Abrial in France and the UK. B is related to the Z notation (also originated by Abrial) and supports development of programming language code from specifications. B has been used in major safety-critical system applications in Europe (such as the Paris Métro Line 14). It has robust, commercially available tool support for specification, design, proof and code generation.
Compared to Z, B is slightly more low-level and more focused on refinement to code rather than just formal specification — hence it is easier to correctly implement a specification written in B than one in Z. In particular, there is good tool support for this.
Recently, another formal method called Event-B has been developed. Event-B is considered an evolution of B (also known as classical B). It is a simpler notation, which is easier to learn and use. It comes with tool support in the form of the Rodin tool.
The main components
In the first and the most abstract version, which is called Abstract Machine, designer should specify the goal of the design.
- Then, during a refinement step, he may pad the specification in order to clarify the goal or to turn the abstract machine more concrete by adding more details about data structures and algorithms that explain how the goal may be achieved.
- The new version, which is called Refinement, should be proven to be coherent and including all the properties of the Abstract Machine.
- Designer may make use of many B libraries in order to see data structure, to include or import some components.
- The refinement in its turn may be refined one or many times to obtain a deterministic version which is called Implementation.
- During all of the development steps the same notation is used and the last version may be translated to Ada, C or C++ language.
Some B method characteristics
- Use same language in specification, design and programation.
- Mechanism include encapsulation and data locality.
- Clear and close introduction for refinement concept.
- Originated in the 1980s by Jean-Raymond Abrial.
- B method is a tool-supported formal methods based around AMN (Abstract Machine Notation), used in the development of correct software.
- B method has been used in some major safety-critical system applications in Europe (such as in Paris Métro Line 14 and Ariane 5 rocket).
The B-Toolkit, developed by Ib Holm Sørensen et al., is a collection of programming tools designed to support the use of the B-Tool, a set theory based mathematical interpreter, for the purposes of a formal software engineering methodology known as the B method.
The toolkit uses a custom X Window Motif Interface for GUI management and runs primarily on the Linux and Solaris operating systems. It has been developed by the UK based company B-Core (UK) Limited.
- The B-Book: Assigning Programs to Meanings, Jean-Raymond Abrial, Cambridge University Press, 1996. ISBN 0-521-49619-5.
- The B-Method: An Introduction, Steve Schneider, Palgrave Macmillan, Cornerstones of Computing series, 2001. ISBN 0-333-79284-X.
- Software Engineering with B, John Wordsworth, Addison Wesley Longman, 1996. ISBN 0-201-40356-0.
- The B Language and Method: A Guide to Practical Formal Development, Kevin Lano, Springer-Verlag, FACIT series, 1996. ISBN 3-540-76033-4.
- Specification in B: An Introduction using the B Toolkit, Kevin Lano, World Scientific Publishing Company, Imperial College Press, 1996. ISBN 1-86094-008-0.
- Modeling in Event-B: System and Software Engineering, Jean-Raymond Abrial, Cambridge University Press, 2010. ISBN 978-0-521-89556-9.
- APCB (Association de Pilotage des Conférences B)
- B Method.com: this site is designed to present different work and subjects concerning the B method, a formal method with proof
- Atelier B.eu: Atelier B is a systems engineering workshop, which enables software to be developed that is guaranteed to be flawless
- Site B Grenoble