Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the difference between Architectural Patterns and Architectural Styles?

In Software Architecture - Foundations, Theory and Practice, I can find definitions for both. The problem is that I don't get what each one of them means in plain English:

Architectural Pattern

An Architectural Pattern is a named collection of architectural design decisions that are applicable to a recurring design problem parameterized to account for different software development contexts in which that problem appears.

Architectural Style

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.

What does each one mean and what are the differences between them?

like image 899
devoured elysium Avatar asked Oct 18 '10 10:10

devoured elysium


People also ask

What is the difference between an architectural style and an architectural pattern?

An architectural Style is a specialization of element and relation types, together with a set of constraints on how they can be used. On the other hand, an architectural Pattern expresses a fundamental structural organization schema for software systems.

What is the difference between styles and patterns?

The word style means: “a manner of doing something” while a pattern means: “a repeated decorative design”.

What is an architectural style pattern means?

An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design pattern but have a broader scope.

What are the three architectural patterns?

Different Software Architecture Patterns :Client-Server Pattern. Event-Driven Pattern. Microkernel Pattern.


4 Answers

An Architectural Pattern is a way of solving a recurring architectural problem. MVC, for instance, solves the problem of separating the UI from the model. Sensor-Controller-Actuator, is a pattern that will help you with the problem of actuating in face of several input senses.

An Architectural Style, on the other hand, is just a name given to a recurrent architectural design. Contrary to a pattern, it doesn't exist to "solve" a problem.

Pipe&filter doesn't solve any specific problem, it's just a way of organizing your code. Client/server, Main program & subroutine and Abstract Data Types / OO, the same.

Also, a single architecture can contain several architectural styles, and each architectural style can make use of several architectural patterns.

like image 176
devoured elysium Avatar answered Oct 21 '22 02:10

devoured elysium


Frankly, I have always considered both these terms to be synonymous! And layman (relatively speaking) literature definitely treats them as such. Refer MSDN or Wikipedia

However, your question intrigued me a bit so I did a bit more digging and frankly...I couldn't find much except for a reference to A Practical Guide to Enterprise Architecture (The Coad Series), from which i quote:

An architectural style (Base et al. 1997) and an architectural pattern (Buschmann et al. 1996) are essentially synonymous.

Based on some more googling, this is what I think might be one possible way to differentiate the two:

  • An architectural style is a conceptual way of how the system will be created / will work.
  • An architectural pattern describes a solution for implementing a style at the level of subsystems or modules and their relationships.

How an architectural pattern will differ from a Design pattern i.e. Adapter, observer is basically by the level of Granularity at which they are applied (I know this isn't part of the question but it's related, I think...)

like image 42
Jagmag Avatar answered Oct 21 '22 03:10

Jagmag


Architectural Style is abstract i.e. conceptual neither technology nor library.

Category Architecture styles
Communication SOA, ROA, Message Bus
Deployment Client/Server
Domain Domain Driven Design,Monolithic, Mocroservice
Structure Component-Based, Object-Oriented, Layered, Plug-ins
Other Peer-to-peer, REST, Cloud computing, Internet of Things, Blockchain...

An Architectural Pattern is concrete i.e. implementation of an Architectural Style.

  • For example: 3-tier, N-tier, MVC, Model View ViewModel, Publish-subscribe,Sensor-controller-actuator...

A Design pattern is a general reusable solution to a commonly occurring problem in software design at architectural level.

  • For example: Factory, Singleton, Prototype.

Analogy: Temples architecture style for different religions:

enter image description here

like image 16
Premraj Avatar answered Oct 21 '22 03:10

Premraj


In very simple words:

  • An architectural style

    Is a concept, theory (and how it's implemented it is up to you). It can also apply to outside of the software world.

    In example: REST (Representational State Transfer) is an architectural style built on certain principles using the current “Web” fundamentals.

  • An architectural patterns

    Describes a solution at the software system (or module) level. In other words how it interacts each other e.g. view with model, and model with controller.

  • A design patterns

    Is a solution at the core level, it talks about classes, functions and how actually the logic flows.

like image 7
kenorb Avatar answered Oct 21 '22 02:10

kenorb