Questions tagged [architectural-patterns]

An architectural pattern is a general reusable solution related to the high level structure of software systems. For reusable solutions having a more specific scope (e.g. individual classes/components and their interactions), prefer the tag 'design-patterns'.

Definition

Architectural patterns are general reusable solution related to the general structure of software systems, similar to design patterns but with a broader scope:

  • Software architecture refers to the high level structures that make a system.

  • Patterns describes a common problem and the core of a solution in a way that it can be reused.

High level structures are for example applications that make a system, layers that make an application, services or microservices, groups of components. Architectural patterns is about how these structures can be related and used.

Disambiguation

The borderline between architectural pattern and design pattern is fuzzy.
For example MVC can be considered as:

  • a design pattern, because in a very small scale it could be about just three classes and how they interact
  • a combination of design patterns, as the "Gang of Four" has pointed out in their pioneering book on design patterns
  • an architectural pattern, because M, V, C can each represent a large group of classes, and their relation between the three is in fact about similar relations between the classes that compose them.

The choice of the right tag requires to take into account the purpose of the question:

  • use if it is about how to organize a system into larger parts and how these parts interact as a whole.
  • use in all other cases, and especially it if is about relations between individual classes.
  • both are not mutually exclusive.
412 questions
11
votes
3 answers

What is difference between publisher-subscriber and reactor patterns?

Publish-subscribe and Reactor patterns looking very similar to me. How they are different? In both patterns a message is getting passed to subscribers indirectly (listeners in reactor pattern). I feel observer pattern is very similar to two other…
Mohsen
  • 1,990
5
votes
1 answer

What is a first class connector?

I was reading Towards Architecture-based Self-Healing Systems, and came upon the term first-class connectors. What are they? Searching some more finds this paper Systematic Construction of Software Architecture Supported by Enhanced First-Class…
user50849
  • 296
  • 1
  • 7
1
vote
1 answer

Is it possible to use more than one software architecture pattern in a single software? If so, how would this work?

I already know of various software design patterns, and I am familiar with MVC. However, now that I am learning about other patterns (repository, client-server, pipe, and layered), I got a bit confused about the implementation of these patterns. Can…
1
vote
1 answer

Referencing a factory from the product

Let's say I have a complex class, perhaps a House so I separate out its creation logic into a factory class, HouseFactory.Build() However, these classes are for a API DLL, and we've found that many of our consumers are confused and unable to discern…
TheCatWhisperer
  • 5,261
  • 1
  • 22
  • 41
0
votes
3 answers

When scaling from a single server to elastic computing (many concurrent servers) how do timed tasks scale up?

We have been in the process of scaling up my companies infrastructure, we have graduated from single servers and moved everything off to scalable AWS Ec2 servers that auto scale, there is one little item that has not scaled well though Before, we…
alilland
  • 289
0
votes
1 answer

Is MapReduce an architectural pattern?

For a documentary reseach: Architectural Patterns (ex MapReduce), I started by reading the MapReduce: Simplified Data Processing on Large Clusters paper. the authors define MapReduce as "a programming model and an associated implementation for…
0
votes
1 answer

Establish connection between parent and child class

Assume you have two classes, a Manager who holds a set of Clients and the Client holds a backreference to the Manager. class Manager { public: void addClient(Client* client) { m_clients.push_back(client); …
hllnll
  • 199