An architectural style, sometimes called an architectural pattern, is a set of principles — a coarse grained pattern that provides an abstract framework for a family of systems. An architectural style improves partitioning and promotes design reuse by providing solutions to frequently recurring problems. You can think of architecture styles and patterns as sets of principles that shape an application. Garlan and Shaw define an architectural style as: "a family of systems in terms of a pattern of structural organization. More specifically, an architectural style determines the vocabulary of components and connectors that can be used in instances of that style, together with a set of constraints on how they can be combined. These can include topological constraints on architectural descriptions (e.g., no cycles). Other constraints — say, having to do with execution semantics—might also be part of the style definition.” (David Garlan and Mary Shaw, January 1994, CMU-CS-94-166, see "An Introduction to Software Architecture")
App Arch Guide 2.0 (Microsoft patterns&practices) list a number of architectural styles:
Each of those architectural styles are applied to specific areas of interest:
Benefits of Architectural Styles
Architectural styles provide several benefits. The most important of these benefits is that they provide a common language. Another benefit is that they provide a way to have a conversation that is technology-agnostic. This allows you to facilitate a higher level of conversation that is inclusive of patterns and principles, without getting into the specifics. For example, by using architecture styles, you can talk about client-server versus N-Tier. According to Architectural Styles CS 377 Introduction to Software Engineering:
- Design Reuse. Well-understood solutions applied to new problems.
- Code reuse. Shared implementations of invariant aspects of a style.
- Understandability of system organization. A phrase such as ‘client-server” conveys a lot of information.
- Interoperability. Supported by style standardization.
- Style-specific analysis. Enabled by the constrained design space.
- Visualizations. Style-specific descriptions matching engineer’s mental models.
Architecture Description Language (ADL)
Architecture Development Method (ADM)
Service Oriented Architecture (SOA)
The Open Group Architecture Framework (TOGAF)
- Software Architecture Styles Henry Muccini
- Software Architecture - Architectural Styles Alexander Serebrenik, Technische Universiteit Eindhoven
- Architectural Styles. Software Architecture: Foundations, Theory, and Practice [www.ics.uci.edu/~andre/informatics221f2013/lecture5.ppt]