The following definitions illustrate well what is meant by software architecture:
“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 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
From the definitions below, we can find some commonalities that can be summarized by saying that
– Is comprised of structures of components and relations between these components
– Needs to support the architecture characteristics (non-functional requirements).
And, I continue with another definition to complement the previous ones:
“.. 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
This definition emphasizes the importance of abstraction as a powerful way to manage the complexity and hide the details.
One of the challenges faced by architects is to understand 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 early in the process the architecture characteristics, the integrations points with other systems, and focusing on the architecture decisions they need 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.