Skip to content

Quality Attributes

Concept · Chapter 4

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.

  • 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.
InternalExternal
Visible toDevelopment teamEnd users
MeasurableDuring and after developmentOnly once a working version is deployed
ExamplesLines of code, cohesion, coupling, code readabilityPerformance, reliability, availability, usability

Internal quality is not directly visible to users but drives external quality — higher internal quality tends to produce higher external quality.

  • 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.

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.

Section titled “Related quality attributes in this chapter”

Performance and security are covered separately: see The importance of performance and Securing software systems.

  • Software Architect’s Handbook (Packt, 2018), Ch.4 “Quality attributes”, pp. 178-181.