Use cases are another tool for capturing functional requirements of the system. They define a goal-oriented set of interactions between external actors (parties outside of the system that interact with the system) and the system. A use case is initiated by the user, with a particular goal in mind, and completes successfully when that goal is satisfied. The system itself is treated as a “black box” and the interactions with the system are perceived as being outside the system to allow the use case to capture who does what with the system and for what goal without dealing with system internals.
A complete set of use cases defines the behaviour required of the system (bounding the scope) by specifying all the ways to use the system.
To create a use case:
- Identify all the different users of the system
- Create a user profile for each category of user (including all the roles the users play that are relevant to the system)
- For each role, identify the significant goals the users have that the system will support
Create a use case for each goal. Steps in higher level use cases may be treated as goals for lower level sub-use cases where more detail is collected.
Use cases can be illustrated in diagrams or through written documentation. A use case document should include information such as use case identifier, description, list of actors, assumptions for successful termination of the use case, steps (interactions between actors and system to achieve the goal), any variations in the steps of the use case, non-functional requirements the use case must meet (optional) and issues that remain to be resolved for the use case.
Example use case diagram