Architectural Styles, Design Patterns, and Objects

Authors: Robert T. Monroe, Andrew Kompanek, Ralph Melton, and David Garlan

IEEE Software, January 1997, pp. 43-52.

(Final version unavailable in electronic format. Pre-publication version available in Postscript or PDF.)
BIBTEX Citation


Software system builders are increasingly recognizing the importance of exploiting design knowledge in the engineering of new systems. One way to do this is to define an architectural style for a collection of related systems. The style determines a coherent vocabulary of system design elements and rules for their composition. By structuring the design space for a family of related systems a style can, in principle, drastically simplify the process of building a system, reduce costs of implementation through reusable infrastructure, and improve system integrity through style-specific analyses and checks.

Like architectural style, object-oriented design patterns attempt to capture and exploit design knowledge to ease the process of designing software systems and reusing proven designs. There are, however, significant differences in the roles and capabilities of architectural styles and object-oriented design patterns, as there are between architectural design and object-oriented design. In this paper we illustrate the relationship between software architecture and object-oriented design, as well as the relationship between architectural styles and design patterns. We begin by defining our terms and then proceed to compare and contrast the various approaches with examples.

Keywords: Software Architecture, Design Patterns, Objects, Architectural Styles

For further information, please visit the home pages of the ABLE research project and Carnegie Mellon University's Composable Systems Group.

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