Functional Use Case

A functional use case is much more specific than the requirements use case we just saw. Most requirements use cases will actually encompass a number of more detailed functional use cases. These are used less for determining system requirements than for defining required functionality. They are also very useful for identifying business objects.

Let's use a single sentence from the Video Rental requirements use case, above, as an example of a functional use case:

The customer then brings the videos to the front counter where an attendant

identifies the customer, makes note of each video, and calculates the total rental price.

There are a lot of things going on here, but the description is not nearly detailed enough to fully describe the functionality. All it does describe, of course, are the requirements. So let's develop a use case that defines the functionality to support these requirements:

Functional Use Case for Video Checkout

The customer places the videos on the counter and provides an ID card to the attendant. The attendant chooses the video rental menu option on the screen, then enters the customer's ID number by scanning the ID card with a barcode reader. This automatically retrieves the customer's name and address from the database, and displays the information on the screen. The entry point is left in position to enter the first video's ID number.

The attendant takes each video, in turn, and uses the barcode reader to enter the video's ID number by scanning the video jacket. This automatically retrieves the video's description and rental price, and displays them on the screen next to the video ID number.

As each video ID number is entered, a subtotal price is calculated and displayed at the bottom of the screen. Based on the subtotal price, the system automatically calculates and displays the tax and the end total.

Of course, this is only a small part of the whole picture. If this was more than just an example, we would continue through the requirements use case, building more functional use cases to fill in the rest of the details. But let's keep up our momentum: it's time to identify some real functionality from this use case.