Leer en español · Lire en français · Auf Deutsch lesen
Chapter 2 of 12 · Intermediate
Quality Attributes and Architecturally Significant Requirements
Architecture exists to deliver qualities: speed under load, staying up when parts fail, being safe to change, keeping data secret. This chapter shows how to turn vague wishes such as 'fast', 'reliable' and 'secure' into precise, testable requirements that can drive design decisions. It covers the difference between functional requirements, quality attributes and constraints, the ISO/IEC 25010 quality model, quality attribute scenarios, the arithmetic of performance and availability, designing for change, security, usability and cost as qualities, and how to elicit, prioritise and trade them off. It suits developers moving towards architecture and anyone who writes or reviews requirements.
Video introduction to Chapter 2
6 min · narrated, with captionsListen only (audio)
Read the transcript
Welcome to Chapter 2: Quality Attributes and Architecturally Significant Requirements. Architecture exists to deliver qualities: speed under load, staying up when parts fail, being safe to change, keeping data secret. This chapter shows how to turn vague wishes such as fast, reliable and secure into precise, testable requirements that can drive design decisions.
Ask any group of stakeholders what a system must do, and you will get a list of features: search for a flight, pay for a basket, book an appointment. Ask how well it must do them, and the answers are vaguer: it should be fast, it should not go down, it should be secure. Those second answers are quality attributes, and they are what architecture is mostly about. A requirement that has a measurable effect on the structure of a system is called an architecturally significant requirement. Most of them turn out to be quality attributes or constraints, rather than functions.
This diagram from Section two point one makes the point. Two ticketing systems have identical features: browse events, hold seats and pay. One sells tickets for a three hundred seat village hall. Its busiest moment brings a few requests a second, so one web application with one database is the right answer: cheap, simple and easy to change. The other sells a sixty thousand seat stadium tour. It must absorb a burst thousands of times larger, and never sell the same seat twice. So it needs a page cache, a virtual waiting room, a carefully designed seat inventory, partitioned storage and a payment queue. Same functions, completely different architectures. The difference comes entirely from quality attributes and constraints.
This chapter suits developers who are moving towards architecture. It also suits anyone who writes or reviews requirements. You will need some comfort with simple arithmetic: percentages, multiplication and division. It builds on Chapter 1's idea that architecture exists to satisfy stakeholders' concerns through trade-offs. This chapter makes those concerns precise. And it leads into Chapter 3, which introduces the design principles architects use to achieve these qualities.
There are eight sections. Section two point one separates functional requirements, quality attributes and constraints, and works through a concert-ticketing system on the day a big tour goes on sale. Section two point two introduces the international standard for product quality, with its nine characteristics, and shows how to use it as a memory aid rather than a form to fill in. Section two point three teaches the single most useful technique in the chapter: the six-part quality attribute scenario, which turns must be fast into a statement you can test.
Here is its shape. A scenario tells a short story, from left to right. A source, someone or something, produces a stimulus: an event the system must respond to, such as a burst of requests or a server crash. The stimulus reaches an artifact, the whole system or one part of it, within an environment: normal operation, a peak, a degraded state, or an attack. The artifact responds, and the response is judged by a response measure: the number. The stimulus and the response measure are the two parts people most often leave out, and the two that matter most. The example underneath puts it together: five hundred shoppers a second hit checkout on Black Friday, and orders are confirmed within one and a half seconds at the ninety-ninth percentile, with no lost orders.
Sections two point four to two point seven visit the qualities that most often shape architectures. Section two point four covers performance and scalability, with real arithmetic: latency and throughput, percentiles, queueing and the limits of adding more processors. Section two point five does the same for availability and reliability: the nines, the time between failures and the time to repair, and how components combine in series and in parallel. Section two point six covers the qualities of change: modifiability, testability and deployability. Section two point seven gathers security, usability and accessibility, interoperability, cost, energy efficiency, safety and regulatory qualities.
This is the chapter where the course starts to calculate. You will see why a request to a server that is ninety per cent busy takes, on average, ten times its service time. None of the mathematics is harder than school arithmetic. Numbers also expose false comfort. An average response time of a hundred and twenty milliseconds can hide the fact that one request in fifty takes more than a second. That is why professionals specify percentiles. Section two point eight closes the loop. No system can be fast, available, secure, cheap and easy to change all at once. It shows how a workshop and a utility tree turn a crowd of opinions into a ranked list, and which qualities conflict.
If you remember one thing from this chapter, make it this: a quality is not a requirement until it has a stimulus, a context and a measure. The checkout must be fast is a wish. When two thousand customers a minute submit orders during the Friday evening peak, ninety-nine per cent of checkouts complete within one and a half seconds: that is a requirement. It can be designed for, tested, monitored and argued about with evidence.
Sections two point one to two point three are best read in order, because the rest of the chapter uses their vocabulary. After that, you can dip into the qualities you need. The whole chapter takes about three hours to read. When a section calculates, work through the numbers yourself. That is how they become tools you can use in a real conversation. Each section ends with a few self-check questions. Answer them in your head before you look. When you are ready, take the optional chapter test: twenty multiple-choice questions and two written answers, in about forty five minutes. The pass mark is eighty per cent.
That is the map of Chapter 2. Start with Section two point one, where we separate functional requirements, quality attributes and constraints, and meet a ticketing system on its busiest day. See you there.
At a glance
You will learn to
- Distinguish functional requirements, quality attributes and constraints, and recognise an architecturally significant requirement.
- Use the ISO/IEC 25010:2023 product quality model as a checklist without letting it turn into paperwork.
- Write six-part quality attribute scenarios with measurable response measures, and turn vague statements into testable ones.
- Calculate with percentiles, Little's law, simple queueing formulas and Amdahl's law to reason about performance and scalability.
- Calculate availability from the nines, from MTBF and MTTR, and for components in series and in parallel.
- Explain how modifiability, testability, deployability, security, usability, cost and sustainability are specified and achieved.
- Elicit and prioritise quality requirements with a utility tree, and explain the trade-offs between competing qualities.
Before you start
Chapter 1, especially the sections on stakeholders and concerns and on decisions and trade-offs. Some comfort with simple arithmetic (percentages, multiplication and division).
Time
About 3 hours to read; 45 minutes for the test.
Key terms
quality attribute · constraint · architecturally significant requirement · ISO/IEC 25010 · quality attribute scenario · response measure · latency and throughput · percentile · Little's law · availability · MTTR · tactic · utility tree · fitness function
Why qualities, not features, decide the architecture
Ask any group of stakeholders what a system must do and you will get a list of features: search for a flight, pay for a basket, book an appointment. Ask how well it must do them and the answers are usually vaguer: it should be fast, it should not go down, it should be secure, it should be easy to change. Those second answers are quality attributes, and they are what architecture is mostly about. The same list of features can be delivered by a single program on one server or by forty services spread across three continents. What separates those designs is not what the system does but how many people it must serve at once, how much downtime the business can tolerate, how often the code will change and how sensitive the data is.
Chapter 1 described architecture as the set of significant decisions that satisfy stakeholders' concerns through trade-offs. This chapter makes those concerns precise. A requirement that has a measurable effect on the structure of a system is an architecturally significant requirement, and most of them turn out to be quality attributes or constraints rather than functions. Finding them early, and stating them so that they can be tested, is one of the most valuable things an architect does.
How the chapter fits together
Section 2.1 separates functional requirements, quality attributes and constraints, explains why many architects avoid the term 'non-functional requirements', and works through a concert-ticketing system on the day a big tour goes on sale. Section 2.2 introduces the ISO/IEC 25010:2023 product quality model, with its nine characteristics, and shows how to use it as a memory aid rather than a form to fill in. Section 2.3 teaches the single most useful technique in the chapter: the six-part quality attribute scenario, which turns 'must be fast' into a statement you can test.
Sections 2.4 to 2.7 then visit the qualities that most often shape architectures. Section 2.4 covers performance and scalability with real arithmetic: latency and throughput, percentiles, tail latency, Little's law, queueing and Amdahl's law. Section 2.5 does the same for availability and reliability: the nines, mean time between failures and mean time to repair, and the availability of components in series and in parallel. Section 2.6 covers the qualities of change (modifiability, testability and deployability), and Section 2.7 gathers security, usability and accessibility, interoperability, cost, energy efficiency, safety and regulatory qualities.
Section 2.8 closes the loop. It shows where quality requirements come from, how a quality attribute workshop and a utility tree turn a crowd of opinions into a ranked list, which qualities conflict with which, and how fitness functions keep checking the important qualities automatically after the architecture is built.
From vague wishes to numbers
This is the chapter where the course starts to calculate. You will work out how many requests are in flight at once from an arrival rate and a response time, why a request to a server that is 90% busy takes, on average, ten times its service time, why spreading a job that is 10% serial across sixteen processors gives only a 6.4-fold speed-up, and how many minutes of downtime a year a 'four nines' promise actually allows. None of the mathematics is harder than school arithmetic, but it changes conversations: 'the database is slow' becomes 'the connection pool is sized for 100 concurrent requests and Little's law says we need 400 during the evening peak'.
Numbers also expose false comfort. An average response time of 120 milliseconds can hide the fact that one request in fifty takes more than a second, which is why professionals specify the 95th or 99th percentile. A requirement with no response measure cannot be tested, and a requirement that cannot be tested will be quietly traded away when a deadline approaches.
Trade-offs are the job
No system can be maximally fast, available, secure, cheap and easy to change at once. Caching improves speed but complicates consistency; encryption and extra checks protect data but add latency; redundancy raises availability and cost together; flexible plug-in designs make change easier and performance harder to predict. The chapter therefore treats qualities as competing goals that must be ranked in context, not as boxes to tick. The architect's skill lies in knowing which two or three qualities matter most for this system, stating them precisely, and choosing designs whose weaknesses fall where the business can afford them.
The design techniques that achieve each quality, called tactics, are introduced here only in outline. Later chapters build them out: design principles in Chapter 3, architectural styles in Chapters 5 and 6, data, security, resilience and cloud practices in Chapters 7 to 10, and evaluation methods such as the ATAM and fitness functions in Chapter 11.
The one idea to take away
If you remember one thing from this chapter, make it this: a quality is not a requirement until it has a stimulus, a context and a measure. 'The checkout must be fast' is a wish. 'When 2,000 customers a minute submit orders during the Friday evening peak, 99% of checkouts complete within 1.5 seconds' is a requirement. It can be designed for, tested, monitored and argued about with evidence, and it tells everyone, from the product owner to the operations team, what success looks like.
The 8 sections
Chapter test
Test your understanding of Chapter 2
Optional: 20 multiple-choice questions and 2 short written answers, drawn afresh from a bank of 72 questions. Pass mark 80%. Passing every chapter test, then the final assessment, earns the Be Wise Certificate of Completion.
Take the Chapter 2 test in the appFurther reading
- Software Architecture in Practice (4th edition), Len Bass, Paul Clements and Rick Kazman (2021), Addison-Wesley. The source of quality attribute scenarios and tactics, with a chapter on each major quality and one on architecturally significant requirements.
- ISO/IEC 25010:2023 Systems and software engineering: Product quality model, ISO/IEC JTC 1/SC 7 (2023), International Organization for Standardization. The standard product quality model with nine characteristics; its companion ISO/IEC 25019:2023 covers quality in use.
- Characterizing Architecturally Significant Requirements, Lianping Chen, Muhammad Ali Babar and Bashar Nuseibeh (2013), IEEE Software, volume 30, issue 2. An empirical study of how practitioners recognise the requirements that shape an architecture.
- The Tail at Scale, Jeffrey Dean and Luiz André Barroso (2013), Communications of the ACM, volume 56, issue 2. A short, readable paper on why rare slow responses dominate large fan-out systems and the techniques Google uses to tame them.
- Designing Data-Intensive Applications (2nd edition), Martin Kleppmann and Chris Riccomini (2026), O'Reilly Media. Clear treatment of load, percentiles, reliability and scalability in data systems, with many real-world examples.
- Fundamentals of Software Architecture (2nd edition), Mark Richards and Neal Ford (2025), O'Reilly Media. A practitioner's view of identifying and prioritising architecture characteristics and protecting them with fitness functions.
- Site Reliability Engineering: How Google Runs Production Systems, Betsy Beyer, Chris Jones, Jennifer Petoff and Niall Richard Murphy (eds) (2016), O'Reilly Media. Free to read online; the chapters on service level objectives and monitoring show how qualities are measured in production.
- Systems Performance: Enterprise and the Cloud (2nd edition), Brendan Gregg (2020), Addison-Wesley. The standard reference on performance analysis, from queueing and utilisation to the USE method.