Algebraic methods for specification and formal development of programs

Donald Sannella, Andrzei Tarlecki
1999 ACM Computing Surveys  
This note gives our personal perspective on the state of foundations of software specification and development including applications to the formal development of reliable complex software systems. We regard this area of research as straddling the borderline between theory and practice. It has connections with work on the design and semantics of software systems and programming languages, on formal methods for system verification (various program logics in particular), and relies heavily on
more » ... basic concepts of mathematical logic, universal algebra and category theory, while being directly inspired by and potentially applicable in practice. In this note we sum up our experiences so far, hint at the need for further work in certain areas, and speculate a bit about the directions in which we expect to go in the future. The roots of our work in this area are in the theory of algebraic specification. The most fundamental assumption underlying this theory is that programs are modelled as many-sorted algebras consisting of a collection of sets of data values together with functions over those sets. This level of abstraction is commensurate with the view that the correctness of the input/output behaviour of a program takes precedence over all its other properties. Another common element is that specifications of programs consist mainly of logical axioms, usually in a logical system in which equality has a prominent role, describing the properties that the functions are required to satisfy. This property-oriented approach is in contrast to so-called model-oriented specifications which consist of a simple realization of the required behaviour. A wide variety of different approaches to algebraic specification take these two principles as their starting point. Research on algebraic specification has been devoted mainly to the search for an adequate account of the fundamental concepts and basic processes involved in the
doi:10.1145/333580.333589 fatcat:wyih6yl2a5fwbayaubqa3moiw4