Software Architecture has many different definitions, every expert of software industry has their own definitions 🙂
When you search for it your first result is most probably the Wikipedia which defines as below,
The word software architecture intuitively denotes the high level structures of a software system. It can be defined as the set of structures needed to reason about the software system, which comprise the software elements, the relations between them, and the properties of both elements and relations.
Description: It talks about the high level plan / structure of a system / application, and architecture is the set of structures needed to build the software / application. It also says the relationships and properties of elements of the system is also important to consider.
An architecture is what is fundamental to a system — not necessarily everything about a system, but the essentials.
The dis-junction, concepts or properties, was chosen to support two different philosophies without prejudice. These philosophies are:
Architecture as Conception: an architecture is a concept of a system in one’s mind;
Architecture as Perception: an architecture is a perception of the properties of a system.
Under either philosophy, an architecture is abstract — not an artifact.
Description: IEEE completely took another dimension of Architecture, It says architecture is very abstract but it shows you two different perspectives of architecture. Finally it says Architecture is not an artifact, but still it has to be documented well. I will discuss how we can document the architecture in a different blog.
Software application architecture is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability. It involves a series of decisions based on a wide range of factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application.
Description: If you re look at the above definition from Microsoft, it focuses on the process, and it says a series of decisions taken over time. So, it is more mature than the previous one as it talks about the quality attributes as well and their impact.If I interpret this definition, Architecture is not a one time thing, it is a continuous process of decisions which may impact your performance, security etc.
My Favorite definition of Architecture –
According to Ralph Johnson and Martin Fowler the Architecture Definition ( Who needs Architect ) – “In most successful software projects, the expert developers working on that project have a shared understanding of the system design. This shared understanding is called ‘architecture.’ This understanding includes how the system is divided into components and how the components interacted through interfaces. These components are usually composed of smaller components, but the architecture only includes the components and interfaces that are understood by all the developers. ”
Many other definitions of Software Architecture given by many industry experts consolidated by SEI ( Carnegie Mellon University).