Specification techniques for data abstractions

The main purposes in writing this paper are to discuss the importance of formal specifications and to survey a number of promising specification techniques. The role of formal specifications both in proofs of program correctness, and in programming methodologies leading to programs which are correct by construction, is explained. Some criteria are established for evaluating the practical potential of specification techniques. The importance of providing specifications at the right level of abstraction is discussed, and a particularly interesting class of specification techniques, those used to construct specifications of data abstractions, is identified. A number of specification techniques for describing data abstractions are surveyed and evaluated with respect to the criteria. Finally, directions for future research are indicated.

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

[2]  Jacob T. Schwartz,et al.  On programming : an interim report on the SETL Project , 1973 .

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

[4]  Carlos Christensen An Example of the Manipulation of Directed Graphs in the AMBIT/G Programming Language , 1968 .

[5]  Carl Hewitt,et al.  Actor semantics of PLANNER-73 , 1975, POPL '75.

[6]  Alexander Birman On Proving Correctness of Microprograms , 1974, IBM J. Res. Dev..

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

[8]  Barbara Liskov The design of the Venus operating system , 1972, CACM.

[9]  Jay Earley,et al.  Toward an understanding of data structures , 1971, SIGFIDET '70.

[10]  C. A. R. Hoare,et al.  Proof of a structured program: 'the sieve of Eratosthenes' , 1972, Comput. J..

[11]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974 .

[12]  F. T. Baker,et al.  Chief Programmer Team Management of Production Programming , 1972, IBM Syst. J..

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

[14]  Zohar Manna,et al.  Inductive methods for proving properties of programs , 1973, Commun. ACM.

[15]  Peter G. Neumann Toward a Methodology for Designing Large Systems and Verifying Their Properties , 1974 .

[16]  Edsger W. Dijkstra,et al.  The structure of the “THE”-multiprogramming system , 1968, CACM.

[17]  James H. Morris Towards more flexible type systems , 1974, Symposium on Programming.

[18]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[19]  Barbara Liskov,et al.  A design methodology for reliable software systems , 1972, AFIPS '72 (Fall, part I).