Here's the third part of The Use Case Chronicles, where after discussing what use cases are and how they're structured, I'll give some guidance and tips on how to find them.
Use cases might be like a giant wave crashing over you. When working with use cases, you will eventually ask yourself two main questions: how long can this go on for, and how can I describe ALL of it? In this article, you will find tips and templates to help you deal with this wide range of use cases.
You don't always have to describe a use case with all its details. In the book "Writing Effective Use Cases," Alistair Cockburn considers two templates: the casual use case and the fully dressed use case. Those are different levels of expansion of use cases, from simple to detailed ones:
A simple top-level description – it’s likely to be less accurate and missing some details; mostly it identifies just basic elements (name, actor, association).
A full and rigorous description – it uses one of the accepted full templates and identifies all elements of the use case (actors, scope, trigger, precondition, etc..).
Actually, these are two sides, and you can use various intermediary levels. Note that you don’t need to describe all use cases with the same level of expansion.
💡 Tip
The fully dressed template is useful when:
You don't have to describe use cases all at once. Instead, use different levels of detail to avoid drowning in use cases.
💡 Tip
Identifying use cases in a top-down direction is more convenient – from the top-level description to the details.
For example, you can give a big picture and then describe certain parts of the system.
One more point is that you can use different levels of detail when describing certain elements of the use case. For example, you can list alternative flows in the use case description and elaborate on them in another document.
Another way is to describe the same scope of use cases but show more and more details.
For example, let's take a look at the simple example from The Use Case Chronicles – Part 2: Unveiling Use Case Structure for a mobile application for food ordering.
Here, I use a diagram to describe the top level without any use case details. Drawing helps to see all the connections between cases and the big picture.
Then, I describe some use cases and include more details such as Preconditions, Trigger, Goal, and so on. Some elements can be described as more casual, and some as more dressed up.
💡 Tip
Don't spend much time trying to fit every detailed requirement into use cases, especially if you are not going to implement them for months or years. Requirements may change or disappear before development begins.
💡 Tip
Large amounts of data are hard to take in. If your text or diagram becomes too lengthy and requires endless scrolling, break it down into several levels of detail. Otherwise, you'll only confuse your readers.
Identifying use cases can also be tough, sometimes I don't know what to hit on, and this is where the following strategy helps me. Actually, there are several methods for identifying use cases; they basically consist of the same questions but in a different order. The following is the order I have seen most often from different authors and found it to be the most convenient.
You can describe either a system or a part of it.
They can be determined by asking the following questions:
It is not necessary to use all actors in every aspect of the system description, but it is useful to consider all actors and ask all questions so that important actors are not lost.
Then, examine the visible and observable value each actor wants to get to identify potential use cases. Key questions to help with this process include:
When you have actors and use cases, you need to arrange and link them. Pay attention to the following points here:
When you have described all the use cases, go through and read them all. Note the following points:
💡 Tip
Don't try to include every new requirement with use cases. You can use different levels of detail and extensions to existing templates to include new details. But you cannot describe all functional requirements in scenarios and may end up in an endless circle of revisions.
💡 Tip
We all make mistakes sometimes, so it's always a good idea to ask for feedback from developers, users (if possible), and other interested stakeholders. Don't feel like you have to wait until you've completed your entire specification to ask for review feedback, as every review can help improve your subsequent requirements work.
This concludes the third part of the Use Case Chronicles. These guidelines and tips help me in my work with use cases. Feel free to share your tips in the comments below!
Check out other parts of the Use Case Chronicles: Part 1: Who, What, and How to Use Cases and Part 2: Unveiling Use Case Structure.