Architectural pattern

For the use of the word "pattern" in the field of architecture, see Pattern (architecture).

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

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 style 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
  • One-Way
  • Synchronous Request/Response
  • Basic Callback
  • Claim Check
Data Architecture
  • Custom Applications Databases
  • Packaged Application Databases
  • ETL
  • EAI
  • SOA
Business Intelligence
  • Transactional Reporting
  • Operational Reporting
  • Analytical Reporting
  • Transactional Reporting Data Access
  • Operational Reporting Data Access
  • Analytical Reporting Data Access
  • Analytical Dashboard Data Access
  • Operational Dashboard Data Access
  • Data Mining
  • ETL
  • EAI
  • TDS
  • Operational Data Store
  • Data Mart
Master data management
  • Master Data Hub
  • Master Data Replication
  • Master Data Services
  • Master Data Synchronization
Data Modeling
  • Modeling Standards
  • Naming Conventions

Some additional examples of architectural patterns:

See also

References

  1. 1 2 R. N. Taylor, N. Medvidović and E. M. Dashofy, Software architecture: Foundations, Theory and Practice. Wiley, 2009.
  2. Chang, Chih-Hung; Lu, Chih-Wei; Lin, Chih-Hao; Yang, Ming-Feng; Tsai, Ching-Fu (June 2008). "An Experience of Applying Pattern-based Software Framework to Improve the Quality of Software Development: 4. The Design and Implementation of OS2F". Journal of Software Engineering Studies, Vol. 2, No. 6. the Third Taiwan Conference on Software Engineering (TCSE07). pp. 185–194. Retrieved 2012-05-16. Furthermore, patterns are often defined as something "strictly described and commonly available". For example, layered architecture is a call-and-return style, when it defines an overall style to interact.
  3. "Architectural Patterns: Definition". AAHN INFOTECH (INDIA) PVT. LTD. Retrieved 2012-05-16. Even though an architectural pattern conveys an image of a system, it is not an architecture as such. An architectural pattern is rather a concept that solves and delineates some essential cohesive elements of a software architecture. Countless different architectures may implement the same pattern and thereby share the related characteristics. Furthermore, patterns are often defined as something "strictly described and commonly available".
  4. 1 2 M. Shaw and D. Garlan, Software architecture: perspectives on an emerging discipline. Prentice Hall, 1996.
  5. 1 2 http://msdn.microsoft.com/en-us/library/ee658117.aspx

Bibliography

Avgeriou, Paris; Uwe Zdun (2005). "Architectural patterns revisited:a pattern language". 10th European Conference on Pattern Languages of Programs (EuroPlop 2005), Irsee, Germany, July. 

Buschmann F.; Meunier R.; Rohnert H.; Sommerlad P.; Stal M. (1996). Pattern-Oriented Software Architecture: A System of Patterns. John Wiley & Sons. 

Bass L.; Clements P.; Kazman R. (2005). Software Architecture in Practice: Second Edition. Addison-Wesley. 

This article is issued from Wikipedia - version of the 6/16/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.