An architectural pattern is a general, reusable solution to a commonly occurring problem in
software architecture
Software architecture is the fundamental structure of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations.
...
within a given context.
The architectural patterns address various issues in
software engineering
Software engineering is a systematic engineering approach to software development.
A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term ' ...
, such as
computer hardware performance limitations,
high availability
High availability (HA) is a characteristic of a system which aims to ensure an agreed level of operational performance, usually uptime, for a higher than normal period.
Modernization has resulted in an increased reliance on these systems. F ...
and minimization of a
business risk. Some architectural patterns have been implemented within
software framework
In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard ...
s.
The use of the word "pattern" in the software industry was influenced by similar concepts as expressed in traditional
architecture
Architecture is the art and technique of designing and building, as distinguished from the skills associated with construction. It is both the process and the product of sketching, conceiving, planning, designing, and constructing buildings ...
, such as
Christopher Alexander
Christopher Wolfgang John Alexander (4 October 1936 – 17 March 2022) was an Austrian-born British-American architect and design theorist. He was an emeritus professor at the University of California, Berkeley. His theories about the nature o ...
's ''
A Pattern Language'' (1977) which discussed the practice in terms of establishing a
pattern lexicon, prompting the practitioners of computer science to contemplate their own design lexicon.
Usage of this
metaphor
A metaphor is a figure of speech that, for rhetorical effect, directly refers to one thing by mentioning another. It may provide (or obscure) clarity or identify hidden similarities between two different ideas. Metaphors are often compared wit ...
within the software engineering profession became commonplace after the publication of ''
Design Patterns
''Design Patterns: Elements of Reusable Object-Oriented Software'' (1994) is a software engineering book describing software design patterns. The book was written by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, with a fore ...
'' (1994) by
Erich Gamma
Erich Gamma is a Swiss computer scientist and one of the four co-authors (referred to as "Gang of Four") of the software engineering textbook, '' Design Patterns: Elements of Reusable Object-Oriented Software''.
Gamma is an expert in the Eclipse ...
,
Richard Helm,
Ralph Johnson, and
John Vlissides—now commonly known as the "Gang of Four"—coincident with the early years of the public
Internet
The Internet (or internet) is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a ''internetworking, network of networks'' that consists ...
, marking the onset of complex software systems "eating the world" and the corresponding need to codify the rapidly sprawling world of software development at the deepest possible level, while remaining flexible and adaptive.
Architectural patterns are similar to
software design pattern
In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine c ...
s but have a broader scope.
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".
Architectural style
Following traditional building architecture, a 'software
architectural style
An architectural style is a set of characteristics and features that make a building or other structure notable or historically identifiable. It is a sub-class of style in the visual arts generally, and most styles in architecture relate closely ...
' is a specific method of construction, characterized by the features that make it notable.
Some treat architectural patterns and architectural styles as the same,
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"
[ or "vocabulary"][ 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 software design pattern
In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine c ...
s and solution patterns.
Some additional examples of architectural patterns:
* Blackboard system
A blackboard system is an artificial intelligence approach based on the blackboard architectural model, where a common knowledge base, the "blackboard", is iteratively updated by a diverse group of specialist knowledge sources, starting with a pro ...
* Broker pattern
The broker pattern is an architectural pattern that can be used to structure distributed software systems with decoupled components that interact by remote procedure calls. A broker component is responsible for coordinating communication, such as ...
* Event-driven architecture Event-driven architecture (EDA) is a software architecture paradigm promoting the production, detection, consumption of, and reaction to events.
Overview
An ''event'' can be defined as "a significant change in state". For example, when a consume ...
* Implicit invocation
* Layers
* Hexagonal architecture
* Microservices
A microservice architecture – a variant of the service-oriented architecture structural style – is an architectural pattern that arranges an application as a collection of loosely-coupled, fine-grained services, communicating through ligh ...
* Action–domain–responder
Action–domain–responder (ADR) is a software architectural pattern that was proposed by Paul M. Jones as a refinement of Model–view–controller (MVC) that is better suited for web applications. ADR was devised to match the request-response ...
,
**Model–view–controller
Model–view–controller (MVC) is a software architectural pattern commonly used for developing user interfaces that divide the related program logic into three interconnected elements. This is done to separate internal representations of infor ...
** Presentation–abstraction–control
** Model–view–presenter
** Model–view–viewmodel
** Model–view–adapter
* Entity component system
Entity Component System (ECS) is a software architectural pattern mostly used in video game development for the representation of game world objects. An ECS comprises ''entities'' composed from ''components'' of data, with ''systems'' which opera ...
*Entity-control-boundary
The entity-control-boundary (ECB), or entity-boundary-control (EBC), or boundary-control-entity (BCE) is an architectural pattern used in use-case driven object-oriented software design that structures the classes composing a software according ...
* Multitier architecture
In software engineering, multitier architecture (often referred to as ''n''-tier architecture) is a client–server architecture in which presentation, application processing and data management functions are physically separated. The most wide ...
(often three-tier or -tier)
*Object-oriented programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
* Naked objects Naked objects is an architectural pattern used in software engineering. It is defined by three principles:
The naked object pattern's innovative feature arises by combining the and principles into a principle:
The naked objects pattern was ...
* Operational data store (ODS)
* Peer-to-peer
Peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the network. They are said to form a peer-to-peer ...
* Pipe and filter architecture
Pipe(s), PIPE(S) or piping may refer to:
Objects
* Pipe (fluid conveyance), a hollow cylinder following certain dimension rules
** Piping, the use of pipes in industry
* Smoking pipe
** Tobacco pipe
* Half-pipe and quarter pipe, semi-circula ...
* Service-oriented architecture
In software engineering, service-oriented architecture (SOA) is an architectural style that focuses on discrete services instead of a monolithic design. By consequence, it is also applied in the field of software design where services are provided ...
* Space-based architecture
A Space-based architecture (SBA) is an approach to distributed computing systems where the various components interact with each other by ''exchanging'' tuples or entries via one or more shared spaces. This is contrasted with the more common Mes ...
* Distributed hash table
A distributed hash table (DHT) is a distributed system that provides a lookup service similar to a hash table: key–value pairs are stored in a DHT, and any participating node can efficiently retrieve the value associated with a given key. The ...
* Publish–subscribe pattern
*Message broker
A message broker (also known as an integration broker or interface engine) is an intermediary computer program module that translates a message from the formal messaging protocol of the sender to the formal messaging protocol of the receiver. Mess ...
* Hierarchical model–view–controller
See also
* List of software architecture styles and patterns
* Process Driven Messaging Service A process driven messaging service (PDMS) is a service that is process oriented and exchanges messages/data calls. A PDMS is a service where jobs and triggers can be put together to create a workflow for a message.
Messaging platforms are conside ...
* Enterprise architecture
* Common layers in an information system logical architecture
In software engineering, multitier architecture (often referred to as ''n''-tier architecture) is a client–server architecture in which presentation, application processing and data management functions are physically separated. The most wide ...
References
Bibliography
*
*
*
{{Design Patterns patterns
Software design patterns