Use case descriptions: from brief to fully dressed
Writing a use case as text: trigger, preconditions, normal flow, subflow, alternate and exception flows. On the exam you are asked to write a use case description from start to finish.
A use case diagram shows what will be done but gives no detail. The use case description gives the detail: how the actor interacts with the system step by step, what can go wrong, and what is true when it ends. This text is the input for both the designer and the tester: every alternate flow turns into a test case. A typical exam question: “Write a fully dressed use case description for X.” Know the template by heart, write the steps in proper sentences, and don’t skip the alternate flows.
Golden rules:
- The normal flow is a single successful scenario. Errors and options go under a separate heading.
- The subject of every step must be clear: “The student …”, “The system …”. No passive sentences.
- Deviations are written with a step number: “4a. If the book is already reserved …”.
- The same level of abstraction. One step shouldn’t be “selects a book” and another “moves the mouse to the right”.
Three levels of detail
| Level | Length | When |
|---|---|---|
| Brief | 2-4 sentences, main scenario only | Early analysis, to introduce the use case list |
| Casual | A few paragraphs, alternatives in plain text | Use cases of medium importance |
| Fully dressed | Full template, numbered steps | Important, risky, complex use cases |
There are also two further distinctions:
- Overview vs detail: An overview use case is high level (usually a brief), a detail use case gives the full flow.
- Essential vs real: An essential use case is independent of technology (“The student selects the book”). A real use case describes a specific interface (“The student taps the ‘Reserve’ button”). In analysis, write essential.
The fully dressed template
| Field | Content |
|---|---|
| Use case name | Verb + object |
| ID | UC-xx |
| Importance level | High / Medium / Low |
| Primary actor | The role that starts it |
| Use case type | Overview/detail, essential/real |
| Stakeholders and interests | Everyone interested in the outcome and their expectation |
| Brief description | 1-2 sentences |
| Trigger | The event that starts it |
| Trigger type | External / temporal |
| Relationships | Association, include, extend, generalization |
| Preconditions | What must be true before it starts |
| Normal flow of events | Numbered main success steps |
| Subflows | Details of long steps (S-1, S-2) |
| Alternate / exceptional flows | Deviations (4a, 6a …) |
| Postconditions | The state that is true when it ends successfully |
Some templates also include a “special requirements” field: the nonfunctional requirements belonging to this use case (e.g. “The reservation confirmation within 3 s”).
Rules for writing steps
- The SVDPI pattern: Subject - Verb - Direct object - Preposition - Indirect object. “The system (S) sends (V) the confirmation e-mail (D) to the student (I).” Word order may vary; what matters is that the subject and the object are clear.
- Make clear who starts it. Every step is an action of either the actor or the system.
- Write like an independent observer. Not “I press the button” but “The student submits the request.”
- The same level of abstraction. Screen details (color, button position) do not go into an analysis description.
- A reasonable number of steps. 3-9 steps is ideal. If it is too long, split it into a subflow or a separate use case.
- Keep it simple (KISS). Don’t stuff every possible case into the normal flow.
- Write the return instruction. At the end of an alternate flow, state where to go back to: “return to step 4” or “the use case ends”.
PITFALL · writing the normal flow with if/else. A sentence like “If the book is available, it reserves it; otherwise it adds to the waiting list” does not belong in the normal flow. The normal flow describes the available case; the not-available part is written as “4a” in the alternate flows.
Worked example: Reserve Book (fully dressed)
Context: The reservation system of a campus library. The student reserves an available book for 48 hours, and the book is held at the lending desk.
Use case name : Reserve Book
ID : UC-04
Importance : High
Primary actor : Student
Use case type : Detail, essential
Stakeholders and interests:
- Student: to get the book they want without waiting in a queue.
- Librarian: orderly reservations and few no-shows.
- Library manager: fair use of resources.
Brief description: The student searches for a book and reserves an available copy for 48 hours; the system sets the copy aside and sends the confirmation.
Trigger: The student wants to reserve a book. Trigger type: External.
Relationships:
- Association: Student
- Include: Verify Membership
- Extend: Join Waiting List
- Generalization: none
Preconditions:
- The student is logged in to the system.
- The library catalog is up to date.
Normal flow of events:
1. The student searches for the book by title,
author or ISBN.
2. The system lists the matching books and the
number of available copies of each.
3. The student selects a book and a pickup branch.
4. The system runs the S-1: Check Eligibility
subflow.
5. The system sets aside an available copy
in the student's name for 48 hours.
6. The system creates the reservation record and
generates a reservation code.
7. The system sets the status of the copy to
"On Hold".
8. The system shows the confirmation on screen and
sends an e-mail to the student.
Subflows:
S-1: Check Eligibility
1. The system verifies that the student's
membership is active (Verify Membership).
2. The system checks that the student has
no unpaid fines.
3. The system checks that the student's number
of active reservations is less than 3.
Alternate / exceptional flows:
2a. If there is no matching book:
2a1. The system says "No results found".
2a2. Return to step 1.
3a. If the selected book has no available copy:
3a1. The system offers to join the waiting
list (extend: Join Waiting List).
3a2. If the student accepts, they are
added to the list; the use case ends.
S-1.2a. If there is an unpaid fine:
The system shows the fine amount and
rejects the reservation; the use case ends.
S-1.3a. If the number of active reservations is 3:
The system shows a limit message;
the use case ends.
5a. If the copy was set aside by someone else
in the meantime:
The system informs the student, return to step 2.
Postconditions:
- Success: A copy is “On Hold” in the student’s name for 48 hours, and the reservation record and code exist.
- Failure: The status of no copy has changed.
Analyzing the example
- The normal flow has 8 steps. The subject of every step is clear: the Student (1, 3), the System (2, 4-8).
- The eligibility check was put into a subflow, and the main flow stays readable.
- Verify Membership is an include because it is also used in other use cases (Borrow Book).
- Join Waiting List runs only if there is no copy: an extend, triggered in alternate flow 3a.
- 5a catches a concurrency problem. Deviations of this kind turn into a locking requirement in the design.
From the description to other models
The description is the raw material for the following weeks:
| In the description | Where it goes |
|---|---|
| Nouns (book, copy, reservation, student) | Class diagram candidates (week 8) |
| Steps and their order | Activity and sequence diagrams (week 10) |
| State change (“On Hold”) | State machine diagram (week 10) |
| Alternate/exception flows | Test cases (week 13) |
Common mistakes
| Wrong idea | The truth |
|---|---|
| Writing if/else in the normal flow | The normal flow is the single success path; deviations go to alternates |
| Passive steps (“is checked”) | Write the subject: “The system checks” |
| Trigger = precondition | The trigger is the event that starts it, a precondition is a state that was true beforehand |
| Writing interface details (button color) | Write essential in analysis, independent of technology |
| Not writing the return point in an alternate flow | Write “return to step 2” or “the use case ends” |
| A normal flow of 25 steps | Split into subflows or break up the use case |
| Postcondition = the last step | It is the state that is true after it ends (the record exists, the status changed) |
| Stakeholder = only the actors | Interested parties who are not actors are written too (manager, auditor) |
Test yourself
Exam-style questions. Solve them on paper first, then reveal the answer.
What is the difference between a brief and a fully dressed use case description?
Show answer
A brief is written in early analysis to describe the use case list quickly. A casual one is a few paragraphs, with alternatives in plain text. A fully dressed one is a template with all fields filled in and numbered steps, for important and risky use cases.
'Every night at 23:00 the system sends reminder e-mails for books due tomorrow.' What type of trigger is this?
- External trigger
- Temporal trigger
- Exceptional trigger
- Include trigger
Show answer
An event triggered by time is a temporal trigger (the actor is usually Time). An external trigger is an action of an outside actor: "The student presses the reservation button."
Which part of a use case description lists what must be true before the use case can start?
- Trigger
- Postconditions
- Preconditions
- Normal flow
Show answer
Preconditions are the states that must be true before it starts: "The student must have logged in to the system." The trigger is the event that starts it, and postconditions are the states that are true when it ends.
In the Reserve Book description on this page, which flow handles 'the book is already reserved by someone else'?
- Normal flow
- Subflow S-1
- Alternate/exceptional flow
- Postcondition
Show answer
Situations that deviate from the main success scenario are written in the alternate/exceptional flow, and the step they leave from is indicated by a number (e.g. 4a). A subflow, in contrast, is a part called from within the normal flow whose details are written separately.
What is wrong with this step: 'The system is used to check the fine'?
Show answer
A good step is written in the SVDPI pattern: Subject (who), Verb, Direct object, Preposition, Indirect object. A passive sentence hides the actor. "The system checks whether the student has unpaid fines." It is clear who does it.
What is the difference between an alternate flow and an exceptional flow?
Show answer
Alternate: "The student chooses shipping instead of branch pickup", and the goal is still achieved. Exception: "The book has been reserved by someone else", and the use case does not end successfully or returns with an error message. Some templates write both under one heading.
The normal flow of 'Reserve Book' on this page has how many numbered steps?
Show answer
1 The student searches ... 8 The system shows the confirmation and sends an e-mail. The example on the page has eight steps. A good normal flow is usually 3-9 steps; if it goes beyond 15-20 steps, the use case should be split.
Which field records who cares about the use case and why, e.g., 'Librarian: wants fewer no-shows'?
- Primary actor
- Stakeholders and interests
- Relationships
- Importance level
Show answer
The primary actor is the role that starts the use case. Stakeholders and interests lists everyone interested in the outcome (even if they are not actors) and their expectations. This field helps capture hidden requirements.
Write a brief description for the use case 'Track Order' in a food-delivery app.
Show answer
A brief description is one or two sentences: who does what, and what they get. Technical details (API, screen color) are not written. On the exam, a single sentence containing the actor and the result earns full marks.
An essential use case and a real use case differ how?
Show answer
In analysis an essential use case is written: "The student selects the book." In design it can turn into a real use case: "The student taps the 'Reserve' button in the list." Committing to the interface in analysis is deciding too early.
In the fully dressed 'Reserve Book', step 3 says 'Perform S-1: Check Eligibility'. Why use a subflow instead of writing the checks inline?
Show answer
The normal flow should stay at the same level of abstraction. The three sub-steps of the eligibility check (fine, limit, membership) would bloat the main flow. The subflow (S-1) writes the details separately. If several use cases perform the same check, that is a candidate for an include relationship.
Verification: Conceptual and writing questions; the template fields, flow types and trigger types were checked against the standard use case description definitions (the Dennis, Wixom and Tegarden template and Cockburn's brief / casual / fully dressed distinction). Step numbers and counts were counted by hand on the example on the page.