Create your own
Lesson illustration

Crafting Measurable Quality-Attribute Scenarios from Ambiguous Cybersecurity Briefs

Good to continue from the functional requirements work. You now have a prioritized description of what the behavioral-detection pilot must do: connect an identity source, ingest tenant-scoped events, create impossible-travel alerts, and let analysts investigate and close them.

That is necessary, but not yet sufficient to guide architecture. “Create an alert” leaves unanswered questions that will determine whether the product is credible: How quickly? Under what load? What happens when a dependency fails? Can one tenant ever retrieve another tenant’s evidence? How costly is it to add the next telemetry source?

This lesson turns those questions into measurable quality-attribute scenarios. The aim is not to pick Kafka, PostgreSQL topology, cloud services, or Rust frameworks. It is to produce a small, prioritized set of architecture-driving requirements that later design decisions must satisfy.


Quality attributes are operational requirements, not optional polish

Functional requirements describe observable capability:

The system shall create an alert when a tenant’s sign-in events satisfy the approved impossible-travel rule.

A quality-attribute scenario specifies how that capability must behave under a meaningful condition:

When valid sign-in events arrive at the agreed pilot peak rate during normal operation, the system shall make qualifying impossible-travel alerts queryable within a defined end-to-end latency target.

The distinction is useful, but “non-functional requirement” can be misleading. For a cybersecurity platform, tenant isolation, timely detection, recoverability, and auditability are not secondary to the feature. They are part of what makes the feature usable and trustworthy.

"Non-Functional Requirements" Are STUPID

Watch “Non-Functional Requirements” Are STUPID by Modern Software Engineering for a concise challenge to the idea that security, responsiveness, and resilience are somehow less important than feature work.

Watch the framing. Focus on the distinction between a system that merely demonstrates a feature and one that meets the conditions required for the feature to succeed in its real business setting.

A useful practical rule is:

A quality attribute is relevant when its failure would make an otherwise-correct user journey unsafe, untrustworthy, too slow, unavailable, unaffordable, or too difficult to evolve.

For the pilot, an alert that appears days after a suspicious sign-in may be functionally correct but operationally ineffective. An alert query that crosses a tenant boundary may be fast and available but unacceptable. A connector that takes months to adapt after a provider changes its audit schema may make the product commercially fragile.

Quality attributes are therefore cross-cutting constraints on valuable behavior.


The six-part scenario: turning adjectives into testable conditions

A phrase such as “the platform must be secure,” “we need high availability,” or “it should scale” is a concern, not yet a requirement. It does not say what event matters, what part of the system is affected, how the system should react, or how success will be measured.

The standard remedy is a six-part quality-attribute scenario:

  1. Source of stimulus — Who or what generates the event?
  2. Stimulus — What happens?
  3. Artifact — Which system capability, component, data set, or interface is affected?
  4. Environment — Under what operating condition does it happen?
  5. Response — What must the system do?
  6. Response measure — What measurable threshold determines success?

[PDF] Architecture-Centric Methods into Extreme Programming (XP)

Read the relevant excerpts from the SEI technical note to establish the six-part structure and see how vague aspirations become measurable architecture requirements.

In Section 2.2.1, “Eliciting Quality Attribute Scenarios” (pp. 9–10), read the six elements. Then continue into Section 2.2.2 and read the modifiability examples. Notice that the measurable constraint is what transforms “easily changeable” into an architecture-relevant requirement.

Consider this weak statement:

The platform must detect suspicious sign-ins quickly.

It has a useful intent, but several ambiguities:

  • Does “quickly” mean seconds, minutes, or hours?
  • Is the clock measured from the source event time, from receipt by the platform, or from successful validation?
  • Does the target apply to every event, the average event, or nearly all events?
  • Does it still apply during a burst, a dependency slowdown, or a planned deployment?
  • Is the desired outcome an alert created, an alert visible to an analyst, or an analyst notification delivered?

A scenario makes these decisions explicit:

Scenario elementFirst-pass specification
SourceConfigured tenant identity provider
StimulusA valid sign-in event arrives at the platform
ArtifactIngestion, detection, alert persistence, and alert-query path
EnvironmentNormal operation at the agreed pilot peak sustained event rate
ResponseThe platform normalizes the event, evaluates the approved rule, and persists any resulting alert with its evidence
Response measureFor qualifying events, of alerts are queryable within 120 seconds and within 300 seconds, measured from successful event acceptance over a 30-minute peak-load test

