Use Case Benefits
Build the Right Thing
One of the hardest parts of any project is agreeing on precisely what you're going to build.
Projects with weak requirements can end up with scope creep, rework, delays, or even abandonment.
Use case modeling is an approachable way to describe what your system will do. Because use cases are written from an outside perspective, they're easier to understand by the stakeholders who understand the problem you're solving.
Why consider use cases?
In a traditional Software Requirements Specification (SRS), features are presented without context. For example:
The system shall log credit payments to the accounts receivable system.
The lack of context makes room for ambiguity. 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, a traditional SRS tends to devolve into a numbered list of detail that drones on page after page - very difficult for the system's stakeholders to absorb. Use cases break requirements down into shorter scenarios that readers can more easily understand.
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.