13.4. What is Software Architecture?
I touched on the logical and deployment architectures, so now is a good time to introduce a definition for software architecture . Here's one:
An architecture is the set of significant decisions about the organization of a software system, the selection of the structural elements and their interfaces by which the system is composed, together with their behavior as specified in the collaborations among those elements, the composition of these structural and behavioral elements into progressively larger subsystems, and the architectural style that guides this organizationthese elements and their interfaces, their collaborations, and their composition. [BRJ99]
Regardless of the definition (and there are many) the common theme in all software architecture definitions is that it has to do with the large scalethe Big Ideas in the motivations, constraints, organization, patterns, responsibilities, and connections of a system (or a system of systems).