UML types and
instances
This page is published under the terms of the licence
summarized in the footnote.
All
free-to-read materials on the Avancier web site are paid for out of income from
Avancier’s training courses and methods licences.
If you find
them helpful, please spread the word and link to the site in whichever social
media you use.
The Unified Modelling
Language (UML) started by incorporating best practices from object-oriented
programming and architectural description languages.
A stated objective is now to
provide system architects with tools for modelling business and similar
processes.
However, UML terms are still
somewhat oriented towards relations between the elements of object-oriented
software systems.
This paper explains why this
work does not follow UML.
In OMG Unified Modeling Language (OMG UML), Superstructure, V2.1.2, section
6.3 introduces the following naming patterns.
Types |
Instances |
Values |
Uses |
Classifier, Class |
Instance, Object |
InstanceSpecification |
Part, Role, Attribute, XXXUse (e.g., CollaborationUse)
|
Event |
Occurrence |
OccurrenceSpecification |
various (e.g., Trigger) |
Behavior |
Execution |
ExecutionSpecification |
various (e.g., ActivityNode, State), XXXUse
(e.g., InteractionUse) |
“Instance”
UML has two meanings for “instance”:
·
one narrower –
and instance of a classifer
·
one broader – an instance
of a type in UML
This work uses the term
“instance” to describe any thing that embodies any type.
“Classifier”
UML may appear to uses the
word “classifier” in a sense similar to “type” in this work
“A classifier is a classification of instances, it describes a set of instances that have
features in common.”
But UML has a narrower
meaning for “instance”, so this work favours the word type over classifier.
“Class”
UML uses the term “class” for
a particular kind of type – related to structural objects only – not
behavioural ones.
Others use the term class to
mean a set or a collection, rather than a descriptive type.
This work favours the word
type over class, except with reference to an object-oriented programming (OOP)
context.
“Manifestation”
UML arranges some of its
relations in a type hierarchy.
Dependency relation - changes to one related element can cause
changes in the other
Abstraction [a dependency relation] between elements that
represent the same concept at different levels of abstraction
Manifestation [an abstraction relation] in which one element
manifests/includes a specific implementation for, the features of another
Realisation [an abstraction relation] that exists between two
model elements when one of them must implement the behaviour that the other
specifies.
Implementation [a realisation relation] that specifies that the
realizing classifier must conform to the contract that the provided interface
specifies
Manifestation has a very
software-engineering specific meaning in UML, but stepping back from that, it
is the best fit to the type-instance relationship, which:
is a
two-way dependency – since a change
to either type or instance can break the relation
is an abstraction – since the type represents
the concept of an instance at a higher level of abstraction
is a manifestation - since instances manifest
features or rules declared in the type
may also
be a realisation – if instances
realize or implement behaviour that the type specifies
may also
be an implementation - if instances
must conform to a contract that the type specifies.
And within a model, a
type-instance relation is an association
– a structural relationship that connects an instance to a type.
The IBM web site summarises
UML relations in the table below.
Relationship type |
Description |
Abstraction |
An abstraction relationship is a dependency between model
elements that represent the same concept at different levels of abstraction
or from different viewpoints. You
can add abstraction relationships to a model in several diagrams, including
use case, class, and component diagrams. |
Aggregation |
An
aggregation relationship depicts a classifier as a part of, or as subordinate
to, another classifier. |
Association |
An association relationship is a structural relationship between
two model elements that shows that objects of one
classifier (actor, use case, class, interface, node, or component) connect
and can navigate to objects of another classifier. Even
in bidirectional relationships, an association connects two classifiers, the
primary (supplier) and secondary (client). |
Binding |
A
binding relationship is a dependency relationship that assigns values to
template parameters and generates a new model element from the template. |
Communication
path |
A
communication path is a type of association between nodes in a deployment
diagram that shows how the nodes exchange messages and signals. |
Composition |
A
composition relationship represents a whole–part relationship and is a type
of aggregation. A
composition relationship specifies that the lifetime of the part classifier
is dependent on the lifetime of the whole classifier. |
Control flow |
A
control flow is a type of activity edge that models the movement of control
from one activity node to another. |
Dependency |
A dependency relationship indicates that changes to one model
element (the supplier or independent model element) can cause changes in another
model element (the client or dependent model element). The
supplier model element is independent because a change in the client does not
affect it. The
client model element depends on the supplier because a change to the supplier
affects the client. |
Deploy |
A
deploy relationship shows the specific component that an instance of a single
node uses. In a UML model, a deploy relationship typically appears in
deployment diagrams. |
Directed
association |
A
directed association relationship is an association that is navigable in only
one direction and in which the control flows from one classifier to another
(E.g. from an actor to a use case). Only
one of the association ends specifies navigability. |
Extend |
An
extend relationship between use cases indicates that one use case, the
extended use case, can extend another use case, the base use case. An
extend relationship has the option of using the extended use case. |
Generalization |
A
generalization relationship indicates that a specialized (child) model
element is based on a general (parent) model element. Although
the parent model element can have one or more children, and any child model
element can have one or more parents, typically a single parent has multiple
children. In
UML 2.0, several classes can constitute a generalization set of another
class. Generalization relationships appear in class, component, and use case
diagrams. |
Implementation |
An
implementation relationship is a specialized type of realization relationship
between a classifier and a provided interface. The implementation relationship specifies that the realizing
classifier must conform to the contract that the provided interface
specifies. |
Include |
An
include relationship between use cases specifies that an including (or base)
use case requires the behavior from another use
case (the included use case). In
an include relationship, a use case must use the included use case. |
Manifestation |
A
manifestation relationship shows which model elements, such as components or
classes, are manifested in an artifact. The artifact manifests, or includes, a
specific implementation for, the features of one or several physical software
components. |
Note
attachment |
A
note attachment relationship connects a note or text box to a connector or
shape. A
note attachment indicates that the note or text box contains information that
is relevant to the attached connector or shape. |
Object flow |
An
object flow is a type of activity edge that models the flow of objects and
data from one activity node to another. |
Realization |
A realization relationship exists between two model elements when
one of them must realize, or implement, the behavior
that the other specifies. The
model element that specifies the behavior is the
supplier, and the model element that implements the behavior
is the client. In
UML 2.0, this relationship is normally used to specify those elements that
realize or implement the behavior of a component. |
Usage |
A
usage relationship is a dependency relationship in which one model element requires the presence of another
model element (or set of model elements) for its full implementation or
operation. The
model element that requires the presence of another model element is the
client, and the model element whose presence is required is the supplier. Although
a usage relationship indicates an ongoing requirement, it also indicates that
the connection between the two model elements is not always meaningful or
present. |
Footnote: Creative Commons Attribution-No Derivative Works Licence
2.0 07/01/2016 13:07
Attribution: You may copy, distribute and display this copyrighted work
only if you clearly credit “Avancier Limited: http://avancier.co.uk” before the start and
include this footnote at the end.
No Derivative Works: You may copy, distribute, display only complete and verbatim
copies of this page, not derivative works based upon it.
For more information about the
licence, see http://creativecommons.org