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

  • AADL (SAE standard),
  • Wright (developed by Carnegie Mellon),
  • Acme (developed by Carnegie Mellon),
  • xADL (developed by UCI),
  • Darwin (developed by Imperial College London),
  • DAOP-ADL (developed by University of Málaga),
  • and ByADL (University of L'Aquila, Italy).
  • Common elements of an ADL