Quality attributes
To make sure that we have designed the correct Software Architecture, we need to validate our choices against measurable properties: «it works» is not enough.
So we need to define some quality attributes.
Quality attributes are measurable and testable properties of a system and represent the non-functional requirements.
Some quality attributes?
- security
- performance
- maintainability
- fault-tolerance
- reliability
(image from http://www.jot.fm/issues/issue_2003_03/article2.pdf)
Defining which attributes must be taken into consideration and which ones can be ignored impacts the structure of the architecture. The more detailed info we have at the beginning, the lesser the changes are needed in the future (so, less waste of money).
So, we must define which attributes are needed, validate them with the other stakeholders, and make them easy to grasp directly from our architecture and the related documentation.