Further, the UML contains specific modeling constructs that support
realizing
the use case in the implementation. Specifically, use cases are realized via
collaborations
, which are
societies
of classes, interfaces, subsystems, or other elements that cooperate to achieve some behavior. A common UML stereotype, the
use-case realization
, is used for this purpose and is simply a special form of collaboration, one that shows how the functionality of a specific use case is achieved in the design model.
Collaborations, then, are key modeling constructs within our area of concern, for it is within the collaborations that you see the systematic and aggregate behavioral aspects of the system, or how the system achieves its overall goals. These key constructs deliver some of the "bigger-than-the-sum-of-its-
parts
behavior" through the activities of participating classes and other logical elements. The graphical symbol for a collaboration is a simple
dotted
-line ellipse with a
name
inside, as shown in Figure 25-3. (The UML authors have commented that the similarity to use-case notation is intentional.)
Figure 25-3. Symbolic representation of a collaboration
Collaborations have another useful aspect. Since the collaboration represents the way in which the use case is implemented in the design model, we now have a method we can use to trace from the requirements
expressed
in the use-case model into the design (Figure 25-4).
Figure 25-4. A use-case realization in the design model
Structural and Behavioral Aspects of Collaborations
Collaborations have two aspects: a structural part that specifies the static structure of the system (the classes, elements, interfaces, and subsystems on which the implementation is structured) and a behavioral part that specifies the dynamics of how the elements interact to accomplish the result. However, a collaboration is not a physical thing; it is just a description of how cooperating elements of the system work together. To know more about how the collaboration is affected, you must look inside.
Inside the collaboration, a class diagram can represent the structural aspects. Figure 25-5 shows a class diagram for the HOLIS Emergency Message Sequence collaboration. For behavioral aspects, you might choose to model its behavior by using an interaction diagram such as the one shown in Figure 25-6.
Figure 25-5. Class diagram for the HOLIS Emergency Message Sequence collaboration
Figure 25-6. Behavioral aspects of the HOLIS Emergency Message Sequence collaboration
Using Collaborations to Realize Sets of Individual Requirements
We've used the mechanism of the use case and the use-case realization to help us cross a very difficult
chasm
”the gap between the statement of requirements and the design of a system that fulfills the requirements. We applied use cases to
demonstrate
this technique. Note that it is also true that we can model the implementation of any individual requirement, or any set of requirements, as a collaboration and apply that technique to achieve requirements-to-design traceability for those requirements as well (Figure 25-7). Although the use case does have some special properties, namely, the sequence of events, we can often
group
our itemized requirements to accomplish a similar objective. With this
slight
extension, we have a meaningful way to use requirements of all types to drive design and implementation.
Figure 25-7. Model of requirements implementation as a collaboration
Design elements that support nonfunctional requirements such as safety, performance, and so on can be
modeled
this way as well. Indeed, we already knew that many nonfunctional requirements require a coordinated effort on the part of many classes, subsystems, or systems to achieve the desired result; now we have a way to express that directly.