Using assertions about traces to write abstract specifications for software modules

A specification for a software module is a statement of the requirements that the final programs must meet. In this paper we concentrate on that portion of the specification that describes the interface between the module being specified and other programs (or persons) that will interact with that module. Because of the complexity of software products, it is advantageous to be able to evaluate the design of this interface without reference to any possible implementations. The first sections of this paper present an approach to the writing of black box specifications, that takes advantage of Guttag's work on abstract specification [9]. Then we illustrate it on a number of small examples, and discuss checking the completeness of a specification. Finally we describe a case history of a module design. Although the module is a simple one, the early specifications (written using an earlier notation) contained design flaws that were not detected in spite of the involvement of several persons in a series of discussions about the module. These errors are easily recognized using the method introduced in this paper.

[1]  David Lorge Parnas,et al.  A technique for software module specification with examples , 1972, CACM.

[2]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[3]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[4]  John V. Guttag,et al.  The specification and application to programming of abstract data types. , 1975 .

[5]  Lawrence Robinson,et al.  SPECIAL Reference Manual. , 1977 .

[6]  R. Isaacs,et al.  Applied Mathematics , 1901, Nature.

[7]  David Lorge Parnas,et al.  Response to undesired events in software systems , 1976, ICSE '76.

[8]  David Lorge Parnas,et al.  Information Distribution Aspects of Design Methodology , 1971, IFIP Congress.

[9]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[10]  William Robert Price,et al.  Implications of a virtual memory mechanism for implementing protection in a family of operating systems , 1973 .

[11]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1977, CACM.

[12]  Examples L. Parnas,et al.  A Technique for Software Module Specification with , 1972 .

[13]  J. Schwartz Mathematical Aspects of Computer Science , 1967 .

[14]  David Lorge Parnas,et al.  Design and Specification of the Minimal Subset of an Operating System Family , 1976, IEEE Transactions on Software Engineering.

[15]  D. L. Parnas,et al.  The design of the virtual memory aspects of a virtual machine , 1973, Workshop on Virtual Computer Systems.