Experience and research have shown that the choice of appropriate architectures in the early design phases of software-intensive
systems has a determinant impact on many of the crucial qualities of such systems, e.g., maintainability, efficiency, reusability.
Early suboptimal decisions made during the architectural design stage are in general difficult and costly to change in later
stages of development. In large scale software systems qualities such as maintainability are primarily determined by architectural
decisions. During software acquisition (e.g., outsourced development), it is important to assess the extent to which the software
acquired will be suited to an organization’s needs. For example, it is frequently important to know how easily software will
accommodate likely requirements changes in the future.