In software engineering and software architecture design, architectural decisions (ADs) are design decisions that address architecturally significant requirements; they are perceived as hard to make and/or costly to change.
Architectural Decisions (ADs) influence and impact the non-functional characteristics of a system. Each AD describes a concrete, architecturally significant design issue (a.k.a. design problem, decision required) for which several potential solutions (a.k.a. options, alternatives) exist. An AD captures the result of a conscious, often collaborative option selection process and provides design rationale for the decision making outcome, e.g., by referencing one or more of the quality attributes addressed by the AD and answering "why" questions about the design and option selection. Architectural decisions concern a software system as a whole, or one or more of the core components of such a system. Types of ADs are the selection of architectural tactics and patterns, of integration technologies, and of middleware, as well as related implementation strategies and assets (both commercial products and open source projects).
Software architecture design is a wicked problem, therefore ADs are difficult to get right and often, no single optimal solution for any given set of architecture design problems exists. Architectural decision making is a core responsibility of software architects; additional motivation for/of the importance of ADs as a first-class concept in software architecture can be found online.
Rationale was mentioned in an early definition of software architecture by Perry/Woolf, but not researched much until 2004, when a workshop on architectural decisions and Architectural Knowledge Management (AKM) was held in Groningen, NL. Early publications can be traced back to this workhop,. From 2006 on, the AKM/AD research community gained momentum and a number of papers was published at major software architecture conferences such as ECSA, QoSA and WICSA. A Springer book summarized the state of the art as of 2009, and a systematic mapping study from 2013 compiles and analyzes more and more recent research results.
In practice, the importance of making the right decisions has always been recognized, for instance in software development processes such as OpenUP; many templates and practices for decision documentation exist. Seven of these templates are compared in. The most recent standard for architecture descriptions, ISO/IEC/IEEE 42010:2011 has a dedicated rationale entity, and gives detailed recommendations which ADs to capture and which properties of an AD to record in the decision log.