Quality Attributes
Concept · Chapter 4
Quality Attributes
Section titled “Quality Attributes”Quality attributes are the measurable, testable non-functional properties of a software system. Together they describe the system’s overall quality and its fitness for purpose. Because they strongly influence architectural decisions, they are a primary concern for the software architect.
Why architects care
Section titled “Why architects care”- They affect design, maintainability, runtime behavior, and user experience.
- Attributes interact: raising one can lower another. Classic conflicts:
- Ultra-fast performance vs. extreme scalability.
- High security vs. high usability.
- These trade-offs must be analyzed and balanced. Each attribute’s priority drives the design; there is rarely a single “best” answer, only an acceptable balance.
Internal vs. external attributes
Section titled “Internal vs. external attributes”| Internal | External | |
|---|---|---|
| Visible to | Development team | End users |
| Measurable | During and after development | Only once a working version is deployed |
| Examples | Lines of code, cohesion, coupling, code readability | Performance, reliability, availability, usability |
Internal quality is not directly visible to users but drives external quality — higher internal quality tends to produce higher external quality.
Quality attributes across the SDLC
Section titled “Quality attributes across the SDLC”- Requirements engineering — capture them completely and correctly; they must be measurable and testable (some are hard to measure). See Requirements engineering.
- Design — the architecture must be able to meet the quality objectives.
- Testing — verify each attribute against its requirement.
Testing quality attributes
Section titled “Testing quality attributes”No single technique covers all attributes; combine several:
- Manual testing for usability.
- Benchmarks and performance tools for performance.
- Code reviews and code metrics for maintainability.
- Automated unit tests for correct behavior.
Each technique has strengths and weaknesses, and projects are bounded by cost and time — so balance test depth against available resources. Automate as much as possible (run on demand or in a continuous delivery pipeline) to maximize coverage and keep confidence high as the code changes.
Related quality attributes in this chapter
Section titled “Related quality attributes in this chapter”Performance and security are covered separately: see The importance of performance and Securing software systems.
Citations
Section titled “Citations”- Software Architect’s Handbook (Packt, 2018), Ch.4 “Quality attributes”, pp. 178-181.