Using assertions about traces to write abstract specifications for software modules

  • Wolfram Bartussek
  • David L. Parnas
Analysis And Design Tools
Part of the Lecture Notes in Computer Science book series (LNCS, volume 65)


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.


Software Module Current Block Access Program Abstract Data Type Predicate Transformer 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. [1]
    Parnas, D.L. "Information Distribution Aspects of Design Methodology." Proc. IFIP Congress, 1971Google Scholar
  2. [2]
    Parnas, D.L. "On the Criteria to be Used in Decomposing Systems into Modules." Communications of the ACM (Programming Techniques Department), December 1972.Google Scholar
  3. [3]
    Parnas, D.L., Shore, J.E., and D. Weiss. "Abstract Types Defined as Classes of Variables." Proc. Conference on Data: Abstraction, Definition, and Structure, pp. 22–24, Salt Lake City, Utah, March 1976.Google Scholar
  4. [4]
    Floyd, R.W. "Assigning Meanings to Programs." In "Mathematical Aspects of Computer Science" (J.T. Schwartz, ed.). Proc. Symp. of Applied Mathematics, Vol. 19, American Math. Society, Providence, 1967, 19–32.Google Scholar
  5. [5]
    Hoare, C.A.R. "An Axiomatic Basis for Computer Programming." Comm. ACM 12, 10. October 1969, 576–583.Google Scholar
  6. [6]
    Dijkstra, E.W. "Guarded Commands, Nondeterminancy, and the Formal Derivation of Programs." CACM 18, 8, August 1975.Google Scholar
  7. [7]
    Dijkstra, E.W. A Discipline of Programming. Prentice Hall, 1976.Google Scholar
  8. [8]
    Parnas, D.L. "A Technique for Software Module Specification with Examples." Comm. ACM, May 1972.Google Scholar
  9. [9]
    Guttag, J. "The Specification and Application to Programming of Abstract Data Types." Ph. D. Thesis, CSRG TR 59, University of Toronto, September 1975.Google Scholar
  10. [10]
    Guttag, J. "Abstract Data Types and the Development of Data Structures." SIGPLAN/SIGMOD Conference on DATA: Abstraction, Definition and Structure (to be published in CACM).Google Scholar
  11. [11]
    Parnas, D.L. and W.R. Price. "The Design of the Virtual Memory Aspects of a Virtual Machine" Proceedings of the ACM SIGARCH-SIGOPS Workshop on Virtual Computer Systems, March 1973.Google Scholar
  12. [12]
    Parnas, D.L. and W.R. Price. "Using Memory Access Control as the Only Protection Mechanism." Proc. of International Workshop on Protection in Operating System, 13–14 August, IRIA.Google Scholar
  13. [13]
    Roubine, O. and L. Robinson. "Special Reference Manual" (Second Edition), Technical Report CSG-45, Stanford Research Institute, Menlo Park, Calif.Google Scholar
  14. [14]
    Liskov, B. and V. Berzins. "An Appraisal of Program Specifications." Research Direction in Software Technology (P. Wegner, ed.). To be published by MIT Press.Google Scholar
  15. [15]
    J. Guttag. Private communication, 1976.Google Scholar
  16. [16]
    Parnas, D.L. and H. Wuerges. "Response to Undesired Events in Software Systems." Proc. of the 2nd International Conference on Software Engineering, 13–15 October 1976, San Francisco, California.Google Scholar
  17. [17]
    Parnas, D.L., Handzel, G. and H. Wuerges. "Design and Specification of the Minimal Subset of an Operating System Family." Presented at 2nd International Conference on Software Engineering, 13–15 October 1976; published in special issue of IEEE Transactions on Software Engineering, December 1976.Google Scholar
  18. [18]
    Neumann, P.G., A Provably Secure Operating System: The System, Its Applications, and Proofs. Final Report, Stanford Research Institute, 11 February 1977, Menlo Park, CaliforniaGoogle Scholar
  19. [19]
    Parnas, D.L. "The Use of Precise Specifications in the Development of Software." Proc. IFIP Congress 1977, North Holland Publishing Company.Google Scholar
  20. [20]
    Parnas, D.L. and G. Handzel. "More on Specification Techniques for Software Modules." Technical Report, Technische Hochschule Darmstadt, Darmstadt, West Germany, February 1975.Google Scholar
  21. [21]
    Price, W.R. "Implications of a Virtual Memory Mechanism for Implementing Protection in a Family of Operating Systems." Technical Report (Ph. D. Thesis), Carnegie-Mellon University, June 1973, AD766292.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1978

Authors and Affiliations

  • Wolfram Bartussek
    • 1
  • David L. Parnas
    • 1
  1. 1.Department of Computer ScienceUniversity of North Carolina at Chapel HillChapel HillUSA

Personalised recommendations