Tuesday, 08 November 2011 11:23

User Requirements and Use Cases

Written by 
Rate this item
(0 votes)

FEATURENov8th

The Business Analyst as Explorer, Part 3 of 6 by Karl Wiegers

The business requirements will help the business analyst identify potential user classes for the product. The objective of exploring user requirements is to understand what members of these user classes expect to be able to do with the product and how the product will let them achieve specific goals. The user requirements must align with the higher-level business goals captured in the business requirements.

Some user goals might pertain to tasks the users must perform; use cases often are an effective way to record these tasks. Other user goals, though, might indicate the importance of specific nonfunctional requirements. Examples include the ability to complete a task within a certain length of time, and the ability to access a system remotely from a smart phone. Therefore, user requirements also encompass the users’ expectations about performance, availability, usability, reliability, and other quality attributes.

It’s also important to surface pertinent business rules, design and implementation constraints, and assumptions the various stakeholders might be making. The objective is for the BA to understand what customers are envisioning so he can record both functional and nonfunctional requirements that will guide the development team’s work. Furthermore, documented requirements and user acceptance criteria will help testers determine whether the delivered product satisfies its requirements.

When eliciting user requirements, the BA typically works with a number of key users who represent specific user classes. The BA needs to ask questions that will help those users describe the goals they want to accomplish with the help of the system. For most types of software projects, this is far more valuable than the traditional focus of requirements discussions on system features and functions. The emphasis on user tasks or goals is the essence of the use case approach to requirements elicitation. Scenarios and stories also emphasize a usage-centric perspective to requirements elicitation.

Instead of asking, “What do you want?” or even “What do you want the system to do?” an approach based on usage and user goals asks, “What do you need to do with the product?” Your users might not be accustomed to a dialogue of this nature. It can be difficult to shift their thinking from the traditional focus on the system itself, so some education of your user representatives is in order. It’s not realistic to think you can simply ask the users what their use cases are and get a meaningful response. Even if you explain what use cases are, don’t expect users to hand you a tidy, precise, and complete list of their use cases. The BA must work with the input that users provide to determine the real goals they have in mind.

I sometimes use the example of an airline flight reservation kiosk when describing use cases in my training seminars. Instead of just asking the class what their use cases would be for such a product, I ask, “What are some things you would imagine doing with an airline flight reservation kiosk?” A variant question is, “What are some reasons you would want to use an airline flight reservation kiosk?” During the class discussion, some of the responses are indeed candidates for use cases, although they still need to pass through a filter that asks “Is this in scope?” before we determine that they belong in the system we’re exploring. These use cases include:

  • Find Available Flights for an Itinerary
  • Make a Flight Reservation
  • Select Seats
  • Print an Itinerary
  • Change a Reservation
  • Cancel a Reservation
  • Check on Flight Status (This one might not be in scope because it requires real-time access to current flight information from the airlines. The business requirements should indicate whether this sort of capability will help us achieve our business objectives.)

Notice that all these use cases begin with a verb. This is a standard convention for naming use cases. The BAs should listen for responses from customers that do not begin with a verb and discuss the intent behind each such response. Once when I held this discussion in a class and asked, “What are some things you would imagine doing with an airline flight reservation kiosk?” one student simply said, “Weather.” This one-word response prompted me to explore exactly what aspect of weather the student had in mind, to find an appropriate verb. Did she want to create the weather, change the weather, or what? I learned that she wanted to check the weather forecast at the originating, destination, and connection cities for a specific flight itinerary. Hunting for the verb the customer has in mind is a way to discover the task or goal behind the initially presented input.

Just because a user provides a response that begins with a verb doesn’t mean that it’s actually a use case. Someone might suggest as a possible use case, “Enter my frequent-flier number.” A use case should describe a standalone task: A user has a specific goal in mind, walks up to the system, interacts with it in some way, and—if all goes well—achieves the goal and walks away happy. However, no one would ever walk up to this kiosk, enter his frequent-flier number, and feel fulfilled. I needed a follow-up discussion to determine what the user was really trying to accomplish by entering a frequent-flier number. Some possibilities are:

  • See how many miles he has accrued.
  • Purchase a ticket using frequent-flier miles.
  • Purchase a seat upgrade using frequent-flier miles.
  • See if he has received mileage credit from a previous flight, car rental, or hotel stay.
  • Recall his stored profile so that he doesn’t have to reenter a lot of information when making a reservation.

The first four of these items are use cases, something a user might do as a standalone task. The last one, though, doesn’t represent a discrete task. It’s likely part of some other use case, such as Make a Flight Reservation. The main point here is that the BA must expect to work with users to determine whether a piece of presented input is a user task, a bit of system functionality, a quality attribute, a constraint, a business rule, extraneous information, or something else.

(adapted from More about Software Requirements by Karl Wiegers)