This is still not an architecture. It does not dictate a stream processor, a queue, a database, or a deployment topology. But it sharply constrains future choices: the platform will need a defined acceptance boundary, clocks and tracing across stages, a way to test peak load, and a design that avoids unbounded processing delay.

Why the environment is indispensable

Without an environment, teams often create contradictory requirements accidentally.

“Alert results appear in two minutes” might be reasonable during normal load. It may be impossible or economically unjustified while a tenant delivers a large historical backlog. A stronger requirement distinguishes the cases:

  • Normal mode: Apply the end-to-end detection latency target.
  • Backfill or overload mode: Preserve accepted events, expose processing lag, and process the backlog according to an agreed recovery objective.
  • Dependency-degraded mode: Continue accepting events where safe, or explicitly reject and surface the condition rather than silently losing data.

The environment is where you state the operating reality that makes the response measure meaningful.


Measure the attribute, not a vague proxy

Different quality attributes invite different measures. The measurement needs to be both meaningful to stakeholders and feasible to verify.

Section 4.4. Quality Attribute Scenarios in Practice - People

Use this excerpt as a scenario-generation reference for two attributes that will dominate an early cybersecurity platform: performance and security.

In Section 4.4, locate the “PERFORMANCE” subsection. Read the performance framework through Table 4.3, paying attention to the distinction among latency, throughput, deadlines, jitter, miss rate, and data loss. Next, read the “SECURITY” subsection, beginning the security framework, then inspect Table 4.4. Focus on how an attack attempt becomes a scenario with a required, measurable system response.

The table below is not a complete taxonomy. It is a practical prompt set for the behavioral-detection pilot.

Quality attributeThe question behind itUseful measures for this product
PerformanceCan the platform process and expose security-relevant results in time?End-to-end detection latency, API latency percentile, sustained ingestion throughput, backlog age, rejected-event rate
Availability and resilienceDoes a fault become user-visible failure, and how quickly does the service recover?Availability during defined service hours, fault detection time, recovery time, duration of degraded mode, permanently lost accepted events
SecurityDoes the platform resist unauthorized access, change, or disruption while serving legitimate users?Unauthorized-request denial rate in conformance tests, audit-record completeness, time to detect suspicious access, remaining service under overload
Data integrityCan analysts trust the evidence and dispositions associated with an alert?Duplicate rate, corruption detected, reconciliation discrepancy rate, recovery point, evidence-link completeness
ModifiabilityHow expensive and risky is a foreseeable change?Engineer-days from approved change to production, number of independently changed modules, regression-test duration, downtime during change
Operability and testabilityCan operators diagnose failures and can engineers prove behavior under realistic conditions?Time to identify a stalled tenant source, time to reproduce an event path, scenario-test execution time, coverage of critical fault injections
UsabilityCan an analyst complete a high-value task accurately and efficiently?Time to reach a disposition, rate of incomplete dispositions, evidence-navigation errors, successful-task rate

A measurement becomes much stronger when it specifies five details:

  1. Population — Which requests, events, tenants, or users count?
  2. Clock boundary — From exactly when to exactly when is time measured?
  3. Statistic — Mean, median, , , maximum, count, or percentage?
  4. Operating condition — Normal load, peak load, planned maintenance, dependency failure, or attack?
  5. Verification method — Load test, integration test, fault injection, audit review, production telemetry, or recovery exercise?

For example, “average latency under two minutes” is often a poor requirement. An average can look healthy while a significant tail of alerts is delayed for hours. Security operations usually care more about the experience of almost all relevant events, which makes a percentile target such as or more informative.

Similarly, “99.9% available” is incomplete on its own. Over a 30-day month, that availability budget allows approximately:

But it does not state which capabilities must remain available, whether planned maintenance counts, what happens to accepted events during an outage, or how quickly a failure must be detected. A scenario supplies that missing operational behavior.


Extract scenarios from an ambiguous brief

Return to the pilot brief from the prior lesson:

“Build a multi-tenant pilot for SOC teams. By the end of the quarter, pilot customers should connect Microsoft Entra ID audit logs, identify suspicious sign-ins based on impossible travel, and investigate alerts. Tenant administrators set up data sources. Analysts see and close alerts. The pilot will serve ten enterprise tenants. Workforce users sign in through the existing corporate identity service. Event and alert data must not be visible across tenants.”

