Software Architecture
An architecture is the set of significant decisions about the organization of a software system, which describe the selection of the structural elements and their interfaces by which the system is composed, and their behavior as specified in the collaborations among those elements