Don’t forget to leave your comments below.


Karl Wiegers is Principal Consultant at Process Impact, www.ProcessImpact.com. His interests include requirements engineering, project management, peer reviews, and process improvement. His most recent book is a memoir of life lessons titled Pearls from Sand: How Small Encounters Lead to Powerful Lessons.

Read 9355 times Last modified on Monday, 02 April 2012 16:14
Karl Wiegers

Karl Wiegers is Principal Consultant at Process Impact, www.ProcessImpact.com. His interests include requirements engineering, project management, peer reviews, and process improvement. His most recent book is a memoir of life lessons titled Pearls from Sand: How Small Encounters Lead to Powerful Lessons. Karl produced this article for Enfocussolutions.

Comments  

 
0 # Vernon Kelly 2011-11-08 05:37
Karl, I love your work and have benefitted greatly from it. Thank you for sharing your knowledge and wisdom. You are a bright light in an industry being clouded by shadowy figures and dark clouds.
Reply | Reply with quote | Quote
 
 
0 # Karl Wiegers 2011-11-08 06:09
@Vernon: Thank you for your very generous comments. I'm glad you've found my work helpful. I'd love to know who the "shadowy figures" are. I have my own thoughts about this.... :-)
Reply | Reply with quote | Quote
 
 
0 # Cecilie Hoffman 2011-11-08 09:48
Karl, nice to see your articles here on BA Times. I've been recommending your books for years.
Reply | Reply with quote | Quote
 
 
0 # Karl Wiegers 2011-11-08 10:51
@Cecilie: Thanks much. I'm glad you've enjoyed my books!
Reply | Reply with quote | Quote
 
 
0 # atul 2011-11-08 23:44
thanks for the article,.... nice and simple language..
Reply | Reply with quote | Quote
 
 
0 # eric 2011-11-09 03:19
Spot on. Love your work.
Reply | Reply with quote | Quote
 
 
0 # Khanyapa Molapo 2011-11-09 16:13
It is always enlightening to read your material. It brings clarity to what we do daily and helps enrich the quality of the service we provide our clients.
Reply | Reply with quote | Quote
 
 
0 # Sherry Hamlin 2011-11-10 01:03
Enjoy your articles Karl, keep them coming. I had the pleasure of attending one of your classes in Cincinnati recently. You have a real skill for making a (sometimes) dry subject appealing. Thanks!
Reply | Reply with quote | Quote
 
 
0 # Karl Wiegers 2011-11-10 01:24
I'm grateful to everyone for their kind comments -- thank you so much. You can visit www.processimpact.com or www.projectinitiation.com if you're interested in seeing more of my articles and other useful things.
Reply | Reply with quote | Quote
 
 
0 # Larry Marturano 2011-11-14 02:36
Thanks for sharing, Karl. I agree with most of your points, but there is one caveat I'd like to point out: people are notoriously bad at predicting what they want when asked. They are also unreliable when asked what their jobs really entail, especially when they are not in the context of their real work. Instead of generating use cases from what people say they want or what they might imagine doing, it's a better bet to actually observe and model the observed workflow. Shadowing is actually called out as an elicitation technique in the BABOK in 9.18 but it's unfortunate how rarely this is used in IT systems development practice.
Reply | Reply with quote | Quote
 
 
0 # Karl Wiegers 2011-11-14 03:04
@Larry: I agree, shadowing is a useful technique. An outside observer often can generalize, say, a use case by observing someone perform a specific instance of a business operation. One of my training clients is a car rental company. The first thing a new developer does when joining a company is to spend a day at a car rental site to see what users really do and how they use the information systems. It's also important to get input from more than just one representative of each user class if possible, because users are not homogeneous in their operations.
Reply | Reply with quote | Quote
 
 
0 # Cedar 2011-11-22 22:57
Interesting read, I always enjoy your articles as they provide so much insight and information in a simple and interesting way. I find that your books are also very user friendly and practical. Keep it coming Karl. Thank you so much
Reply | Reply with quote | Quote
 
 
0 # Karl Wiegers 2011-11-23 12:14
Thanks very much, @Cedar. "Simple, interesting, user-friendly, and practical" are my favorite comments to receive on my writing -- I appreciate it! Karl
Reply | Reply with quote | Quote
 
 
0 # Mark Krebs 2011-11-30 01:18
Where can I find the complete series of this article?
Reply | Reply with quote | Quote
 
 
0 # Karl Wiegers 2011-11-30 02:46
@Mark: The first article in the series is at http://www.batimes.com/articles/an-inquiry-not-an-inquisition.html. The second is at http://www.batimes.com/articles/eliciting-business-requirements.html. There are three more articles in the series that haven't been posted yet. This series is adapted from my book "More About Software Requirements".
Reply | Reply with quote | Quote
 

Add comment