Advertisements

Use Case Driven Scrum


In today’s software development community, Use Cases are often frowned upon.  A quick search on Google for “Use Cases Scrum” and you quickly find that they are put up against User Stories and quickly lose the fight.  I believe in Use Cases because they force stakeholders and the development team to have the right discussions in a structured way.  They also expose many things you will not think about when writing requirements in other ways.

But the art of writing Use Cases is dying.  “Uncle Bob” Martin has said that it shouldn’t take longer than 15 minutes to teach someone how to write use cases[1].  He’s wrong and unfortunately hyperbolic.  But these are the Agile times we live in, when everything invented before the Protestant-like reformation is looked upon as sacrilege.

I believe in Scrum.  I think it can wholly benefit organizations with small teams that need to be more nimble or agile.  But I don’t think Scrum is exclusive from Use Cases.  Here is the definition of a product backlog from the Bible of Scrum, The Scrum Guide:

The Product Backlog is an ordered list of everything that might be needed in the product and is the single source of requirements for any changes to be made to the product.

Notice it says requirementsThe Scrum Guide does not say how to do requirements (User Stories come from XP), it just says that they need to be in the Product Backlog.

So this is where my proposal for Use Case – Driven Scrum starts.  Put your Use Cases in the Product Backlog.  Now one of the criticisms of Use Cases is that they are too much documentation and take too long to write.  Well, don’t write them out then!  Just start by identifying the Use Cases you should do (give only their title).  For example, put the Use Case “Log into system” into the backlog, but don’t bother to detail it out at first.

Scrum practitioners know that undefined product backlog items belong at the bottom and as they move up in priority, they become better groomed as the following picture illustrates.

product_backlog_horizons_details_priorities2

This leads to the second part of my proposal.  Refine the Use Cases as they move up the backlog.  Add the basic flow or maybe the primary actors.  This becomes part of your Product Backlog grooming.

Finally, most full use cases with all their basic and alternative flows will not fit into one sprint.  So the final part is to break them down into scenarios that will fit into one sprint.  Mind you that use case flows and scenarios are not the same!  The basic flow is always a scenario, but mixing in the alternative flows is where it gets interesting. J

The tactics of breaking product backlog items up really depends on the tool you use for tracking your work.  Spreadsheets, Rally, and Team Foundation Server all have different ways to do this.  I hope you’ve enjoyed this article and would love to hear your feedback below.  Good luck in your journeys of software development!

[1] http://alistair.cockburn.us/get/2231

Advertisements

Software Requirements Evolution


Software Requirements are evolving to keep up with users’ demanding appetite for applications. Simple “The system shall” statements have grown into User Stories and Storyboards. It used to be that talking about the GUI was verboten when gathering requirements. We software practitioners knew how to use the magic of creating software and the lowly users just needed to tell us what they needed and we would pull the software solution out of our proverbial hat. Not so anymore. Practically everyone has a smart phone or smart device (even my 3 year old) and the word “app” is universal thanks to the iPhone. Can I really gather requirements from my 3 year old for her new drawing app using Use Cases? Obviously no. Granted,the use cases may be used by the software developers but my 3 year old can’t even read for Christ’s sake.

Most users now know if they want a mobile app, web app, or desktop app. They know the differences and strengths of using these from years of experience. That’s why I think a more agile way of gathering requirements where quick prototypes and storyboards are used to gather feedback are meeting users’ requirements much better. If it’s a web app, well you have obviously constrained the application down to what HTML, JavaScript, CSS, etc. can do. So why not make a quick prototype of that? If they want an iPhone app, well there’s a pretty set style of doing that set by Apple. Obviously, we software professionals still have a part to play by asking, “Are you sure you won’t want to eventually have an app on the Android too?”. This leads to conversations about different architectures, technologies, and the cost/benefit analyses of each. But older ways of doing Software Requirements are becoming decreasingly beneficial with the changing “tech savvy” of users.

Please don’t get me wrong, there are still places to use Use Cases for certain kinds of projects. They are a tool in any good Software Requirements professional’s toolbox. But newer tools are coming out that need to be considered much more to keep up with software professionals’ ever changing user base.