Architectural patterns are often documented as
software design patterns
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 ...
. An
architectural pattern
An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. The architectural patterns address various issues in software engineering, such as computer hardware perfor ...
often uses the same description as 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 separation of what is architectural and what is design is not commonly agreed, nor are the patterns catalogued in any accepted form.
Software Architecture is an ambiguous term which not only relates to the discipline of software architecture itself, but also structure and connections between components.
An Introduction to Software Architecture
describes it as such "We are still far from having a well-accepted taxonomy of such architectural paradigms, let alone a fully-developed theory of software architecture. But we can now clearly identify a number of architectural patterns, or styles, that currently form the basic repertoire of a software architect."
Catalog of architectural patterns
*
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 ...
*
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 ...
*
Domain-driven design
Domain-driven design (DDD) is a major software design approach, focusing on modeling software to match a domain according to input from that domain's experts.
Under domain-driven design, the structure and language of software code (class names, ...
*
Blackboard pattern
*Sensor–controller–actuator
*
Presentation–abstraction–control
*
Component-based
*
Monolithic application
In software engineering, a monolithic application describes a single-tiered software application in which the user interface and data access code are combined into a single program from a single platform.
A monolithic application is self-contained ...
*
Layered
*
Pipes and filters
*
Database-centric
*
Blackboard
A blackboard (also known as a chalkboard) is a reusable writing surface on which text or drawings are made with sticks of calcium sulphate or calcium carbonate, known, when used for this purpose, as chalk. Blackboards were originally made of ...
*
Rule-based
*
Event-driven aka
implicit invocation
*
Publish-subscribe
*
Asynchronous messaging
*
Microkernel
In computer science, a microkernel (often abbreviated as μ-kernel) is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). These mechanisms include low-level address space management, ...
*
Reflection
*
Client-server (
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 ...
exhibits this style)
*
Shared nothing architecture
Shared may refer to:
* Sharing
* Shared ancestry or Common descent
* Shared care
* Shared-cost service
* Shared decision-making in medicine
* Shared delusion, various meanings
* Shared government
* Shared intelligence or collective intelligence
...
*
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 ...
*
Object request broker In distributed computing, an object request broker (ORB) is a middleware which allows program calls to be made from one computer to another via a computer network, providing location transparency through remote procedure calls. ORBs promote interop ...
*
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 ...
*
Representational state transfer (REST)
*
Service-oriented
*
Cloud computing
Cloud computing is the on-demand availability of computer system resources, especially data storage ( cloud storage) and computing power, without direct active management by the user. Large clouds often have functions distributed over m ...
patterns
[{{Cite journal , doi = 10.1109/MS.2015.137 , title = The Connected Car in the Cloud: A Platform for Prototyping Telematics Services , journal = IEEE Software , volume = 32 , issue = 6 , pages = 11–17 , year = 201x , last1 = Haberle , first1 = T. , s2cid = 6722642 ]
References
Architectural pattern (computer science)
Software design patterns