skip to main content
Skip header Section
Specification of computer programsOctober 1987
Publisher:
  • Addison-Wesley Longman Publishing Co., Inc.
  • 75 Arlington Street, Suite 300 Boston, MA
  • United States
ISBN:978-0-201-14226-6
Published:01 October 1987
Pages:
278
Skip Bibliometrics Section
Bibliometrics
Abstract

No abstract available.

Cited By

  1. ACM
    Perry D Theories, theories everywhere Proceedings of the 5th International Workshop on Theory-Oriented Software Engineering, (8-14)
  2. Darvas Á and Müller P Proving consistency and completeness of model classes using theory interpretation Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering, (218-232)
  3. ACM
    Perry D "Large" abstractions for software engineering Proceedings of the 2nd international workshop on The role of abstraction in software engineering, (31-33)
  4. ACM
    Trencansky I, Cervenka R and Greenwood D Applying a UML-based agent modeling language to the autonomic computing domain Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, (521-529)
  5. Maibaum T The epistemology of validation and verification testing Proceedings of the 17th IFIP TC6/WG 6.1 international conference on Testing of Communicating Systems, (1-8)
  6. Cervenka R, Trencansky I and Calisti M Modeling social aspects of multi-agent systems Proceedings of the 6th international conference on Agent-Oriented Software Engineering, (28-39)
  7. Da Silva V and De Lucena C (2019). From a Conceptual Framework for Agents and Objects to a Multi-Agent System Modeling Language, Autonomous Agents and Multi-Agent Systems, 9:1-2, (145-189), Online publication date: 1-Jul-2004.
  8. da Silva V, Choren R and de Lucena C A UML Based Approach for Modeling and Implementing Multi-Agent Systems Proceedings of the Third International Joint Conference on Autonomous Agents and Multiagent Systems - Volume 2, (914-921)
  9. Červenka R, Trenčanský I, Calisti M and Greenwood D AML Proceedings of the 5th international conference on Agent-Oriented Software Engineering, (31-46)
  10. Dey P, Gatton T and Amin M Modeling human computer interactions with automata Proceedings of the 2nd WSEAS International Conference on Electronics, Control and Signal Processing, (1-3)
  11. Offen R (2019). Desert Island Reading, Automated Software Engineering, 9:4, (405-409), Online publication date: 1-Oct-2002.
  12. Lehman M and Ramil J (2019). Software Evolution and Software Evolution Processes, Annals of Software Engineering, 14:1-4, (275-309), Online publication date: 10-Dec-2002.
  13. ACM
    Lehman M and Ramil J Evolution in software and related areas Proceedings of the 4th International Workshop on Principles of Software Evolution, (1-16)
  14. ACM
    Lehman M and Ramil J An approach to a theory of software evolution Proceedings of the 4th International Workshop on Principles of Software Evolution, (70-74)
  15. Haeberer A and Maibaum T Scientific rigour, an answer to a pragmatic question Proceedings of the 23rd International Conference on Software Engineering, (463-472)
  16. Britton C and Jones S (2018). The untrained eye, Human-Computer Interaction, 14:1, (191-244), Online publication date: 1-Mar-1999.
  17. Turski W (1997). Desert Island Column, Automated Software Engineering, 4:1, (107-109), Online publication date: 1-Jan-1997.
  18. ACM
    Benyon D, Golovchinsky G, Mathan S, Rundus D, Smith A, Williges R and Dey P Human computer interaction models and application development (panel session) Proceedings of the 1997 ACM symposium on Applied computing
  19. Finkelsteiin A, Spanoudakis G and Ryan M Software Package Requirements and Procurement Proceedings of the 8th International Workshop on Software Specification and Design
  20. Boudriga N, Elloumi F and Mili A (1992). On the lattice of specifications: Applications to a specification methodology, Formal Aspects of Computing, 4:6, (544-571), Online publication date: 1-Nov-1992.
  21. ACM
    Tech Correspondence C (1990). Technical correspondence, Communications of the ACM, 33:5, (584-586), Online publication date: 1-May-1990.
  22. ACM
    Niskier C, Maibaum T and Schwabe D A look through PRISMA: towards pluralistic knowledge-based environments for software specification acquisition Proceedings of the 5th international workshop on Software specification and design, (128-136)
  23. ACM
    Niskier C, Maibaum T and Schwabe D (2019). A look through PRISMA: towards pluralistic knowledge-based environments for software specification acquisition, ACM SIGSOFT Software Engineering Notes, 14:3, (128-136), Online publication date: 1-May-1989.
