What is the relationship between software architecture and Patterns design?

Asked

Viewed 256 times

4

What is the difference and similarities between software architecture and Pattern design? I did some research on Wikipedia and they looked very different:

Model-View-Controller Architecture (Model-View-Controller - MVC) is a software architecture standard (not to be confused with Pattern design)

And here it says a little contrary to the above quote:

The MVC is one Pattern design, or design pattern, which is used to organize the application in logical layers to facilitate the maintenance of a system, that is, the system is divided into several packages within the same solution for the development of even if it is better interpreted.

How these two concepts (if I may call them so) relate in our day to day?

Source: Wikipedia, Professionalti

2 answers

3

Software architecture is a very ambiguous term. Probably if you go to the most senior person on any team and ask "What is the architecture of your software?" she will answer you with another question, asking for more information than you really want to know:

  1. Want to understand what the structure of the software as a whole?
  2. Want to understand how software relates to the environment and other components?
  3. You want to understand how we internally organize the code?

Among others. Therefore, I am not surprised you read so many different definitions on the Internet.

Most "architectures" are inspired in some way by other systems that also solve similar problems. This concept is very similar to the definition of Design Pattern, which is understood as a common solution to a common problem in a given context.

However, the term Design Pattern is usually related to ready-made and punctual at code level (Abstract Factory, Builder, etc). Inside of this scope, we can from the definition that the Architecture of a Software is nothing more than a set of Patterns together.

The MVC, being a more comprehensive Pattern within the software, is usually known as standard architecture, but could be perfectly defined as a Design Pattern also in my view.

Plus, I recommend reading this article by IBM that explains very well this whole confusion with the meaning of architecture.

3


Never read Wikipedia in Portuguese, it is full of errors and do not let you fix it a lot of the time (the English version was wrong until those days too, who knows now let change). This case isn’t even serious because it actually has somewhat controversial definitions out there. The English version says it is a design standard same and is supported by Uncle Bob that some swear that is god in the area (I do not think), according to him the creator of MVC, his friend, said that is a DP.

If we go to look what is software architecture we see that it encompasses things that go beyond what MVC does, especially MVC has no external interaction, no external component needs to even know that you used MVC. I think this is the main point not to define MVC as architecture.

Architecture is becoming something like OOP, people are watching others talk about it and want to join the class, so everything becomes OOP, everything becomes architecture, but also everything turns Pattern design which is another fashion thing, and there are times when people don’t even know which name to choose because it’s not defined in a thoughtful way, it’s just what she thinks it is. The fact that people wear something (or at least say they use it) that they don’t even understand what it is says a lot...

So there’s no direct relation, it’s just definition error, like almost everything on the internet today. One of the texts linked confusion when trying to explain, I have already talked about the subject in What’s the difference between client-server and three-tiers?, layers have nothing to do with something else, layers are layers, as they are used will define what they are. One of the advantages of English is that it has different terms to define what is each type of layer we call in Portuguese, so many people get lost in the translation.

  • 1

    Wiki.PT used to say that MVC was a Pattern design and Wiki.EN was an architectural standard. They actually reversed the definitions. You’ll understand.\(ツ)

  • I looked in the history and I didn’t find this, I thought it was synonymous, which also not, then they said not to confuse. In English changed these days.

  • I could have sworn I’d say that. I messed up.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.