Benefits Background Quality attributes of a large software system reside principally in the system's software architecture. In large systems, the achievement of qualities such as performance, availability, survivability, and modifiability depends more on the overall software architecture than on code-level practices such as language choice, detailed design, algorithms, data structures, and testing. It is cost effective to try to determine, before a system is built, whether it will satisfy its desired qualities. Although methods for analyzing architectures with respect to quality attributes exist, these analyses have typically been performed on specific qualities in isolation.
Performance affects modifiability.
Availability affects safety. Security affects performance. Everything affects cost. While experienced designers know that these tradeoffs exist, there is no codified method for characterizing them and, in particular, for characterizing their interactions. More importantly, these tradeoffs present the areas of highest risk in an architecture.