The brief states a small number of functional requirements but almost no measurable quality targets. Do not respond by inventing a polished-looking list of numbers and presenting them as settled requirements. Instead, distinguish three things:

  • Stated requirement: Explicitly present in the brief.
  • Candidate scenario: A concrete quality concern inferred from the product objective or trust boundary.
  • Open question or assumption: Information needed before the scenario’s response measure can be negotiated.

For example:

Brief statementCandidate quality concernWhat is still unknown?
“Identify suspicious sign-ins”Detection must complete in time to influence SOC action.What alert latency has operational value? What event volume and burst profile apply?
“Data must not be visible across tenants”Cross-tenant requests must be denied and auditable.Are support personnel allowed any cross-tenant access? What break-glass process exists?
“Pilot customers should connect Entra logs”Source failure and provider changes must be diagnosable and manageable.What delivery mechanism is supported? How long can a source be silent before escalation?
“By end of quarter”The initial design must accommodate likely pilot changes without destabilizing core workflow.Which changes are expected: schema fields, rules, source variants, analyst workflow, or tenant count?

This is the extraction sequence to use in a design workshop or during product discovery.

1. Anchor each scenario to a valuable functional journey

Start from a functional requirement, not from a generic quality list.

For example:

  • FR-03: Receive and validate tenant events.
  • FR-05: Create an impossible-travel alert with supporting evidence.
  • FR-06: Allow an authorized analyst to retrieve tenant-scoped alerts and evidence.
  • FR-07: Allow an authorized analyst to close an alert with a disposition.

Then ask, for each journey:

  • What must happen if the load increases?
  • What must happen if a dependency or process fails?
  • What would an attacker try?
  • What change is likely within the pilot’s lifetime?
  • What does an analyst or operator need to diagnose a failure?
  • Which attributes, if wrong, would invalidate the product’s trust claim?

This keeps scenarios tied to product value rather than producing abstract statements such as “the system should be scalable.”

2. Generate realistic stimuli

A cybersecurity product should generate scenarios from normal operations and adverse conditions.

For the pilot, useful stimuli include:

  • A burst of valid sign-in events arrives from a configured source.
  • A valid event arrives late or is delivered more than once.
  • The event-processing worker crashes after accepting events.
  • An identity-provider integration stops delivering events.
  • An authenticated Tenant A analyst requests a known Tenant B alert identifier.
  • A tenant administrator’s authorization to the external identity provider is revoked.
  • A provider adds a field or changes a compatible event representation.
  • An operator needs to determine why a tenant’s alerts stopped appearing.
  • A deployment introduces a processing fault that affects one tenant’s event flow.

At this stage, describe the stimulus, not the solution. “The queue consumer fails” assumes a queue. “The event-processing service stops making progress” is technology-neutral and more appropriate before architecture selection.

3. Set a measurable response, then expose uncertainty

The response measure should be specific enough for a stakeholder to approve, reject, or negotiate. If you lack the facts needed for a number, record a question rather than hiding uncertainty in language such as “fast,” “reliable,” or “enterprise-grade.”

For example:

Open question: For a high-severity sign-in anomaly, what is the maximum acceptable elapsed time from successful platform acceptance to analyst-visible alert during the pilot’s normal peak load?

The answer depends on the intended SOC workflow. If the product supports near-real-time response, minutes may be appropriate. If it supports periodic investigation and reporting, a longer target may be sufficient. The right number is a product and risk decision; the architect’s task is to make that decision explicit and show its consequences.

4. Record the scenario in a consistent form

Use a compact scenario record. It preserves the six parts while retaining the business context needed to prioritize the requirement.

FieldWhat to record
ID and quality attributeStable identifier, such as QS-SEC-01; one primary quality attribute
Source and stimulusWho or what causes the condition, and what happens
Artifact and environmentThe affected capability and operational mode
Required responseObservable behavior, not an implementation mechanism
Response measureThreshold, population, timing boundary, and statistic
Rationale and sourceLink to product objective, stakeholder concern, policy, or risk
Priority and statusMust, Should, Could, or Not now; proposed, agreed, or blocked on discovery
Verification evidenceTest, telemetry, review, or drill that will demonstrate satisfaction
Open questionsAssumptions that must be resolved before commitment

The record is deliberately more rigorous than a backlog label but much lighter than a large requirements specification.


Worked scenario set for the detection pilot

