Architecture: Informal Definitions


In 2003, Ralph Johnson issued several options for defining architecture. All of them are still in use, so it makes sense to be aware of them.

First, let’s introduce Ralph. He was the supervisor of the student who coined the term “refactoring”. Ralph is also part of a gang called “The Gang of Four”. The gang wrote the famous book “Design Patterns” in 1994. It turns out that it was Ralph who threw the classic questions about singletons and abstract factories into developer interviews.

So, Ralph is an authority on software development, so let’s look at his definition #1:

Architecture is a shared understanding of the system design.
That is, architecture is first and foremost a social construct. This is a point of view that people interested in the project have agreed upon. To be specific, they agreed mainly on how the system is divided into components, as well as how these components interact.

Definition #2:

Architecture is the set of design decisions that must be made early in a project.
This sounds logical if you design software systems the same way you design airplanes. If you have chosen the engine model, then that’s it, there is no turning back. But you understand the adequate wingspan, carrying capacity, as well as the number of window seats. Therefore, the choice of engine model is an architectural decision (if you start designing an aircraft with this decision).

Definition #3:

Architecture is about the important stuff. Whatever that is.

This is a development of definition No. 2 and it is extremely popular. The point is that when you design a system, you first need to understand what is important to that system. Then you need to first of all spend energy on maintaining the important things in good condition. If there is a working meeting about some important decision on the project, this is 100% an architectural meeting.

It is not an easy task to separate the important from the unimportant. Let’s say that every person is the architect of his life. Judging by statistics, few people can identify what is important even in their personal lives, and then keep this important thing in good condition. It is understandable, after all, the planning horizon is 50 years.

With work projects, everything is a little simpler. In IT, it is believed that if a project could quickly absorb changes for more than 5 years, the architect was good.

For the ‘‘airplane’’ system, reliable fastening is important. For the ‘‘city’’ system, minimal transport overhead is important.

The three definitions of architecture in this article are far from perfect. But they boil down to the fact that the project has a list of important collective decisions. If you replay the list of these solutions again, you will get a very similar system because the architecture is the same. An architectural decision in written form is called ADR (architectural decision record). In 2024, the situation with ADR management is a little worse than the situation with requirements management, but many people are trying to create some order, which is good news.

(In the next article we will look at modern ideas about architecture…)