Previous | Table of Contents | Next |
A stereotype defines how an existing metaclass may be extended, and enables the use of platform or domain specific terminology
or notation in place of or in addition to the ones used for the extended metaclass.
Description
Stereotype is a kind of Class that extends Classes through Extensions.
Just like a class, a stereotype may have properties, which may be referred to as tag definitions. When a stereotype is applied
to a model element, the values of the properties may be referred to as tagged values.
Generalizations
•
“Class? on page 116
Attributes
No additional attributes
Associations
• icon : Image [*] Stereotype can change the graphical appearance of the extended model element by using attached icons. When
this association is not null, it references the location of the icon content to be displayed within diagrams presenting the
extended model elements.
Constraints
[1] A Stereotype may only generalize or specialize another Stereotype.
generalization.general->forAll(e |e.oclIsKindOf(Stereotype)) andgeneralization.specific->forAll(e | e.oclIsKindOf(Stereotype))
[2] Stereotype names should not clash with keyword names for the extended model element.
Semantics
A stereotype is a limited kind of metaclass that cannot be used by itself, but must always be used in conjunction with one
of the metaclasses it extends. Each stereotype may extend one or more classes through extensions as part of a profile. Similarly,
a class may be extended by one or more stereotypes.
An instance “S? of Stereotype is a kind of (meta) class. Relating it to a metaclass “C? from the reference metamodel (typically
UML) using an “Extension? (which is a specific kind of association), signifies that model elements of type C
can be extended by an instance of “S? (see example Figure 13.12). At the model level (such as in Figure 13.17) instances
of “S? are related to “C? model elements (instances of “C?) by links (occurrences of the association/extension from “S’ to
“C?).
Any model element from the reference metamodel (any UML model element) can be extended by a stereotype. For example in UML,
States, Transitions, Activities, Use cases, Components, Attributes, Dependencies, etc. can all be extended with stereotypes.
Notation
A Stereotype uses the same notation as a Class, with the addition that the keyword «stereotype» is shown before or above the
name of the Class.
When a stereotype is applied to a model element (an instance of a stereotype is linked to an instance of a metaclass), the
name of the stereotype is shown within a pair of guillemets above or before the name of the model element. If multiple stereotypes
are applied, the names of the applied stereotypes are shown as a comma-separated list with a pair of guillemets. When the
extended model element has a keyword, then the stereotype name will be displayed close to the keyword, within separate guillemets
(example: «interface» «Clock»).
Presentation Options
The values of a stereotype that have been applied to a model element can be shown as part of a comment symbol tied to the
model element. The values from a specific stereotype are optionally preceded with the name of the applied stereotype within
a pair of guillemets, which is useful if values of more than one applied stereotype should be shown.
If the extension end is given a name, this name can be used in lieu of the stereotype name within the pair of guillemets when
the stereotype is applied to a model element.
It is possible to attach a specific notation to a stereotype that can be used in lieu of the notation of a model element to
which the stereotype is applied.
It is a semantic variation point that a tool can choose to display or not stereotypes. In particular, some tools can choose
not to display “required stereotypes",?but to display only their attributes (tagged values) if any.
Icon presentation
When a stereotype includes the definition of an icon, this icon can be graphically attached to the model elements extended
by the stereotype. Every model element that has a graphical presentation can have an attached icon. When model elements are
graphically expressed as:
• Boxes (see Figure 13.13 ): the box can be replaced by the icon, and the name of the model element appears below the icon. This presentation option can be used only when a model element is extended by one single stereotype and when properties of the model element (i.e., attributes, operations of a class) are not presented. As another option, the icon can be presented in a reduced shape, inside and on top of the box representing the model element. When several stereotypes are applied, several icons can be presented within the box.
• Links: the icon can be placed close to the link.
• Textual notation: the icon can be presented to the left of the textual notation.
Several icons can be attached to a stereotype. The interpretation of the different attached icons in that case is a semantic
variation point. Some tools may use different images for the icon replacing the box, for the reduced icon inside the box,
for icons within explorers, etc. Depending on the image format, other tools may choose to display one single icon with different
sizes.
Some model elements are already using an icon for their default presentation. A typical example of this is the Actor model
element, which uses the “stickman? icon. In that case, when a model element is extended by a stereotype with an icon, the
stereotype’s icon replaces the default presentation icon within diagrams.
Style Guidelines
The first letter of an applied stereotype should not be capitalized. The values of an applied stereotype are normally not
shown.
Examples
In
Figure 13.12
, a simple stereotype Clock is defined to be applicable at will (dynamically) to instances of the metaclass Class.
Figure 13.12 - Defining a stereotype
In
Figure 13.14
, an instance specification of the example in Figure 13.12 is shown. Note that the extension must be
composite, and that the derived isRequired? attribute in this case is false. Figure 13.14 shows the repository schema of the
stereotype “clock? defined in Figure 13.12. In this schema, the extended instance (:Class; “name = Class?) is defined in
the UML2.0 (reference metamodel) repository. In a UML modeling tool these extended instances referring to the UML2.0 standard
would typically be in a “read only? form, or presented as proxies to the metaclass being extended.
(It is therefore still at the same meta-level as UML, and does not show the instance model of a model extended by the
stereotype. An example of this is provided in Figure 13.16 and Figure 13.17.) The Semantics sub-section of the Extension
concept explains the MOF equivalent, and how constraints can be attached to stereotypes.
metaclass
ownedAttribute
type
type
extensionownedAttribute
type
ownedEnd, memberEnd
memberEnd
Figure 13.14 - An instance specification when defining a stereotype
In
Figure 13.15, it is shown how the same stereotype
Clock can extend either the metaclass Component or the metaclass Class. It is also shown how different stereotypes can extend
the same metaclass.
Figure 13.16
shows how the stereotype Clock
, as defined in Figure 13.15, is applied to a class called
StopWatch.
Figure 13.16 - Using a stereotype
Figure 13.17 shows an example instance model for when the stereotype
Clock is applied to a class called StopWatch. The extension between the stereotype and the metaclass results in a link between
the instance of stereotype Clock and the (user-defined) class StopWatch.
Next, two stereotypes, Clock and Creator
, are applied to the same model element, as is shown in Figure 13.18. Note that
the attribute values of each of the applied stereotypes can be shown in a comment symbol attached to the model element.
«creator, clock»
StopWatch
Figure 13.18 - Using stereotypes and showing values
Changes from UML 1.4
In UML 1.3, tagged values could extend a model element without requiring the presence of a stereotype. In UML 1.4, this capability,
although still supported, was deprecated, to be used only for backward compatibility reasons. In UML 2.0, a tagged value can
only be represented as an attribute defined on a stereotype. Therefore, a model element must be extended by a stereotype in
order to be extended by tagged values. However, the “required? extension mechanism can, in effect, provide the 1.3 capability,
since a tool can in those circumstances automatically define a stereotype to which “unattached? attributes (tagged values)
would be attached.