Requirements

Requirements are what the software must do.

Specifically: a requirement is a singular need which must be satisified for the system to work correctly.

E.g., an ATM must allow a customer to withdraw money from his/her account.

Issues:

Use cases

Use cases are a way of describing how the system will satisfy its requirements.

A use case shows a scenario where one or more actors use the system.

Properties of a use case:

Note that although the use case will generally specify a sequence of steps, these steps must focus on WHAT the actor or actors experience, and NOT how the system achieves the functionality. So, the use case must not mention objects, methods, code, etc. The use case should also not describe the user interface: that is a separate activity.

There may be multiple paths through a use case. For example: if an error occurs, or if there is "optional" behavior seen in some cases, etc.

There are different ways of writing a use case. For some use cases, a single sentence might suffice. For more fully-specified use cases, listing a series of numbered steps is a good approach. The format described in the HFOOA&D book is a good one. As with any documentation, diagram, model, etc., the purpose is the specify an aspect of the system in enough detail to be useful, but not too much detail. Excessive detail is a waste of time.

Example: Automated Teller Machine

Who are the actors? [Ask for suggestions.]

What are some of the requirements?

What are some scenarios in which the ATM system is used?

[Pick a scenario. Solicit ideas to construct a use case.]

What requirement or requirements did this use case address?