Use Cases in Agile Development
Use cases are considered by many people the technique used solely by the traditional predictive software development approaches and are not compatible with agile. However, agile is neutral on requirement techniques, and it does not mandate any particular way of eliciting and recording requirements. In agile, the requirements are stored in a product backlog, the prioritized list of items that deliver value. Contrary to the widespread misunderstanding, it is not prescribed what items can be put into the product backlog, as long as the items are articulated in a way that is clear and sustainable. Agile does not state what artifacts the team must produce (it would not be agile anymore), it just recommends not to detail the artifacts upfront too much to be prepared to respond to changes. As a result, the product backlog might also be built up with the use cases.
Use Cases Vs. User Stories
First, let's clarify the common misinterpretation that user stories are agile while use cases are not. Even though most agile methodologies take user stories as the core agile requirements analysis technique, it does not mean that other techniques are not agile enough. A user story is just a specific form of the user requirement, nothing more and nothing less. User stories are suitable to be easily used in traditional software development, as well as the light-weight use cases could be used in agile. Regardless of the selected software development approach, sometimes you need to describe the scenario of how the system is going to be used, so you write a use case and sometimes you need to describe the need from the user's perspective, so you create a user story.
- User story (what I need): As an employee, I need to book a shared desk in advance so that I don't need to wander around the office and search for a free spot
- Derived use case (what I want the system to enable me to do): Book Shared Desk (enables the user to book a shared desk in advance so that he or she doesn't need to wander around the office and search for a free spot)
In the context of software development, both user stories and use cases serve the same purpose - they capture system requirements, yet they both do it in a slightly different way. User stories define the needs the system must help to meet, whereas use cases describe what the user can actually do with the system. User stories serve as a feature placeholders waiting to be elaborated in detail just in time, use cases are more detailed and define more information upfront. On the other hand, even use cases can be analyzed iteratively, starting with the name, adding details incrementally. The agility is not about what technique is used, but how it is used.
Benefits of Use Cases in Agile Environments
The agile projects are no different from the standard projects in terms of the need to understand what the system should be capable of. Regardless of the selected software development approach, the analyst must create a concise summary of what features the system is going to provide to roughly plan the project, prioritize and estimate the effort and allocate the team. Even agile teams must come to an agreement on what the system is going to do, in the detail, which the user stories cannot provide. So apart from the very simple applications, user stories are never the only analytical output. The necessary details could be provided by the use cases, which is why even the agilists still use them.