The following scenarios are illustrative candidates, not claims about the actual pilot. The exact numeric measures require validation with SOC, product, operations, security, and commercial stakeholders.

QS-PERF-01: detection timeliness

Scenario elementCandidate specification
Quality attributePerformance
SourceA configured tenant identity-provider connection
StimulusValid sign-in events arrive at the agreed pilot peak sustained rate
ArtifactEvent ingestion, normalization, rule evaluation, alert storage, and alert-query path
EnvironmentNormal operation, with no declared backlog or dependency incident
ResponseThe platform accepts each valid event, associates it with the correct tenant, evaluates the approved rule, and makes any resulting alert and evidence queryable
Response measureFor qualifying events, alert visibility is within 120 seconds at and 300 seconds at , measured from successful platform acceptance to successful authorized alert retrieval during a 30-minute peak-load test
StatusProposed; validate against SOC response workflow and capacity assumptions

Two details are especially important:

  • The measurement starts at successful platform acceptance, not at the event’s original timestamp. Otherwise, an external provider’s delivery delay is mixed with platform processing time.
  • “Queryable” is stronger than merely “alert record written.” It represents the analyst-facing outcome, including the evidence needed for investigation.

QS-SEC-01: tenant-boundary enforcement

Scenario elementCandidate specification
Quality attributeSecurity: confidentiality and auditing
SourceAn authenticated workforce user authorized only for Tenant A
StimulusThe user requests an alert or evidence record known to belong to Tenant B
ArtifactAlert and evidence retrieval interfaces, authorization layer, and persistence query path
EnvironmentNormal operation, using a valid identity-provider-issued access token
ResponseThe platform denies the request without revealing the existence or contents of Tenant B data and records an audit event with actor, requesting tenant, target identifier, action, outcome, and correlation identifier
Response measureAll cross-tenant access attempts in the authorization conformance suite are denied; no protected Tenant B field is present in the response; the corresponding audit event is searchable within 60 seconds of the request
StatusMust; derived directly from the explicit tenant-visibility constraint

This scenario does not replace a full threat model. It does, however, state a verifiable security property that will drive authorization design, audit design, testing, and data-access boundaries.

QS-AVAIL-01: recovery from event-processing failure

Scenario elementCandidate specification
Quality attributeAvailability and resilience
SourceInternal platform runtime
StimulusThe event-processing capability stops making progress because a processing instance crashes
ArtifactAccepted-event processing and detection pipeline
EnvironmentNormal load, with valid accepted events awaiting processing
ResponseThe platform detects the loss of progress, raises an operator-visible incident, restores processing, and preserves the ability to account for each accepted event
Response measureLoss of progress is detected within 60 seconds; processing resumes within 5 minutes; in a fault-injection test, every event accepted before and during the incident is either processed or remains explicitly recoverable for later processing, with no unaccounted-for accepted events
StatusProposed; recovery objective and customer-visible status behavior require operations agreement

Notice the deliberate wording: “account for each accepted event” is an integrity requirement. It avoids prematurely choosing a particular delivery guarantee or deduplication mechanism, topics that become design decisions once the business invariant is clear.

QS-OPS-01: diagnose a silent data source

Scenario elementCandidate specification
Quality attributeOperability
SourceTenant administrator or on-call operator
StimulusA configured tenant source has not delivered an event for the agreed monitoring interval
ArtifactIntegration health, tenant configuration, and operational telemetry
EnvironmentThe platform is otherwise operating normally
ResponseThe platform identifies the affected tenant and source, displays the most recent successful receipt time and failure state where known, and makes the condition visible to an authorized operator
Response measureIn an integration test that suspends delivery, the affected source is identified within 10 minutes of the monitoring interval expiring; an operator can determine the tenant, source, last successful event receipt, and current error category within 5 minutes using documented operational views
StatusShould for the pilot; exact monitoring interval is an open product and operations question

A security product that silently stops receiving security telemetry can create a dangerous illusion of coverage. This is why operability is an architectural concern, not merely a dashboard request.

QS-MOD-01: evolve a detection rule safely

