The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both

Rick Kazman, Paul Clements, Len Bass "Software Architecture in Practice"