A while ago I wrote about
use cases and user stories
and how I use both, starting with user stories for ease of estimation
and manageability and expanding them into use cases as a way to elicit
more requirements.
I just read a recent blog (wiki) entry by Alistair Cockburn (of "writing effective use cases" fame) called
"why I still use use cases".
Alistair explains that he sees (with companies he consults to) three main problems with user stories:
1. lack of context (what's the largest goal)
2. sense of completeness - that you covered all bases relating to a goal.
3. no mechanism for looking ahead at upcoming work.
I
think the first reason is partially dealt with by using themes,
although use cases provide more context if we also consider the brief
description, pre conditions and post conditions.
Also I am not sure
I agree (maybe I don't understand) the third one - since you can have a
backlog of future work regardless of the requirements methodology you
use.
The second point, seems to be around the same reason I
have for using use cases - elicitation of requirements. Indeed, you can
see that reading reasons 3 and 4 (of the 5 reasons Alistair mentions
for still using use cases) :
"
3. The extension
conditions of each use case provide the requirements analysts a
framework for investigating all the little, niggling things that
somehow take up 80% of the development time and budget. It provides a
look ahead mechanism, so the customer / product owner / business
analyst can spot issues that are likely to take a long time to get
answers for. These issues can and should then be put ahead of the
schedule, so that the answers can be ready when the development team
gets around to working on them. The use case extension conditions are
the second part of the completeness question.
4. The use case extension scenario fragments provide answers to the
many detailed, often tricky business questions progammers ask: "What
are we supposed to do in this case?" (which is normally answered by, "I
don't know, I've never thought about that case.") In other words, it is
a thinking / documentation framework that matches the if...then...else
statement that helps the programmers think through issues. Except it is
done at investigation time, not programming time. "
Alistair also says that working with short iterations means you have to break the use case into stories :
These days, iteration/sprint lengths are so short that it is not
practical to implement an entire use case in just one of them. That
means additional work is needed, to create user stories or backlog
items for each use case, track that each one get developed, and ensure
that the complete set of user stories or backlog items do indeed
deliver the subset of the use cases needed for the particular release.
I think that working just from the use case toward stories is
limiting, since it is many times easier to think up a user story and
figure out the larger context later on (along with the other details of
the use case). Also, as I've mentioned in the above mentioned blog
entry, user stories are also easier to estimate not just easier to
build.