Defining Non-Functional System Qualities
Quality (or non-functional) attribute scenarios form a common language that users and software developers share, playing a significant role in requirements specification for an architecture and integration testing to see that requirements will be met. Questions of how secure, timely, reliable, and usable systems must be are now fundamental components of the processes used in all software development projects.
The idea that quality attributes influence the shape of the architecture and that the architecture is fundamental to the system emerged from SEI work in rate-monotonic analysis (RMA). From its work on RMA, the SEI gained the insight of considering system structure using an analytical framework. By analogy, SEI researchers realized that such a framework could be applied to quality attributes.
Developing systematic ways to relate the software quality attributes of a system to the system's architecture provides a sound basis for making objective decisions about design tradeoffs and enables engineers to make reasonably accurate predictions about a system's attributes that are free from bias and hidden assumptions.
SEI researchers tested and validated this insight into the primacy of quality attributes through conducting architecture evaluations. Whether they were evaluating a financial or an avionics system, conversant in the domains but not experts, they succeeded in finding risks by evaluating the systems from the point of view of different quality attributes. A lasting influence of the SEI work in the field of software architecture and software development can be seen in the pervasive attention paid to quality attributes and a general acknowledgment that requirements specifications need to include them.