Use cases are a popular way to express software requirements.
They are popular because they are practical. A use case bridges
the gap between user needs and system functionality by directly
stating the user intention and system response for each step in a
particular interaction.
Use cases are simple enough that almost anyone can read them.
Even customers or users can read use cases without any special
training. However, writing use cases takes some practice.
It is not difficult to start writing use cases, but really
mastering them takes training, practice, and insight.
No single use case specifies the entire requirements of the
system. Each use case merely explains one particular
interaction. An organized suite of use cases and other
specification techniques are needed to fully specify the software
requirements.
The figure below illustrates where a use case document fits
into the overall software requirements specification (SRS) and
how it relates to other documents. This white paper focuses on
the yellow "Use Cases" box. Ideally, your use case document is
just one part of an overall set of project documents. But, don't
worry if you just want to jump straight into writing use
cases: this white paper focuses on them.
→
→
Structural Design
Behavioral Design
User Interface
Build System
Architecture
Persistence
Security
Target Market Segment
Claimed Customer Benefits
→
Classes of Users
User Stories
→
→
QA Plan
Test Suite
Test Cases
Test Runs
Requests from Customers
→
One goal of writing use cases is to specify the system to be
built, so that the resulting specification can be handed off to
someone else for implementation. Another important goal is to allow
potential customers to read the use cases and validate them. Long
before you reach these goals, you will find that the process of
writing use cases is itself a very useful way to clarify your own
thinking about the system requirements: by writing step-by-step
descriptions, you force yourself to think through the details of the
system's features.
Use cases and feature specifications complement each other. Use
cases concretely explain how a user accomplishes a goal using one or
more features of the system. Feature specifications describe the
same system from a different perspective: a feature spec
abstractly describes everything about one software feature and all
it's possible uses.
It is a good idea to write the use cases and the feature specs in
parallel. For example, when working through a use case, you might
realize that a particular feature needs an additional option, so you
would note that in the feature spec. Likewise, when making a pass
over the feature specifications, you might realize that a feature
needs a particular input value to work properly, so you might need
to add a step to all use cases for that feature. Together, use
cases and feature specs provide checks and balances that help you
write requirements that are more complete, correct, and
consistent.
The rest of this white paper works through the six steps shown in
yellow in the diagram below. Beside those steps, we show the
corresponding steps for writing feature specifications. (You may
notice that this is very similar to the test case writing steps.)
1: Identify Classes of Users
↓
2: Outline the Use Case Suite
↓
3: List Use Case Names
↓
4: Write Some Use Case Descriptions
↓
5: Write Steps for Selected Use Cases
↓
6: Evaluate Use Cases
1: Identify Functional Areas
↓
2: Outline the Feature Set
↓
3: List Feature Names
↓
4: Write Some Feature Descriptions
↓
5: Write Specs for Selected Features
↓
6: Evaluate Features
Note that in steps 4 and 5, we recommend that you only specify
the most important use cases in detail. In any complex system,
there will be a large number of potential use cases. It is usually
best to take a breadth-first approach: map out your use
case suite first, then fill in details incrementally as needed.
This concept is key to getting the most value out of the limited
time that you have to write specifications.
After the SRS is written, each part is used in later work on the
system. Both use cases and feature specs affect both the design and
quality assurance of the system. However, feature specifications
can affect the design more directly, and the use case suite can
provide a stronger starting point for the system test suite.
Step One: Identify Classes of Users
The first step in writing use cases is understanding the
users, their goals, and their key needs. Not all users are
alike. Some users will expect to walk up to the system and
accomplish one goal as quickly as possible. For example, some
banking ATM customers just want "fast cash". Others may be power
users who will master every option and shortcut over time.
It is important to identify and list classes of users so that
none of them are forgotten. Too often, an entire class of users
are initially overlooked, e.g., administrators. This leads to a
frustrating series of requirements changes when their
requirements must be added later.
Next, make sure that you know the key needs of each class of
user. For example, one class of user may simply need a speedy
transaction, whereas another class of user may need more guidance
in making choices, and a third class of user may expect to reuse
their knowledge of competing products.
ReadySET Pro helps you identify classes of users and take
advantage of that information while planning your use case
suite.
The ReadySET Pro user needs template and use case
suite template come pre-populated with reusable sample text
describing classes of users that are found in many
applications. The sample text will not fit your application
exactly, but it gives you a big head start on this step.
When you specify additional classes of users, ReadySET Pro
guides you in describing their key needs. For example, which
business objects are of primary concern to these users? And,
which other types of users do they interact with to accomplish
specific business goals?
The ReadySET Pro templates are simply templates: they do not
force you to follow a predefined process and they are not a
magic bullet that does your work for you. For this first
step, the reusable sample text gives you a head start can be
expected to save you up to an hour. As you will see below,
these time savings add up in each step.
In addition to saving time, ReadySET Pro can improve the
quality of your project documents by helping with both the
breadth and details of your work. ReadySET Pro provides a broad
and remarkably complete set of project document templates that
ask the right questions. So, you are less likely to overlook
important areas of development. At the detailed level, the
reusable sample text is well written and to-the-point. So, you
can adapt it to fit your project, and still end up with a well
written result.
Step Two: Outline the Use Case Suite
It is tempting to skip this step and jump directly into
writing a use case. After writing one use case, you would write
another, and so on. That process would be like coding your
application without outlining the design first. You would never
really know how much further you need to go before you are done,
if you were spending too much time in one area, or if you had
forgotten other important areas altogether.
The second step in our breadth-first approach to writing use
cases is to outline the use case suite. A use case suite is an
organized table of contents for your use cases: it simply lists
the names of all use cases that you intend to write. The suite
can be organized several different ways. For example, you can
list all the classes of users, and then list use cases under
each.
One particularly good use case suite organization is to use a
grid where the rows are classes of users and the columns are
business objects. Each cell in the grid will list use case names
that are done by that class of user on that type of object. For
example, in an e-commerce system, shoppers would have use cases
for adding and removing products from their shopping carts. In
contrast, administrators might have some very different use
cases, for example, calculating the percentage of abandoned
shopping carts.
The advantage of using an organized list or grid is that it
gives you the big picture, and helps you put your finger on any
area that needs more work. For example, in the e-commerce grid,
there might be a business object "Coupon". It is obvious that
shoppers use coupons, but it is easy to overlook the use cases
for administrators who must create coupons. If it is overlooked,
there will be a clearly visible blank space in the use case
suite. These clear indications of missing requirements allow you
to improve the requirements sooner rather than get bogged down in
too many frustrating requirements changes later.
The ReadySET Pro use case suite template is pre-populated with
reusable sample lists and grids that help you organize your use
cases around classes of users, priority, product releases,
business objects, and other meaningful criteria. These lists
and grids help you, for example, make sure that you cover every
class of user that your system must support.
As stated above, starting with the ReadySET Pro templates can
definitely save some time. In this particular step, you can
expect to save some time on the actual writing. But more
importantly, the templates guide your thinking toward a more
complete specification that will lead to a better quality
product in the end. Try our ROI
Calculator to see for yourself how incremental improvements
in quality can save substantial time and money.