Ever since user stories were introduced to the world they have been compared to use cases. There has been a small war between the agilists promoting user stories and the “mainstream analysts” holding on to their use cases. But is all this rivalry really necessary?
When comparing use cases and user stories, they turn out to be different in every way:
So to me they simply serve different purposes
User stories help you focus on developing small increments at a time allowing you to quickly receive feedback from users. By doing this:
Use cases provide you with a high level overview of the goals a user can accomplish with the system. Having this overview will allow you to create user stories while always keeping in mind the big picture.
Use cases are often linked to waterfall development processes. But to me use cases are only waterfall if you use them in a waterfall way. You don’t need to specify use cases up front, define all possible aspects of a use case or collaborate with developers by handing over a document.
Use cases are only as waterfall as the mindset of the person using them
And if the requirements are clear to you, it will not cost you any additional time to specify a use case. If it is taking you a lot of time, you probably didn’t get the requirement well enough.
Before user stories become user stories they are epics. Epics are usually the same size as use cases, but they evolve differently from this point on. Use cases are further detailed with descriptions, pre- and postconditions and maybe even a design. Epics however are split into smaller user stories, given some context from the user and extended with acceptance criteria.
To me it only makes sense to combine them. This allows us to benefit from the strengths of each technique and to avoid their weaknesses. And this is how I believe it can be done in a just-in-time and just enough manner:
At the start of your project:
When preparing an iteration:
And now you have it all: incremental, iterative software delivery while taking into account the high level scope and a minimum of permanent documentation of the system.
(I haven’t mentioned aspects such as information and non functionals, not because I don’t find those crucial, but because this is not the focus of the post)
Then you're in for a treat! Visit Sarah Denayer's personal blog, which offers many more hours of excellent reading material!