Modular program construction using abstractions

  • Barbara Liskov
Program Specifications
Part of the Lecture Notes in Computer Science book series (LNCS, volume 86)


A programming methodology is presented in which modular decomposition is based on recognition of useful abstractions. Two kinds of abstractions are used, procedural abstractions and data abstractions. Decomposition is carried out during a design phase that takes place before implementation begins. The design is documented by a graph showing the relationship among abstractions and by (informal) specifications of each abstraction.

The methodology is illustrated by means of a fairly large example. The design of a simplified text formatter. An implementation of the text formatter is included in the Appendix.


Data Abstraction Text Line Current Line Output Line Design Graph 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    E. W. Dijkstra. Notes on structured programming. Structured Programming, A.P.I.C. Studies in Data Processing No. 8, Academic Pres, New York 1972, 1–81.Google Scholar
  2. [2]
    N. Wirth. Program development by stepwise refinement. Comm. of the ACM 14, 4 (April 1971), 221–227.CrossRefGoogle Scholar
  3. [3]
    D. L. Parnas. Information distribution aspects of design methodology. Information Processing 71, Vol. 1, North-Holland Pub. Co., Amsterdam 1972, 339–344.Google Scholar
  4. [4]
    D. L. Parnas. Response to Detected Errors in Well-Structured Programs. Dept of Computer Science. Carnegie Mellon University, Pittsburgh, Pa., July 1972.Google Scholar
  5. [5]
    C. A. R. Hoare. Proof of correctness of data representations. Acta Informatica 4 (1972), 271–281.CrossRefGoogle Scholar
  6. [6]
    W. A. Wulf, R. London, and M. Shaw. An introduction to the construction and verification of Alphard programs. IEEE Trans. on Software Engineering, SE-2 (1976), 253–264.Google Scholar
  7. [7]
    V. Berzins. Abstract Model Specifications for Data Abstractions. Technical Report LCS/TR-221, Laboratory for Computer Science, M.I.T., Cambridge, Mass., July 1979.Google Scholar
  8. [8]
    G. J. Myers. Reliable Software Through Composite Design. Petrocelli/Charter, New York, N. Y., 1975.Google Scholar
  9. [9]
    E. Yourdon. Techniques of Program Structure and Design. Prentice-Hall, Inc., Englewood Cliffs, N. J., 1975.Google Scholar
  10. [10]
    B. Liskov, A. Snyder, R. Atkinson, and C. Schaffert. Abstraction mechanisms in CLU. Comm. of the ACM 20, 8 (August 1977), 564–576.CrossRefGoogle Scholar
  11. [11]
    B. Liskov, E. Moss, C. Schaffert, R. Scheifler, and A. Snyder. CLU Reference Manual. Computation Structures Group Memo 161, Laboratory for Computer Science, M.I.T., Cambridge, Mass., July 1978.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1980

Authors and Affiliations

  • Barbara Liskov
    • 1
  1. 1.Laboratory for Computer ScienceMassachusetts Institute of TechnologyCambridgeUSA

Personalised recommendations