This book provides a textbook introduction to the B-Method, a rigorous methodology for the development of correct software. The text covers all stages of the B software development process - from specification, through refinement and design, down to implementation and automatic code generation. The method uses a single uniform notation throughout development, designed to enable verification at each stage whilst placing particular emphasis on correctness.
· Suitable for undergraduate and postgraduate courses on formal methods and software development
· Written in a clear tutorial style of explanation
· Contains numerous illustrative examples, exercises and self-testing questions with solutions throughout
· Relevant to users of any B-Method CASE tool
· Teaching materials available online
The B-Method : An Introduction also offers readers powerful tool support by providing a free licence for the B-Toolkit - an integrated toolset which supports and extends the entire B development lifecycle.
'For a typically structured UK third year, one-semester undergraduate course, Steve Schneider's book with its supporting material offers a product that a lecturer can simply take out of the box and use directly. The completeness and thoroughness of coverage are very impressive, and the clarity of the exposition is exceptional. This book could go a long way towards making the B-Method more accessible to a wider range of computer science students than has been the case hitherto, and I can recommend it with enthusiasm.' - Richard Banach, Manchester University, The Journal of Software Testing, Verification and Reliability
Preface Introducing Abstract Machines Review of Set Theory and Logic Weakest Preconditions Towards Machine Consistency Parameters, Sets and Constants Relations Functions and Sequences Arrays Nondeterminism Structuring with INCLUDES Structuring with SEES and USES Data Refinement Refinement of Nondetermnism Proof Obligations for Refinements Loops Implementation Machines Case Study: Heapsort Library Machines Answers to SelfTests Appendix A: Generalised Substitution Language Appendix B: Machine Readable AMN Index Index of Machines