Cockburn Use Cases Guide
A practical reference for writing use cases per Alistair Cockburn’s Writing Effective Use Cases (2001). Template, goal levels, and step-writing guidelines distilled for software teams that want to capture behavior without designing the UI.
Originally authored as a working guide; published here on 2026-05-10 as part of the binaryphile.com compliance-references set.
I keep returning to Cockburn’s framework when a team needs to write down what the system actually does, in a form that survives implementation changes. This is the version I reach for when I’m reviewing requirements drafts.
Template (Fully Dressed)
### UC-N: Active Verb Phrase (Goal)
- **Primary Actor:** Role name (singular, capitalized)
- **Goal:** What the actor wants to achieve
- **Scope:** System under design (the black box)
- **Level:** User goal | Summary | Subfunction
- **Secondary Actors:** External systems the SUD calls upon
- **Trigger:** Event that starts the use case
- **Preconditions:** What must already be true (not tested within the UC)
- **Stakeholders:**
- Role — what they need from this use case (drives MSS, extensions, guarantees)
- **Main Success Scenario:**
1. Triggering event / first interaction
2. Actor does X; System responds Y
...
N. Goal is achieved
- **Extensions:**
- 3a. Condition detected as fact:
1. Recovery step
2. Resume step N / Fail / Separate success
- **Technology & Data Variations:** Sub-variations in how a step may be executed
- **Minimal Guarantee:** Promise to all stakeholders even on failure
- **Success Guarantee:** What must be true on completion
Goal Levels
| Level | Test | Size |
|---|---|---|
| Summary | “That’s not just one thing” — encompasses multiple user goals | Hours |
| User Goal | Boss test: “Would your boss accept you did this all day?” EBP test: one person, one place, one time, measurable value | 3-9 steps, minutes |
| Subfunction | Needed to support a user-goal UC; not independently valuable | Seconds |
The Three Kinds of Action Steps
Every step must be one of:
- Interaction between two actors
- Validation protecting a stakeholder’s interest
- Internal state change satisfying a stakeholder
Twelve Step-Writing Guidelines
- Simple grammar. Subject-verb-object.
- Who has the ball. Name the actor explicitly in every step.
- Bird’s-eye view. Describe from above, not inside any actor’s head.
- Process moves forward. Each step advances toward the goal. No step leaves the scenario unchanged.
- Intent, not movements. “Customer provides address” not “Customer clicks field and types.”
- Reasonable transaction size. Actor sends request+data, system validates, system updates state, system responds. One step or decomposed — use judgment.
- “Validate,” don’t “check whether.” “System validates credentials” moves forward; “System checks whether credentials are valid” requires an if/else branch. Validation failures go in extensions.
- Mention timing when it matters. “System responds within 3 seconds.”
- “Actor has System A kick System B.” When the primary actor causes inter-system communication.
- “Do steps x-y until condition.” For loops.
- Condition says what was detected. Extensions state facts, not questions. “Invalid card number:” not “Is the card valid?”
- Indent condition handling. Extension handling indented under the condition.
Extension Rules
- Keyed to MSS step numbers:
3a,3b,*a(any step) - State conditions as detected facts, not questions
- Each extension ends one of three ways:
- Rejoins MSS at a specific step
- Reaches a separate success exit
- Ends in failure
- Brainstorm exhaustively — completeness comes from extensions, not the MSS
- Complex extensions can be extracted into sub-use cases
Stakeholder Interests
- Ask: “Who cares, and what do they want?”
- The system responds to the actor while protecting the interests of all stakeholders
- Every interest must be addressed somewhere in the MSS, extensions, or guarantees
- This section is the key mechanism for preventing missing requirements
- Stakeholder interests drive MSS steps, guarantees, and extensions
Preconditions and Guarantees
- Preconditions: Assumed true, not tested. Only state what’s worth telling the reader.
- Minimal Guarantee: Fewest promises even on failure (e.g., “audit trail preserved”)
- Success Guarantee: What must be true on completion, meeting all stakeholder interests
Quality Tests
- Boss Test: Would your boss accept you doing this all day? (user goal level)
- EBP Test: One person, one place, one time, measurable value, consistent state?
- Size Test: MSS has 3-9 steps. 20+ means decompose.
- Purpose-content alignment: Does the goal match what the steps accomplish?
Common Mistakes
- Designing the UI — intent, not widgets
- Wrong goal level — apply Boss/EBP/Size tests
- No primary actor — every UC needs one
- Missing stakeholder interests — leads to gaps
- CRUD explosion — use “Manage X” and only extract complex operations
- Excessive precision — rigor beyond what’s needed wastes time
- Goal-content mismatch — stated goal doesn’t match steps
Process
- Find system boundary (scope)
- Find actors — characterize each (technical skill, constraints, behavior patterns)
- Find goals — exhaustive brainstorm per actor; produce actor-goal list table
- Write stakeholder interests — the key mechanism for preventing missing requirements
- Write preconditions and guarantees (minimal + success)
- Write MSS (3-9 steps meeting all interests)
- Brainstorm extension conditions exhaustively — completeness comes from here
- Write extension handling — each ends in rejoin, separate success, or failure
- Extract/merge sub-use cases as needed
- Readjust the set