Formal Specification of Software
Abstract:
This module introduces methods for the formal specification of programs and large software systems, and reviews the domains of application of these methods. Its emphasis is on the functional properties of software. It does not deal with the specification of programming languages, the specification of user computer interfaces, or the verification of programs. Neither does it attempt to cover the specification of distributed systems. In our usage specification denotes 1 the process of producing various characterizations of software, and 2 the product of a specific stage of the process, namely a formal statement of what a software system is to do, where the other products of the specification process are an informal requirements statement and a design. To avoid unnecessary repetition this document uses the term specification to refer to the stage of the specification process that produces specifications.