I was recently asked to prepare a handout giving the basics of use cases for an upcoming training session. It struck me as odd that I needed to start from square one for a model that seemed standard. Use cases, once ubiquitous, have largely been replaced by process flows and other less text-heavy models.
As one of ArgonDigital’s most recent hires, I have not been around software development long enough to see models go in and out of style. Word around the office is that use cases are poised for a comeback. With that, maybe we could all use a use case refresher.
For the summary document I prepared, I read the introductory chapters of Daryl Kulak and Eamonn Guiney’s 2000 book Use Cases: Requirements in Context. According to Kulak and Guiney, a use case is a tool that documents user-system interactions, showing only what a system does and removing the mechanics of how the system performs the operations.
A use case is presented as a table with important fields listed, including a name, a unique identification, a description, actors, triggers, pre- and post-conditions, a main course of events, and alternative courses and exceptions.
The main course details the normal, “happy path” course of events that occurs in a user-system interaction. Alternative paths and exceptions are listed to document when the process strays from the “happy path.”
When I think of processes that rely on user-system interaction, my mind jumps to the favorite disruptive app of wide-eyed millennials like myself: Uber. If you don’t already know, Uber is a ridesharing company that connects riders and drivers via a smartphone app.
Drivers use their personal cars to pick up passengers and ferry them to their destination of choice. Meanwhile, the system calculates a fare using the car’s GPS location. Uber charges the passenger’s linked credit card. Uber then slices off a nominal fee, and the rest accrues to the driver’s Uber account.
For the sake of demonstration, I prepared a use case for a user requesting a ride with UberX, the company’s most basic ride-sharing service.
|Name||Customer Requests UberX Ride|
|Description||How a user will request a ride|
|Actors||User, Driver, and System|
|Organizational Benefits||Connect riders with drivers for cashless ridesharing|
|Frequency of Use||Each time a user requests a ride.|
|Triggers||User clicks “Request UberX”|
|Assumptions||1.The user is located within an Uber market2. There is at least one available driver within the maximum range of the user.|
|Preconditions||User has an authenticated Uber account|
|Postconditions||The driver has dropped off the user at the desired location and the appropriate transaction occurs|
|Main Course |
|1. User selects “Set Pickup Location” at current or desired pickup location2. User selects “Request UberX”3. System sends user pickup location and customer rating to available drivers4. The closest driver accepts ride in app and the system routes them to user location (AC1)5. User is notified that a driver is on the way, listing car make, model, license plate number, driver photo, and driver rating6. System notifies user via text message when driver is one minute away from the pickup location|
7. Driver and user meet at pickup location
8. User or driver input drop-off location in app
9. Driver selects “Begin Ride” on app, starting the fare calculation
10. System routes driver from pickup location to drop-off location and displays navigation
11. Driver drives user to requested drop-off location
12. When drop-off occurs, driver selects “End Ride” in the app
13. System bills the user’s credit card for the final fare amount
14. System credits administrative fee to Uber
15. System credits the remaining balance to driver’s Uber account
16. Driver is prompted to rate the user before looking for next ride
17. User is prompted to rate the driver the next time they open the Uber app
|Alternate Courses||AC1: Closest driver does not accept rideIn step 4, if the closest driver does not accept the ride request, the next closest driver is notified until a driver accepts or all drivers within the maximum radius have been notified.|
|EX1: Driver cancels the ride while the ride is in progress1. The ride ends and the user exits the vehicle2. The system does not charge the user for the ride3. The system prompts the driver to provide an explanation for the canceled rideEX2: User cancels ride request before pickup occurs1. The user selects “Cancel Pickup” in the app|
2. The driver is notified that the pickup has been canceled and is prompted to select the next ride