Architectural pattern
<templatestyles src="Module:Hatnote/styles.css"></templatestyles>
An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context.[1] Architectural patterns are similar to software design pattern but have a broader scope. The architectural patterns address various issues in software engineering, such as computer hardware performance limitations, high availability and minimization of a business risk. Some architectural patterns have been implemented within software frameworks.
Definition
Even though an architectural pattern conveys an image of a system, it is not an architecture. An architectural pattern is a concept that solves and delineates some essential cohesive elements of a software architecture. Countless different architectures may implement the same pattern and share the related characteristics. Patterns are often defined as "strictly described and commonly available".[2][3] When it is strictly described and commonly available, it is a pattern.
Architectural style
Lua error in package.lua at line 80: module 'strict' not found. Following traditional building architecture, a 'software architectural style' is a specific method of construction, characterized by the features that make it notable" (Architectural style). "An architectural style defines: a family of systems in terms of a pattern of structural organization; a vocabulary of components and connectors, with constraints on how they can be combined."[4]
"An architectural pattern is a named collection of architectural design decisions that (1) are applicable in a given development context, (2) constrain architectural design decisions that are specific to a particular system within that context, and (3) elicit beneficial qualities in each resulting system."[1]
Some treat architectural patterns and architectural styles as the same,[5] some treat styles as specializations of patterns. What they have in common is both patterns and styles are idioms for architects to use, they "provide a common language"[5] or "vocabulary"[4] with which to describe classes of systems.
The main difference is that a pattern can be seen as a solution to a problem, while a style is more general and does not require a problem to solve for its appearance.
Examples
Here is a list of architecture patterns, and corresponding design patterns and solution patterns.
Sub-Domain Area | Architecture Pattern Name | Design Patterns | Solution Patterns | Related Patterns |
---|---|---|---|---|
Data Integration/SOA |
|
|
||
|
||||
Data Architecture |
|
|
||
Business Intelligence |
|
|
|
|
Master data management |
|
|
|
|
Data Modeling |
|
Some additional examples of architectural patterns:
- Blackboard system
- Broker Pattern
- Event-driven architecture
- Implicit invocation
- Layers
- Microservices
- Model-view-controller, Presentation-abstraction-control, Model-view-presenter, and Model-view-viewmodel
- Multitier architecture (often three-tier or n-tier)
- Naked objects
- Operational Data Store (ODS)
- Peer-to-peer
- Pipe and filter architecture
- Service-oriented architecture
See also
![]() |
- List of software architecture styles and patterns
- Process Driven Messaging Service
- Enterprise architecture
- Common layers in an information system logical architecture
References
<templatestyles src="Reflist/styles.css" />
Cite error: Invalid <references>
tag; parameter "group" is allowed only.
<references />
, or <references group="..." />
Bibliography
Lua error in package.lua at line 80: module 'strict' not found.
Lua error in package.lua at line 80: module 'strict' not found.
Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 1.0 1.1 R. N. Taylor, N. Medvidović and E. M. Dashofy, Software architecture: Foundations, Theory and Practice. Wiley, 2009.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 4.0 4.1 M. Shaw and D. Garlan, Software architecture: perspectives on an emerging discipline. Prentice Hall, 1996.
- ↑ 5.0 5.1 http://msdn.microsoft.com/en-us/library/ee658117.aspx