Last updated on February 26th, 2023 at 05:23 pm
Understanding Architecture’s definitions help you focus on the skills you need to learn and know what is expected from you as an architect.
The following definition defines architecture in terms of the structures of a system “The software architecture of a system is the set of structures needed to reason about the system. These structures comprise software elements, relations among them, and properties of both.” – Software
Architecture in Practice, 4th Edition.
Besides representing architecture as a set of structures, the following definition focuses on the importance of the architecture characteristics (aka non-functional requirements) and the design principles “Software architecture consists of the structure of the system, combined with architecture characteristics (“-ilities”) the system must support, architecture decisions, and finally design principles.” – Fundamentals of Software Architecture book.
The following definition brings another dimension related to the importance of abstraction to manage the complexity and hide the details of the systems we are building “.. an architecture is foremost an abstraction of a system that selects certain details and suppresses others…private details of elements—details having to do solely with internal implementation—are not architectural. This abstraction is essential to taming the complexity of an architecture: We simply cannot, and do not want to, deal with all of the complexity all of the time.” – Software Architecture in Practice, 4th Edition.
The diagram below summarizes the different aspects that define how the important players perceive architecture.
One of the challenges architects face is understanding the right level of details (and therefore the level of abstraction) they need to focus on. New architects have this natural tendency to spend much more time in the design decisions and coding and, on the other hand, let slip out of their radar the overall vision and the big picture of the system they are building. And underestimate the criticality of identifying the architecture characteristics, the integration points with other systems early in the process, and focusing on the architecture decisions they have to make (more details about architecture decisions here).
Understanding what the architecture is, helps to focus on the architecture tasks to achieve the organization’s business goals.