Be Software Architecture Wise
Be Wise Apps

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 captions
Listen 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.

Download chapter (PDF)Read in the app

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

2.1 · Intermediate · 18 minFunctional and quality requirementsWhat a system must do, how well it must do it, and which choices are already fixed. Learn to spot the architecturally significant requirements that really decide a design.Read →2.2 · Intermediate · 18 minQuality modelsThe ISO/IEC 25010:2023 product quality model and its nine characteristics, what changed since 2011, other lists such as FURPS+, and how to use a model as a checklist without drowning in paperwork.Read →2.3 · Intermediate · 18 minQuality attribute scenariosThe six-part scenario that turns 'fast', 'secure' and 'easy to change' into testable requirements, with examples for six qualities, common mistakes and the path from scenario to fitness function.Read →2.4 · Intermediate · 24 minPerformance and scalabilityLatency and throughput, percentiles and tail latency, Little's law, queueing and the utilisation cliff, Amdahl's law and the Universal Scalability Law, with worked calculations and an overview of performance tactics.Read →2.5 · Intermediate · 22 minAvailability and reliabilityWhat availability, reliability and fault tolerance really mean, how to calculate nines, MTBF and MTTR, how components in series and parallel combine, and the tactics, RTO and RPO that achieve them.Read →2.6 · Intermediate · 22 minModifiability and deployabilityHow to specify and design for change: what changes, who changes it and when, tactics that limit ripple effects, testability through controllability and observability, deployability, and the DORA delivery metrics.Read →2.7 · Intermediate · 22 minSecurity, usability and moreSecurity as a measurable quality, ISO/IEC 25010's security sub-characteristics and tactics, usability and WCAG 2.2 accessibility, interoperability, cost per transaction, software carbon intensity, safety, observability and regulatory qualities.Read →2.8 · Intermediate · 22 minEliciting and prioritisingWhere quality requirements come from, how the SEI Quality Attribute Workshop and the ATAM utility tree uncover and rank them, how to handle conflicts between qualities, and how fitness functions keep them true.Read →

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 app

Further reading