Scenario elementCandidate specification
Quality attributeModifiability
SourceDetection engineering team
StimulusAn approved change modifies the impossible-travel rule’s parameters or evidence fields
ArtifactDetection-rule definition, rule evaluation, alert evidence contract, and associated tests
EnvironmentScheduled production change during the pilot
ResponseThe team can implement, validate, and deploy the approved rule change while preserving investigation of alerts created under the prior rule version
Response measureThe change is completed within an agreed engineering-effort budget; automated regression tests cover prior and new rule behavior; no alert created before the change becomes unreadable or loses its recorded rule-version context
StatusProposed; effort budget and whether parameters require runtime configuration remain open questions

This scenario is intentionally not “make the rule configurable.” Runtime configuration may be the eventual answer, but it is an implementation choice. The requirement is safe, bounded evolution with preserved investigative meaning.


Prioritize scenarios by architectural consequence

Not every scenario deserves equal attention in an initial architecture review. A principal-level artifact identifies the few scenarios that are both valuable and difficult enough to shape major design choices.

A useful priority test asks:

  1. Does failure undermine the primary user outcome?
    If alerts cannot be investigated in time, the core detection journey fails.

  2. Does failure violate a non-negotiable trust or contractual obligation?
    Cross-tenant disclosure is likely a release blocker even for a small pilot.

  3. Does satisfying the scenario materially constrain architecture?
    Detection latency, crash recovery, isolation, and auditability influence boundaries, data flow, and deployment design.

  4. Is the requirement expensive to add late?
    Evidence provenance, tenant scoping, and event-path observability are far cheaper to plan before data and interfaces proliferate.

  5. What is the impact of being wrong?
    A rough user-interface efficiency target may be revisable after testing. A misunderstanding of data isolation or recovery expectations can invalidate the platform.

For the pilot, a sensible initial priority grouping is:

PriorityCandidate scenariosWhy
MustTenant-boundary enforcement; detection timeliness; accepted-event recovery/accountabilityThese establish the product’s trust and core operational value
ShouldSilent-source diagnosis; alert-query responsiveness; safe rule evolutionImportant to sustain a credible pilot and learn from it
CouldAdvanced customization, multiple source types, rich operational analyticsValuable, but not required for the narrow initial journey
Not nowMulti-region active operation, arbitrary customer-authored detection rules, broad historical replayPotentially significant, but requires separate business justification and capacity assumptions

The output of this work is not a “quality checklist.” It is a ranked set of architectural drivers: scenarios that must be discussed when choosing system boundaries, data stores, authentication and authorization mechanisms, failure behavior, and operational telemetry.


A short stakeholder working session

For an ambiguous brief, run a focused quality-scenario session rather than trying to resolve everything in private.

A productive 45-minute format is:

  1. State the product objective and release boundary in five minutes.
    Reconfirm the end-to-end pilot journey and what is explicitly out of scope.

  2. Generate adverse and growth conditions for ten minutes.
    Ask product, security, operations, and engineering participants what must not go wrong.

  3. Draft scenarios silently, then consolidate for ten minutes.
    Require each suggestion to name a stimulus, environment, response, and measurable outcome.

  4. Refine the highest-value candidates for fifteen minutes.
    Replace adjectives with a statistic, time window, population, and clock boundary.

  5. Prioritize and assign open questions for five minutes.
    Do not fake precision. Mark owners for unresolved load, latency, recovery, compliance, and cost assumptions.

A facilitator should repeatedly ask:

  • “What event are we actually worried about?”
  • “Who experiences the failure?”
  • “What should the system do, rather than how should it be built?”
  • “How would we prove this scenario has been met?”
  • “What number are we assuming without stakeholder agreement?”

That last question is particularly important. A scenario with an unapproved number is still useful if clearly marked proposed. It becomes harmful only when the number quietly hardens into an architectural commitment.


Key takeaways

Quality-attribute scenarios make the conditions of success explicit. They complement functional requirements by specifying what must happen when the system faces load, failure, attack, operational uncertainty, or change.

For each scenario, capture:

  • a concrete source and stimulus,
  • the affected artifact and operating environment,
  • the required observable response,
  • a measurable response threshold,
  • the rationale, priority, verification method, and unresolved assumptions.

For the multi-tenant detection pilot, the most consequential early scenarios concern timely alert creation, tenant-boundary enforcement, recovery and accounting for accepted events, diagnosable source failures, and safe rule evolution. These are not implementation decisions; they are the requirements that later architecture must defend.

Next, you will use the functional requirements and these quality scenarios to construct a system-context diagram: identifying users, external systems, major interactions, and the trust boundaries that must be protected.

Can't find a good explanation? Sign up and we'll make it for you

Sign up