The merits of modular design are described in landmark papers by Parnas [220,221,223] and Wirth . The book by McConnell  provides an excellent survey of the software construction process. Booch  and Cox and Novobilski  provide good introductions to modularity and object-oriented programming. Milner , Hoare , and Chandy and Misra  provide abstract treatments of modularity and program composition in parallel programming. Foster and Taylor  explore the use of modular design techniques in concurrent logic programming. Mead and Conway  and Ullman  provide introductions to VLSI design, another area in which modular design techniques are used extensively.
Gropp and Smith emphasize the importance of data distribution neutrality in the design of SPMD libraries . This principle is applied extensively in their Portable Extensible Tools for Scientific computing (PETSc) package. ScaLAPACK is described by Choi, Dongarra, and Walker , Dongarra and Walker , and Dongarra, van de Geign, and Walker . Dongarra, Pozo, and Walker  describe the C++ interface. Other parallel SPMD libraries include Lemke and Quinlan's  P++ library for grid applications, Skjellum's  Multicomputer Toolbox, and Thinking Machine's  CMSSL. Skjellum et al.  discuss the use of the MPI message-passing standard to develop parallel libraries. A variety of other issues relating to parallel SPMD libraries are discussed in workshop proceedings edited by Skjellum [263,264].
The tuple space module discussed in Section 4.5 forms the basis for the Linda parallel programming model of Carriero and Gelernter [47,48,49]. The tuple space used in Linda is more general than that described here. In particular, any field can be used as a key when retrieving tuples. The tuple space solution to the database search problem is based on a Linda program in . The convolution problem and the performance results in Section 4.4 are taken from a paper by Foster et al. . Foster and Worley  describe parallel algorithms for the fast Fourier transform.
Here is a Web Tour providing access to additional information on modular programming, parallel program design, and parallel libraries.
© Copyright 1995 by Ian Foster