Making Choices: A Comparison of Styles for Software Architecture

Author: Mary Shaw

IEEE Software, special issue on software architecture, Vol 12, No 6, November 1995, pp. 27-41. Translated as "Stijlen voor architectuurontwerp; een vergelijking:, IT Management [Select], #3, September 1997, pp. 29-51.


Good engineering solves problems not only by applying scientific techniques but also by making design choices that reconcile conflicting requirements. We are interested here in architectural design of software systems--that is, the overall organizations and system-level properties of software systems. Early decisions about design strategies can have far-reaching consequences, because they shape the analysis of the problem and the expression of the design. This paper explores the consequences of one of the earliest decisions, the choice of architectural style and its associated notations. The paper shows how different architectural styles lead not simply to different designs, but to designs with distinctly--and significantly--different properties. It examines eleven different published designs for "the same" problem (automobile cruise control), classifies and compare the approaches, and discusses major differences among the resulting solutions. Although all the designers nominally designed automobile cruise controls, they actually produced a wide range of solutions to somewhat different problems. The issues addressed in the designs depend on the choice of architectural style, and most styles use multiple models in the design. The comparison illustrates some of the relative advantages and shortcomings of the styles and provides some guidance for selection.

Keywords: Software architecture, object-oriented design, information hiding, state machines, feedback control, real-time design, automobile cruise control.

Brought to you by the Composable Software Systems Research Group in the School of Computer Science at Carnegie Mellon University.

[Last modified 11-Feb-1999.
Mail suggestions to the