Architectural pattern

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

<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
  • 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.0 1.1 R. N. Taylor, N. Medvidović and E. M. Dashofy, Software architecture: Foundations, Theory and Practice. Wiley, 2009.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. 4.0 4.1 M. Shaw and D. Garlan, Software architecture: perspectives on an emerging discipline. Prentice Hall, 1996.
  5. 5.0 5.1 http://msdn.microsoft.com/en-us/library/ee658117.aspx

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.