Hello again. In the previous lessons, you framed the campaign-checkout initiative as a business problem, then identified the stakeholders, confirmed constraints, and recorded the unknowns that could change a design decision.
Now we turn broad expectations—“handle campaign traffic,” “do not lose orders,” “reduce support effort”—into statements that an architecture can be evaluated against. This is a core Staff-level skill: before recommending services, databases, or deployment patterns, make success concrete enough that product, operations, and engineering can challenge and test it.
Plan for about 45 minutes: two short readings, a focused video segment, and a worked set of quality-attribute scenarios for the checkout case.
From business outcome to architecture driver
A quality attribute is a measurable or testable property that describes how well a system satisfies stakeholder needs. Availability, performance, security, reliability, modifiability, and interoperability are familiar examples.
A functional requirement might say:
A customer can submit an order.
A quality-attribute requirement adds the conditions that matter:
During the campaign peak, a customer submitting an order receives an unambiguous outcome within an agreed time, without duplicate confirmed orders.
The second statement drives architecture. It forces questions about load, dependencies, data correctness, timeouts, operational visibility, and recovery. The first does not.
With Spring Boot microservices, it is easy to begin with implementation-shaped statements such as “the checkout API should be fast” or “we need retries.” At Staff level, begin one layer higher: which user outcome is threatened, under what conditions, and what evidence will show that it is protected?
[PDF] Eliciting and Specifying Quality Attribute Requirements
Read this SEI presentation by Rob Wojcik for the definition of quality attributes, the problem with vague requirements, and the scenario structure used in architecture workshops.
Start with the slide “What are Quality Attributes?” and read the definition and examples. On the later slide about problematic requirements, note why vague quality statements cannot guide a design or a test. Then read the slides under “Step 5: Scenario Brainstorming,” especially the three scenario types. Finish with “Step 8: Scenario Refinement,” where the six-part structure is introduced. Focus on the distinction between a desired behavior and a response measure that proves the behavior occurred.
A useful rule:
A quality attribute is not “performance.” It is a specific, important behavior under stated conditions, with a measurable result.
Compare these:
| Weak statement | Why it fails | Scenario direction |
|---|---|---|
| “Checkout must have high performance.” | No journey, workload, threshold, or user impact is defined. | During a confirmed peak load, order submission completes within a specified latency. |
| “The system must be highly available.” | “Highly” means different things to different stakeholders. | If a non-critical dependency fails, the customer still receives a clear order status and the core checkout flow remains available to an agreed percentage of users. |
| “Avoid duplicate orders.” | Important, but it does not identify the triggering situation or evidence. | When a customer retries after a timeout, the system records at most one confirmed order and one payment attempt for the same idempotency key. |
| “Support should be able to investigate failures.” | It does not define what “able” or “investigate” means. | After a payment timeout, a support agent can find the order state and correlated payment attempt within three minutes without engineering intervention. |
Notice that a quality scenario is not an architecture decision. “Use Kafka,” “add Redis,” “deploy across regions,” and “install a circuit breaker” may later be options. They are not requirements. A scenario describes the behavior a suitable option must support.
The six-part scenario grammar
The SEI scenario model gives you a compact way to turn a goal into an evaluable statement:
- Source — who or what causes the event?
- Stimulus — what happens?
- Environment — under what conditions does it happen?
- Artifact — which part of the system is affected?
- Response — how should the system behave?
- Response measure — how will success be measured?

