Recent advances in software specification methods, model checking, and theorem proving have generated new tools for the use of formal methods in both industry and academia. Yet, in order to choose the techniques most appropriate for a specific application, it is necessary to have a good understanding and expertise in formal methods. Software engineers now have several case studies to learn from, and are able to choose from a large selection of languages and methods, with a rich repertoire of appropriate concepts for their intended applications.This extensively revised and updated new edition of Specification of Software Systems builds upon the original focus on software specification with added emphasis on the practice of formal methods for specification and verification activities for different types of software systems and at different stages of developing software systems. This expanded perspective is matched by a considerable amount of new content, included to cater to the growing needs of students and researchers in the area of formal software engineering. Topics related to the integration of formal methods in the software development process are introduced early, and are followed by presentations of principles of abstraction, definitions of formalism, notations of formalism, and a wide variety of detailed specification examples. This additional material is further reflected in the new structure of the second edition, which is now arranged in six parts.Topics and features: provides a wide coverage of formal specification techniques and a clear writing style, supported by end-of-chapter bibliographic notes for further reading; presents a logical structure, with sections devoted to specification fundamentals, basics of formalism, logic, set theory and relations, property-oriented specification methods, and model-based specification techniques; contains end-of-chapter exercises and numerous case studies, with potential course outlines suggested in the Preface; covers Object-Z, B-Method, and Calculus of Communicating Systems; offers material that can be taught with tool-supported laboratory projects.This comprehensive textbook is essential reading for students at all levels in computer science, software engineering, computer engineering, and information systems engineering. Software professionals wishing to familiarize themselves with formal methods will also find this an invaluable reference.
Specification of Software Systems