[Home]Definition Of Architectural Pattern

Architecture Patterns Home | RecentChanges | Preferences | Page List | All Links | Help

In 1996 the book Pattern Oriented Software Architecture[ISBN 0471958697 (alternate, search)] by Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal defined an architecture pattern as:

  "expressing a fundamental structural organization schema for software systems. 
  It provides a set of predefined subsystems, specifies their responsibilities, and 
  includes rules and guidelines for organizing the relationships between them." 

The book describes 8 architectural patterns that mostly follow this definition.

The Patterns Almanac[ISBN 0-201-61567-3 (alternate, search)] lists 79 architectural patterns. Not all of these patterns meet the POSA1 definition. According to Linda Rising, the developer of the Patterns Almanac, the categorization of the patterns in the patterns almanac was left to the authors.

While the POSA1 definition of an architectural pattern is certainly reasonable, it perhaps excludes some patterns that might be seen as essential to architecture. For example, what about patterns that provide for the ability to integrate components into a system?

A much broader view of an architecture pattern might emerge if we consider that the purpose of the software architecture is to ensure that the system meeta the goals of the stakeholders with respect to various software qualities such as maintainability, scalability, testability, etc. A full taxonomy of software qualities has been published by the SEI: http://www.sei.cmu.edu/str/taxonomies/view_qm.html And there are other issues such as security that may cross-cut the design of a large system.

However, the difficulty is we want to make distinctions as clearly as possible between a 'design pattern' and an architectural pattern. Clearly, design patterns will also have an impact on these various software qualities, so what is it that then distinguishes an architecture pattern from a design pattern?

A different way of looking at the difference between a design pattern and an architecture pattern is think about the questions considered in the development of the software architecture. These include things like:

Do we need some definitions of software architecture, subsystems, etc?


To distinguish software architecture from design I would recommend the following paper:

Amnon H. Eden, Rick Kazman: Architecture, Design, Implementation: http://www.eden-study.org/articles/2003/icse03.pdf

It gives a formal distinction between architecture, design, and implementation based on the so-called Intension and Locality criteria. Design and architecture specifications (e.g. patterns) are both intensional but design has local effects while architecture considers program-wide properties (therefore is non-local).

Architecture Patterns Home | RecentChanges | Preferences | Page List | All Links | Help
This page is read-only | View other revisions
Last edited May 13, 2004 4:01 (diff)