Contributors
  • University of Warsaw, Institute of Informatics
  • McMaster Centre for Software Certification

Recommendations

Ali Mili

The first paragraph of the preface starts the book off on a very upbeat note: This book is about specifications of computer programs, but it is not a book about a specification method, a specification language or a specification technique currently on the market. It is not even about any of these things as they may become available in the future. The main purpose of this book is to explain the nature of specifications. Thus it is a book about such aspects of specifications as are inherently there, even if a particular presentation chooses to ignore them. The field of program specification has reached such a level of development and maturity that one can write a whole book doing nothing more than explaining the nature of specifications. To its credit, this book does so with a great deal of precision and some humor. However, the claim in the preface needs a number of adjustments. First, the book is oriented toward a particular aspect of specifications and hence has a less general scope than the authors acknowledge. Second, perhaps inevitably, it is also biased toward a particular specification language. Third, it oversteps the boundaries of program specifications and moves into such areas as program design and implementation. I will discuss these adjustments in turn below. It is only halfway through the book (which may be half a book late) that the authors acknowledge the existence of two possible emphases in a specification: It is a matter of choice as to what is the main emphasis of specification: it may be mainly property-oriented (e.g., when it specifies a data type) or relation-oriented (e.g., when it specifies desired reactions to envisaged events). While the differences between the two kinds may seem large and could be exaggerated by the choice of different formalisms for recording G, the principal methodological aspect is the same: one way or another, G is the base for reasoning about all objects that conform to G, where G is a specification (set of formulas) being discussed. Of course, one can hardly argue with the unifying and appealing view presented here; nevertheless, to the extent that the business of specification is not mere representation but mostly reasoning, a specification formalism is still better adapted to specifications for which it provides better mechanisms for tackling complexity. It is fair to say, I think, that this book is geared toward property-oriented specifications; while this is not a shortcoming, the presence of a clear statement about the matter is desirable. While, to the book's credit, most of the discussions on program specifications are language-independent, there are instances when, perhaps inevitably, the subject matter is a specification language. In particular, Burstall and Goguen's language Clear gets some attention and is used for illustrative examples. The third modification that needs to be made to the claim of the preface is that the book discusses not only program specification but also program design and implementation. Of course, the relationship between specification and design is too close for one to be able to talk about one without the other; on the other hand, their dividing line is too unclear for one to determine where the discussion of specification ends. In addition to the brief software engineering preliminaries in chapter 1, the book contains three main chapters. Chapter 2 discusses mathematical preliminaries to program specifications; it includes background from the theory of computation and mathematical logic. Despite its difficult subject, this chapter is easy to read because of the liveliness of its presentation. Chapter 3 discusses the relationships between specifications and programs; the notion of program correctness with respect to a specification is of particular interest. The tone of this chapter is, at times, rather convoluted; this is especially annoying where formal definitions are expected. However, this may result from the book's concern for generality, including specification language independence and programming language independence. Chapter 4 deals with program design. It is very well organized. It discusses several aspects of stepwise refinement, illustrates them with judicious examples, and analyzes their impact in terms of property preservation and addition of detail. This chapter also highlights some key design principles in a very cogent manner; particularly noteworthy is how the principle of postponing design decisions is illustrated by means of examples. Finally, a lengthy appendix gives a complete, if dry, overview of the mathematics of program specifications. The style of the book is pleasing; it is fairly rigorous, easy to read, and free of idioms. The book has an index and a selected bibliography. The bibliography contains references that share the same concerns and orientation as the book; I would suggest inserting the proceedings of an ACM- and IEEE-sponsored workshop series on software specification and design (Kyoto, 1982; Orlando, 1984; London, 1985; Monterey, 1987; and, upcoming, San Francisco, 1989). Another comment on the bibliography is that the references are not always available. The preface admits that This book is not a textbook in the widely accepted sense. There are no exercises or other easily noticeables feature of a good textbook. Neither is this book a monograph, as it does not develop a monolithic view of a subject. It is much closer to the idea of a reading book, or collection of essays, on the subject of specification. The promotional text on the back cover adds, “The book will be suitable as a supplement for Computer Science students taking advanced courses in Software Specification, Software Development or Software Engineering, and will also interest professional programmers who need a guide to specification and its relationship with program development.” I agree with both assessments and intend to use the book as a supplementary text for a graduate-level course on software development. Thanks to its rigor, precision, and generality, this book will be of interest to researchers, teachers, and students. On the other hand, thanks to the maturity of its ideas, it will also be of interest to practicing software engineers.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.