A compact sentence template is:
In [environment], when [source] produces [stimulus] affecting [artifact], the system [response], measured by [response measure].
The response measure is where vague ambition becomes operational. It should typically contain a threshold, a time window, a population or workload, and a method of observation.
For example:
During confirmed campaign-peak traffic, when authenticated customers submit checkout requests to the checkout journey, the system returns an unambiguous accepted, declined, or pending result. The response time is no more than two seconds over a 30-minute peak-load test.
The exact target—two seconds here—is not something an engineer should invent alone. It is a provisional value until validated against customer tolerance, revenue impact, expected workload, technical evidence, and cost.
The environment prevents misleading requirements
The same response may be acceptable in one environment and unacceptable in another:
- Normal business load: an analytics report may finish in 30 seconds.
- Campaign peak: checkout must remain responsive under high concurrency.
- A dependency outage: a payment result may be temporarily pending, but must not be falsely reported as successful.
- A production deployment: user-facing checkout requests may need continuity while a version changes.
- A planned growth change: the system may need to add capacity without a long manual reconfiguration effort.
This is why “the checkout API responds in two seconds” is incomplete. It leaves open the most important question: two seconds under which conditions?
Start with the user objective, not the service name
Business goals usually refer to outcomes: capture revenue, retain users, reduce risk, meet a contractual commitment, or enable a new market. They rarely say which internal service deserves the strictest requirement.
The more reliable path is:
- identify the user objective;
- identify the critical step within that objective;
- identify how failure of that step harms the business goal;
- write quality scenarios around that step.
For campaign checkout:
| Level | Example |
|---|---|
| Business goal | Capture high-value campaign demand without increased support burden or payment errors. |
| User objective | Buy a selected item. |
| Critical step | Submit order and receive a trustworthy outcome. |
| Failure impact | Customer abandons purchase, retries, contacts support, or is charged incorrectly. |
| Quality attributes likely involved | Performance, availability, reliability, data integrity, recoverability, operability. |
Product SRE, improving reliability of services
This Google SRE article connects reliability work to what users are actually trying to accomplish. Read it to keep the architecture focus on critical journeys rather than individual service dashboards.
In the section “2. Model the Product,” read the explanation of user objectives and steps. Then move to “Product SLOs” and read the connection between user steps and measurable objectives. For this lesson, use the idea to choose the right journey and step. Later, when you study reliability in depth, service-level objectives will provide an ongoing production measurement mechanism for selected availability and latency scenarios.
A checkout system may contain an Order Service, Inventory Service, Payment Adapter, notification publisher, and database. But “Payment Adapter availability” is not automatically the most important measure. If a payment-provider outage can be handled by recording a clear pending state and reconciling safely, the customer objective may still be partially protected. Conversely, a low-error Payment Adapter can coexist with a failing customer journey if the order-status flow is ambiguous.
This distinction prevents a common architecture mistake: optimizing component metrics while users still cannot complete the job that matters.
Three useful kinds of scenarios
Scenario brainstorming is more productive when you deliberately consider three forms.
1. Use-case scenarios: normal, important behavior
These describe the system while it is operating as expected, often under ordinary or anticipated peak load.
Example direction: Customers submit orders at campaign peak and receive a result within an agreed latency.
These often expose performance, throughput, usability, interoperability, and security requirements.
2. Exploratory scenarios: adverse or exceptional conditions
These ask what happens when something goes wrong: a dependency is slow, a database replica is unavailable, a request is duplicated, or capacity is exhausted.
Example direction: The payment provider times out, but checkout does not create duplicate charges or falsely claim that an order is confirmed.
These reveal reliability, availability, fault tolerance, recoverability, security, and operability requirements.
3. Growth scenarios: anticipated change
These describe how the system should accommodate a foreseeable change in scale, behavior, team structure, or integration.
Example direction: A new sales channel needs to submit orders through the existing public contract with a bounded implementation effort and no breaking change for current clients.
These often reveal modifiability, scalability, deployability, and interoperability requirements.
A scenario is worthwhile only if it protects a meaningful business outcome or reduces a material risk. Do not create a long catalog of generic “ilities.” A small, well-reasoned set around the critical journey is more useful than 40 unprioritized statements.
Worked scenarios for campaign checkout
The figures below are illustrative assumptions, not discovered facts. In a real initiative, the product lead, campaign lead, support lead, payments owner, and operations team would validate or replace them.
Scenario 1: Peak-load performance
| Element | Scenario |
|---|---|
| Business goal | Capture campaign demand rather than losing customers to slow checkout. |
| Quality attribute | Performance and throughput |
| Source | Campaign customers |
| Stimulus | Customers submit checkout requests at the confirmed forecast peak rate. |
| Environment | Thirty-minute campaign-peak period with the expected production traffic mix. |
| Artifact | The customer checkout and order-submission journey. |
| Response | The system returns a clear outcome for each request without queueing customers indefinitely. |
| Response measure | At the validated peak rate, checkout response time is at most two seconds and is at most five seconds over the 30-minute test window. |
Two details matter:
- “Peak rate” must become an actual workload estimate, not an adjective. The traffic forecast from marketing and historical data are evidence sources.
- Latency alone is insufficient. In a later scenario, you may need a separate measure for error rate, accepted request rate, or capacity headroom.
Scenario 2: Payment dependency failure and correctness
| Element | Scenario |
|---|---|
| Business goal | Preserve payment correctness and avoid uncertain order outcomes that create support work and customer distrust. |
| Quality attribute | Reliability, recoverability, and data integrity |
| Source | Payment provider |
| Stimulus | The provider returns errors or does not respond for three minutes. |
| Environment | Campaign peak while customers continue submitting orders. |
| Artifact | Payment and order-confirmation workflow. |
| Response | The system records a durable, unambiguous state—confirmed, declined, or pending—and safely reconciles pending work when the provider recovers. |
| Response measure | No duplicate confirmed orders or duplicate payment attempts occur for the same idempotency key; 100% of affected requests have a durable customer-visible state within five seconds; 99% of pending cases are reconciled within 15 minutes after provider recovery. |
This scenario does not prescribe asynchronous messaging, a transactional outbox, retries, or a particular database. It sets the bar against which those later options will be judged.
It also exposes discovery questions from the previous lesson:
- Does the payment provider support idempotency keys?
- What does “payment accepted but response lost” look like in its contract?
- Can the provider support reconciliation queries?
- Which customer-visible states are acceptable to product and support?
Scenario 3: Operational supportability
| Element | Scenario |
|---|---|
| Business goal | Reduce manual investigation and avoid unnecessary engineering escalation. |
| Quality attribute | Operability and diagnosability |
| Source | Customer-support agent |
| Stimulus | A customer reports that checkout timed out and asks for the order status. |
| Environment | Normal operation or shortly after a payment-provider incident. |
| Artifact | Order-status capability and operational telemetry across checkout and payments. |
| Response | The agent can identify the customer-visible state, order identifier, payment attempt, and next action. |
| Response measure | For 95% of such cases, a trained support agent reaches a definitive status within three minutes without direct database access or engineering escalation. |
This scenario changes the architecture conversation. Logging “an exception occurred” is not enough; the system needs information that lets people answer a customer’s question safely. The eventual mechanism might involve correlation identifiers, structured logs, an internal status view, or workflow audit records—but those are design options, not the requirement itself.
Make measures defensible, not arbitrary
A target is credible when you can explain where it came from. Common sources include:
- customer research or observed abandonment behavior;
- existing latency, error, and support-ticket data;
- a contractual obligation or compliance rule;
- campaign traffic forecasts and historical peaks;
- financial impact of downtime or delay;
- capability limits of an external provider;
- cost and operational constraints.
Non-Functional Requirements - FULL guide with REAL Examples
Watch this focused segment from “Non-Functional Requirements - FULL guide with REAL Examples” by Win The cloud. It illustrates that availability and resilience targets are negotiated with stakeholders and involve cost trade-offs, rather than being chosen by architecture preference.
Watch reliability trade-offs. Focus on the distinction between saying a system should run continuously and agreeing a realistic availability, recovery, and fault-tolerance target for specific capabilities. Treat the technology examples as possible later design responses; the central lesson here is the stakeholder negotiation behind the measurable requirement.
Be especially careful with the phrase “99.99% availability.” It may be justified for a revenue-critical order-submission step, but excessive for an internal reporting page. A stricter target has consequences: more infrastructure, more testing, more operational work, and sometimes more delivery time. The quality scenario makes that trade-off visible early.
Also separate a constraint from a quality scenario:
- “The campaign launches on 1 November” is a delivery constraint.
- “Checkout must remain usable during a deployment before campaign launch” is a deployability or availability scenario.
- “Do not store cardholder data in the Order Service” is a security/compliance constraint.
- “A customer cannot access another customer’s order status” is a security scenario that can be tested.
Both constraints and scenarios shape architecture, but they do different jobs.
A practical drafting routine
When creating your initial quality-attribute set, use this sequence:
- Copy the business outcome from your problem statement.
- Name the critical user objective and step.
- Describe a realistic normal, failure, or change stimulus.
- Specify the response without naming a technology.
- Add a measurable threshold, population, and time window.
- Label each number as confirmed, assumed, or unknown.
- Record the stakeholder who must validate it.
Before treating a scenario as ready for architecture evaluation, check that it answers these questions:
- Can a tester, load test, production metric, operational drill, or code review determine whether it was met?
- Is the environment explicit enough to prevent a misleading “pass”?
- Is the affected artifact limited to a meaningful journey or responsibility?
- Does the response protect the stated user or business outcome?
- Have solution choices been kept out of the requirement?
- Are uncertain measures visibly linked to a discovery action?
For a short workplace practice session, draft three scenarios around one real critical journey: one normal use-case scenario, one dependency-failure scenario, and one growth or operational-change scenario. Keep each to the six fields above, then mark every threshold as confirmed, assumed, or unknown. This produces useful material for both architecture reviews and Staff-level system-design interviews.
Key takeaways
- Quality attributes describe measurable or testable properties of a system: how well it serves stakeholder needs.
- A quality-attribute scenario has six parts: source, stimulus, environment, artifact, response, and response measure.
- Start from business outcomes and critical user steps, rather than from service names or preferred technologies.
- Use normal, adverse, and growth scenarios to expose different architecture drivers.
- Keep requirements separate from solutions. “No duplicate payment attempts after a timeout” is a requirement; the mechanism is a later design decision.
- Measures should be evidence-based and clearly labeled when they remain assumptions.
Next, you will prioritize competing architecture drivers using an explicit scoring method. That step matters because performance, correctness, operability, cost, delivery date, and security will rarely all demand the same design choice.
Can't find a good explanation? Sign up and we'll make it for you
Sign up