The first solution decomposes the problem according to the four basic
functions performed: input, shift, alphabetize, and output. These
computational components are coordinated as subroutines by a main program
that sequences through them in turn. Data is communicated between the
components through shared storage ("core storage"). Communication between
the computational components and the shared data is an unconstrained
read-write protocol. This is made possible by the fact that the coordinating
program guarantees sequential access to the data.
Hierarchical Subroutine Architecture with Shared Data
In this solution, computations can share the same storage. This allow efficient data representation. The solution also has a certain intuitive appeal, since distinct computational aspects are isolated in different modules.
However, as Parnas argues, it has a number of serious drawbacks in terms of its ability to handle changes. In particular, a change in data storage format will affect almost all of the modules. Similarly changes in algorithm and enhancements to system function are not easily handled.
Finally, reuse is not well-supported because each module of the system is tied tightly to this particular application.
Updated 11/8/95 by
Mary Shaw
Comments to maintainer