The architecture of any software can be thought of as a blueprint of its structure. This blueprint is an artifact generated based on a series of decisions taken by software architects and determines the overall quality of the resulting software. The first part of this paper focuses on identifying and formalizing the decision-making models in the context of designing software. Three models are investigated in detail: the rational economic model, the bounded rational model, and the recognition-primed decision model. The steps of decision making are mapped to the OODA Loop (Observe, Orient, Decide and Act) decision cycle as a generic framework for decision making.
The second part of this paper focuses on documenting cognitive biases in the context of architectural decision making. Architects, being human, are invariably subject to the influence of cognitive biases due to the cognitive limitations of the human mind, resulting in a systematic deviation from the ideal decision-making process. This leads to the design of sub-par solutions because of missing rationality behind the decisions. A two-level classification is made to modularize the extensive list of biases that influence the architectural decision-making process. As an important outcome of this research, detailed information about each bias is documented as part of a cognitive bias catalog.