definition of software architecture
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.[1] The term also refers to documentation of a system's "software architecture." Documenting software architecture facilitates communication between stakeholders, documents early decisions about high-level design, and allows reuse of design components and patterns between projects.
Architecture description languages
Architecture description languages (ADLs)
are used to describe a software architecture. Several different ADLs have been developed by different organizations, including