Some Use Case Terminology
A use case represents a system (or class) function, not an object or a class.
Use cases can have attributes (priority, risk, state, etc.) and associations to actors (users and remote systems).
A use case instance is an execution of a use case, which is initiated by a message from an associated actor.
A use case instance can be understood as an actor-system interaction. An interaction is a sequence of the form:
M1, A1, M2, A2, M3, A3, ...
where Mi is a message (i.e., a send or call event) from an actor (not necessarily the initiating actor, except for M1), and Ai is a system action (possibly sending a message to an actor).
The behavior of a use case refers to the set of all possible interaction sequences. The behavior may be described using a finite state machine (FSM). The interaction sequences may be grouped according to patterns (normal, error, exceptions, etc.) These patterns may be described using scenarios. A scenario can be described informally by a script or more formally by using a sequence diagram consisting of an actor object and a system object:
There are two types of relationships between use cases: generalization and dependency. There are two types of dependencies: extension and inclusion. Generally speaking, specializations, inclusions, and extensions add behavior to a use case.
AAA generalizes BBB. BBB specializes AAA. This means BBB inherits all of the attributes, actor associations, behavior, and dependencies of AAA, but not vice-versa. BBB may modify or extend the behavior and attributes of AAA. AAA and BBB are both instantiable (unless AAA is abstract). This means an actor can send an initiating message to AAA or BBB.
BBB includes CCC. This means CCC is a supporting function explicitly called by BBB. Usually, CCC cannot be directly instantiated by an actor. Usually, CCC is included in several use cases.
DDD extends BBB. This means DDD adds additional behavior sequences to BBB. Usually, DDD cannot be directly instantiated by an actor.
Calls to DDD are conditional and implicit, while calls to BBB are unconditional and explicit. In other words, BBB knows about CCC, but may not know about DDD.