Fundamentals of algebraic specification 2. Module specifications and constraints.

*(English)*Zbl 0759.68013
EATCS Monographs on Theoretical Computer Science. 21. Berlin etc.: Springer-Verlag. XI, 427 p. (1990).

This text is the second part of a three-volume series on the use of algebraic specifications for laying a mathematical foundation of software engineering. While the first part deals with equations and initial semantics is concerned mainly with the mathematical legwork, the second volume, under review here, discusses modules. Modules are a basic construct in programming, permitting the decomposition of the problem at hand into encapsulated subproblems. Now some fundamental questions arise: how are modules represented using algebraic specifications, what is the semantics of modules, and how are the various operations on modules described in the calculus under consideration? The text proposes an answer to these questions: first abstract modules are introduced as an abstraction of the module concept found in programming languages, then module specifications are discussed together with the basic and general operations of them, which may graphically be described as horizontal structuring (Chapters 2-5). Diverse manipulations on modules like refinements entailing vertical development steps from higher level requirements to lower level design specifications are discussed in Chapter 5, and Chapter 6 discusses vertical development from a categorical point of view, introducing the concept of development categories. The final Chapters 7 and 8 discuss constraints as well as module specifications, delving into the problem of no longer being able to guarantee the existence of free constructions. An appendix introduces the abstract versions of the algebraic specification languages ACT ONE and ACT TWO. Furthermore, a list of basic notions and constructions from algebraic specifications and category theory is provided.

The text is well written, but it certainly helps to have the first volume of this series handy, and to have a basic knowledge of algebraic specifications (e.g. the survey of M. Wirsing [Algebraic specifications in J. van Leeuwen (ed.): Handbook of theoretical computer science, vol. B, Elsevier, Amsterdam, 677-788 (1990; Zbl 0714.68001)] or the textbook by H.-D. Ehrich, M. Gogolla and U. W. Lipeck [Algebraische Spezifikation abstrakter Datentypen, Teubner- Verlag, Stuttgart (1989; Zbl 0696.68011)]). The authors indicate that their theory is driven by the practical requirements of software development, and it will have to be seen whether this approach will be useful in the day-to-day of the educated software engineer.

The text is well written, but it certainly helps to have the first volume of this series handy, and to have a basic knowledge of algebraic specifications (e.g. the survey of M. Wirsing [Algebraic specifications in J. van Leeuwen (ed.): Handbook of theoretical computer science, vol. B, Elsevier, Amsterdam, 677-788 (1990; Zbl 0714.68001)] or the textbook by H.-D. Ehrich, M. Gogolla and U. W. Lipeck [Algebraische Spezifikation abstrakter Datentypen, Teubner- Verlag, Stuttgart (1989; Zbl 0696.68011)]). The authors indicate that their theory is driven by the practical requirements of software development, and it will have to be seen whether this approach will be useful in the day-to-day of the educated software engineer.

Reviewer: E.E.Doberkat (Essen)

##### MSC:

68N01 | General topics in the theory of software |