Author_Institution :
University of Toronto, Toronto, Ont., Canada
Abstract :
A survey of reasons fog and methods of dividing large computer programs into parts is presented. The paper concentrates on over-all or external program structures (e.g., methods of sharing data among procedures) rather than on internal program structures, such as arrays, pointers, loops, and conditional statements. The paper classifies reasons for dividing programs as arising from 1) physical constraints such as limited memory space, and 2) human constraints such as division of programming responsibility. The principal tool fog organizing programs to meet human constraints is functional decomposition, i.e., dividing a program and its specifications according to (hopefully simple) functions of the program parts. Unfortunately, the various constraints which impose divisions upon a large program do not necessarily suggest the same program organisation. The central portion of the paper deals with mechanism for program compsition. These mechanisms are classified as 1) routines which are called by sequential process (a routine is any procedure-like software mechanism), 2) mechanisms for data sharing among routines (such as Fortran´s common data blocks and Algol´s scope rules), and 3) mechanisms for handling asynchronous interactions (such as requesting the scheduling of input/output operations). The paper also discusses techniques for folding programs to meet memory constraints (by overlaying, paging, and segmenting) and methods of linking separately compiled procedures.