Use Case Diagram

A use case diagram is a graphical depiction of a user’s possible interactions with a system.

Note, that use-cases are not intended to have any sequencing between them. If you want to sequence behaviors, you should consider e.g. activity or sequence diagrams.

Diagram Model

Name

Graphical Representation

Description

Actor

../../../_images/usecase-actor.png

Models a role that an external actor or external system can take during an interaction with the system. Actors are always outside the system boundary.

Use Case

../../../_images/usecase-usecase.png

Defines a fixed set of actions that are provided by the system. Use cases must have a visible benefit for one or more actors.

Association

../../../_images/usecase-association.png

An association models a relationship between actors and use cases.

Include

../../../_images/usecase-include.png

The include relationship supports reuse of use cases. Each time, the including use case is called, the included use case is also executed (similar to the call of a subfunction).

It is important to avoid inclusion cycles.

Extend

../../../_images/usecase-extend.png

An existing use case can be extended. Please note the direction of the arrows. It’s not an “extended by” logic!

Condition

../../../_images/usecase-condition.png

An extend relationship can be annotated with a condition. If that condition applies, the corresponding use case is taken into account.


To model the annotation, use a note shape in white/grey/black color (not the regular note color as described in Annotations).

Specialization

../../../_images/usecase-specialization.png

Generalization defines a relationship between a general and a more specific element. Use cases and actors can be generalized.

Realize

../../../_images/usecase-realize.png

Used to show which classes, components, etc. realize the use case. Usually, this relationship is not modelled in a use case diagram.

Example

../../../_images/usecase.drawio.png