Skip to main content
Log in

Abstract

The construction of large software systems is always achieved through assembly of independently written components — program modules. For these software components to work together, they must share a common set of data types and principles for representing structured data such as arrays of values and files. This common set of tools for creating and operating on data objects is provided by the infrastructure of the computer system: the hardware, operating system and runtime code. Because the nature and properties of these tools are crucial for correct operation of software components and their inter-operation, it is essential to have a precise specification that may be used for verifying correctness of application software on one hand, and to verify correctness of system behavior on the other. We call such a specification a program execution model (PXM). It is evident that the properties of the PXM implemented by a computer system can have serious impact on the ability of application programmers to practice modular software construction. This paper discusses the concept of program execution models and presents a set of principles that a PXM must satisfy to provide a sound basis for modular software construction. Because parallel program execution on computer systems with many processing units is an essential part of contemporary computing environments, the expression of parallelism and modular software construction using components involving parallel operations is included in this treatment. The conclusion is that it is possible to build computer systems that implement a PXM within which any parallel program may be used, unmodified, as a component for building more substantial parallel programs.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Similar content being viewed by others

References

  1. Modular Programming: Proceedings of a National Symposium. Information and Systems Press, Cambridge, MA, 1968.

  2. Sussmann J M, Goodman R V. Implementing ICES module management unfer OS/360. In Modular Programming: Proceedings of a National Symposium, 1968, pp.69-84.

  3. Lee E A. The problem with threads. IEEE Computer, 2006, 39(5): 33-42.

    Article  Google Scholar 

  4. Blelloch G E. Vector Models for Data-parallel Computing. MIT Press, Cambridge, MA, USA, 1990.

  5. Gropp W, Lusk E, Skjellum A. Using MPI: Portable Parallel Programming with the Message-Passing Interface. MIT Press, Cambridge, MA, 1994.

  6. Parnas D L. On the criteria to be used in decomposing systems into modules. Commun. ACM, 1972, 15(12): 1053-1058.

    Article  Google Scholar 

  7. Milner R, Tofte M, Harper R. The Definition of Standard ML. Cambridge, MA, USA: MIT Press, 1990.

    Google Scholar 

  8. Jack B. Dennis. Stream data types for signal processing. In Advances in Dataflow Architecture and Multithreading, Gaudiot J L, Bic L (eds.), IEEE Computer Society Press, 1995.

  9. Kelly Jr. J, Lochbaum C, Vyssotsky V A. A block diagram compiler. Bell Labs Technical Journal, 1961, 40(3): 669-676.

    Article  Google Scholar 

  10. McGraw J, Skedzielewski S, Allan S et al. SISAL: Streams and iteration in a single assignment language. Technical Report M-146, Rev. 1., Lawrence Livermore National Laboratory, Livermore, CA, 1985.

  11. Soltis F G. Inside the AS/400. Duke Press, 1996.

  12. McCarthy J. Recursive functions of symbolic expressions and their computation by machine, part I. ACM Communications, 1960, 3(4): 184-195.

    Article  MATH  Google Scholar 

  13. Wirth N. The programming language Pascal. Acta Informatica, 1971, 1: 35-63.

    Article  MATH  Google Scholar 

  14. Liskov B, Atkinson R, Bloom T et al. CLU Reference Manual. New York, NY, USA: Springer-Verlag New York, Inc., 1984.

  15. Tou J, Wegner P. Data structures in programming languages. ACM SIGPLAN Notices 6, 1971, pp.171-190.

  16. Dennis J B. A parallel program execution model supporting modular software construction. In Proc. the Conf. Massively Parallel Programming Models, Nov. 1997, pp.50-60.

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jack B. Dennis.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Dennis, J.B. Principles to Support Modular Software Construction. J. Comput. Sci. Technol. 32, 3–10 (2017). https://doi.org/10.1007/s11390-017-1702-6

Download citation

  • Received:

  • Revised:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11390-017-1702-6

Keywords

Navigation