7.1 Quality Attributes And Tradeoffs
Software quality is not only "no bugs." Quality attributes describe how a system behaves in the real world: reliability, maintainability, usability, security, performance, scalability, availability, recoverability, and more.
The hard part is that these attributes compete. Engineering work is not declaring every attribute highest priority. It is making tradeoffs visible.
Quality Attributes Need Specifics
"The system should be stable" is not actionable. Better examples:
- Payment initiation has 99.95% monthly success rate.
- 95% of search requests return the first 20 results within 300ms.
- Critical permission changes leave an auditable log.
- During one service outage, the user profile read-only page remains available.
A good quality target includes scope, metric, time window, and verification method. Otherwise the team is sharing a wish, not an engineering target.
Tradeoffs Must Be Visible
Quality attributes often pull against each other:
- Stronger security checks may add user friction.
- Higher performance may add cache consistency risk.
- Higher scalability may add deployment and observability complexity.
- Better maintainability may slow feature delivery in the short term.
If these tradeoffs are not recorded, future maintainers only see "why is this so complicated" and not the risk the design was protecting.
Context Decides Priority
The same "login system" will not have the same quality priorities in a bank, a campaign mini-game, and an internal school tool. Bank login emphasizes security, audit, and reliability. A mini-game may emphasize experience and peak performance. An internal tool may emphasize maintainability and permission clarity.
Mature teams turn quality attributes into design inputs:
- Which attributes must meet a target?
- Which attributes can be temporarily compromised?
- Which metric would show that the tradeoff was wrong?
- When should the decision be revisited?
Quality is not decoration. It is the goal that architecture, testing, delivery, and operations serve together.