posted on 2008-06-01, 00:00authored byRobert T. Monroe, Andrew J Kompanek, Ralph Melton, David Garlan
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.