posted on 1996-01-01, 00:00authored byMary Shaw, Paul Clements
<p>Software architects use a number of commonly-recognized "styles" to guide their design of system structures. Each of these is appropriate for some classes of problems, but none is suitable for all problems. How, then, does a software designer choose an architecture suitable for the problem at hand? Two kinds of information are required: (1)<em> careful discrimination</em> among the candidate architectures and (2)<em> design guidance</em> on how to make appropriate choices. Here we support <em>careful discrimination</em> with preliminary classification of styles. We use a two-dimensional classification strategy with control and data issues as the dominant organizing axes. We position the major styles within this space and use finer-grained discriminations to elaborate variations on the styles. This provides a framework for organizing <em>design guidance,</em> which we partially flesh out with rules of thumb.</p>