How Use Cases Make Projects More Successful
One of the hardest things to do when creating sophisticated software systems is to
build the right
thing. Projects that have incomplete or difficult to understand requirement specifications end up
with scope creep, expensive rework, delayed releases, or even abandonment. Use case modeling is a proven
method to effectively describe the behavior of a software system. It builds a
shared vision of the
problem at hand by bridging the gap between the people who understand the problem and the people who
understand how to build a solution.
My company already gathers requirements, why should I consider use cases?
In a traditional Software Requirements Specification (SRS), features are presented without any context.
For example, "
The system shall log credit payments to the accounts receivable system". When
there is no context present, there is room for ambiguity. For example, when does this event happen? Is
the order relative to other events significant? Who triggers the event? What happens when the accounts
receivable system is unavailable? In addition, an SRS tends to get long and complex, making comprehension
among all the stakeholders of the system difficult.
So what are the benefits of use case modeling?
Use cases focus on the users of the system, not the system itself, thus the
real system
needs are brought to light early on. Since a use case consists mainly of narrative text, it is easily
understandable by all stakeholders, including customers, users and executives, not just developers and
testers. By including all the stakeholders during the early planning stages of a project, you bring in
people who best understand the problems at hand, promote a sense of buy-in from end users, and eliminate
surprises when the system is deployed.
Each use case describes one way the system is used, but one of the big benefits of use case modeling is
that it also describes
all of the things that might go wrong. Identifying exceptions to a
successful scenario early in the project saves a lot of time by finding subtle requirements.
Finally, once a use case model has been developed, it can be used to drive many other aspects of software
development, including project planning (cost, complexity and timing estimates), object models, test case
definitions, and user documentation.