|
Home UML FAQ UML Specifications UML Tools UML Training UML Publications UML Processes UML News Other UML Resources Visual Modeling Forum BPMN Forum SysML Forum
Next
|
Questions
Answers
- What
is the UML?
The Unified Modeling
Language (UML) is a general-purpose modeling
language for
visualizing, specifying, constructing and
documenting the artifacts of software-intensive
systems. The UML was originally derived from
the object modeling languages of three
leading object-oriented methods: Booch,
Object Modeling Technique (OMT) and
Object-Oriented Software Engineering (OOSE).
It was first added to the list of OMG
adopted technologies in 1997, and has since
become the industry standard for modeling
software-intensive systems.
BACK TO TOP
- What is the current version of
the UML specification, and how can I obtain
a copy?
The current version of the
UML specification is UML 2.2. You can download the UML
2.2 specification from the OMG
web or the
Specifications page of this web.
BACK TO TOP
- What
major improvements were made in the UML
2.0 major revision?
The UML
2.0 major revision includes many significant
improvements over UML 1.x. These include,
but are not limited to the following:
- Hierarchical decomposition of
structures and support for component-based
development. UML 2 introduces a major
new diagram type, Composite Structure
diagrams, that includes new constructs
(Parts, Ports and Connectors) which allow
you to recursively decompose a a
system-of-systems into systems, subsystems,
components, sub-components, etc.
- Hierarchical decomposition of
behavior. UML 2 enhances Activity and
Sequence diagrams so that you can
recursively decompose behaviors into
sub-behaviors. For example, you can
decompose Action Nodes into sub-Action
Nodes, sub-sub-Action Nodes, etc.
- Improved integration between
structural and behavioral models. When
properly applied UML 2 Parts allow you to
seamlessly integrates structural and
behavioral diagrams. For example, the same
EFI Part in a Composite Structure diagram
for an Engine might also be reused for a
swimlane partition in an Activity diagram
for Activate Cruise Control.
- Enhanced support for executable
models. UML 2 includes a fully
integrated Action Semantics that enables
executable models capable of driving
simulations and automatically generating
programming code.
BACK TO TOP
-
What
significant changes were made in the UML
2.1 minor revision?
The UML
2.1 minor revision changes address
implementation issues, such as the
implementation of redefinition and
bidirectional associations in the metamodel.
Consequently, these minor changes affect
modeling tool vendors more than modelers
(users). BACK TO TOP
-
What are the outstanding issues associated
with UML 2.x, and how can they be addressed?
The following are some of the common
criticisms aimed at UML 2.x:
- Language bloat: the
language is gratuitously large and complex.
- Imprecise and inconsistent
semantics: The language contains are
large number of "semantic variation points",
which are places where the vendors could not
agree, so they were purposefully left
ambiguous. In addition, the various
behavioral "sublanguages" for Interactions
(Sequences), Activities, and State Machines
are inconsistent with each other and poorly
defined in relationship to the Action
semantics.
- Non-intuitive and inconsistent
notation: The notation is a
hodgepodge of notations from several legacy
notations (Booch, OMT, Objectory, SDL, and
MSCs) that is inconsistent with each other
and difficult to learn and remember.
- Dysfunctional interchange format:
The XMI for UML 2.x is incompletely defined
and inconsistently implemented, so there is
no straightforward mechanism for exchanging
UML 2.x models between modeling tools. (This
issue is discussed further in response to
the question "Why can't I easily interchange UML models between
modeling tools?" below.)
None of these issues
is minor, so they can only be addressed in a
major revision to UML 2.x (i.e., UML 3.0) or
in a new modeling language that learns from
the mistakes of UML 2.x.
BACK TO TOP
- Who
maintains the UML specification and how
is it updated?
The
Object
Management Group (OMG) maintains the UML
specification. As with any OMG
specification, minor revisions to UML are
effected by Revision Task Forces (RTFs) and
major revisions are effected by Requests for
Proposals (RFPs). The OMG process for
revising UML is explained in the article "UML
2001: A Standardization Odyssey," by Cris
Kobryn, which can be downloaded from the
Papers & Articles
page of this web.
BACK TO TOP
-
Why can't I easily interchange UML models between
modeling tools?
While the
XMI (XML Metadata Interchange) standard
purports to facilitate the interchange of UML models, it has been largely ineffective
in practice. There are at least two technical reasons for
this. First and foremost, XMI attempts to
solve a technical problem far more difficult
than exchanging UML models; it attempts to
provide a mechanism for facilitating the
exchange of any language defined by the OMG's Metamodel Object Facility
(MOF).
Secondly, the UML 2.x Diagram Interchange
specification lacks sufficient detail to
facilitate reliable interchange of UML 2.x
notations between modeling tools. Since UML
is a visual modeling language, this
shortcoming is a showstopper for many
modelers who don't want to redraw their
diagrams.
Any modeler can empirically verify this
shortcoming by defining a UML 2.x model in
one modeling tool, and attempting to import
it into another modeling tool without any
loss of information.
If you are concerned that XMI doesn't work for whatever UML
tools you use or plan to use, you are encouraged to let UML
modeling tool vendors and the OMG know about your concerns by
contacting your tool vendor or sending an email to
issues@omg.org.
BACK TO TOP
-
How can I learn the
UML?
There are many UML
books, but as with any popular technology,
they are uneven in coverage and quality so
"let the reader beware." Some of the UML
books we have found useful may be found on
the UML Publications
page. As for tutorials, you can found a selected
listing of online tutorials that we found
useful on the Tutorials page of this web.
BACK TO TOP
-
How
can I help improve the UML?
Anyone can make submit problems or make
recommendations to improve UML by submitting
issues to the
issues@omg.org In addition, you can also
join the OMG and directly participate in one
of the UML Revision Task Forces.
BACK TO TOP
-
What UML modeling tools are available?
There are many modeling tools that support
UML. A selective list of modeling tools is
available on the UML Tools page of this web.
BACK TO TOP
-
What should I look for when selecting a UML
modeling tool?
To start with, you should assess you own
modeling requirements to determine what UML
support you need. Some things you may want
to consider include support for:
- compliance with the
UML specification for both notation and
semantics
- team development
- model simulation
and code-generation
- model interchange
with other UML tools
- tool customization
Please note that the
first support bullet may be problematic,
since at the time of this writing we know of
no UML modeling tool that completely
complies with the UML 1.1 specification
(which was adopted in 1997) let alone the
UML 1.5 specification (which was finalized
in H1 2003). Although UML vendors who
partially implements the UML specification
and claim compliance are expected to explain
how they partially comply via compliance
points, we know of no vendor that does this.
Consequently, you will likely need to
perform your own due diligence in this
regard.
Once you understand
your modeling requirements you will be
prepared to systematically evaluate modeling
tools to determine how well they meet your
requirements. We recommend that evaluate UML
modeling tools in several phases:
- "paper" evaluation:
initially evaluate tools choices via paper
and electronic sources, such as vendor
literature and analyst/expert reviews to
narrow your tool choices into a "short list"
of candidates. During this phase you may
also want to ask preferred vendors for
references of users who have applied the
tools in environments similar to yours.
- "hands-on"
evaluation: Perform a hands-on evaluation of
the tools selected in your short list. Make
sure that you use medium-to-large size
models (with hundreds or thousands of
classes) and exercise all the features in
your requirements list. In addition, check
the responsiveness and the quality of the
tool's software support.
- final selection: If
you still have more than one viable tool
candidate after the hands-on evaluation, you
may want to consider business issues, such
as pricing and upgrade policies, to make
your final decision.
BACK TO TOP
-
What processes and methods are available
that use UML?
There are many software methods that use UML.
A selective list of UML methods is available
on the Processes page of this web.
BACK TO TOP
-
What should I look for when selecting a
process or method that uses UML?
You should keep in mind that UML is a
modeling language, and not a process or
method. Since UML is a general-purpose
modeling language and object-oriented, it is
expected to work with most object methods.
However, you may expect to encounter
problems if the method is based on another
paradigm (e.g., functional, relational,
rule-based). You may also encounter
difficulties with component-based methods if
you are using UML 1.x, since support for
component modeling is restricted. (The
forthcoming UML 2.0 major revision is
expected to improve support for component
modeling.)
In particular, look out for methods
that:
- do not use all or most of the UML
diagram techniques. This may indicate that the method
doesn't address the full software lifecycle.
- rely heavily on UML profiles for
customizing the language. While some customization is
expected and encouraged, excessive customization reduces the
benefit of a general-purpose object modeling language.
BACK TO TOP
-
What is a
UML profile?
A UML profile customizes UML for a specific
domain or purpose using extension mechanisms
such as stereotypes and metaclasses. For
example, the UML Profile for Testing
customizes UML for testing systems.
BACK TO TOP
-
Can UML be used to specify systems
engineering applications?
Yes. Although the UML was originally
designed to specify software-centric
systems, the major improvements included in
UML 2.0 (see
answer to "What major improvements were
made in UML 2.0?') make it an effective
language for modeling systems engineering
applications.
However,
you should also check out the SysML
(Systems
Modeling Language) dialect of UML, which is a general
purpose systems engineering modeling language that is typically
implemented as a UML 2.x profile. For more
information about the SysML dialect
see the SysML Forum.
BACK TO TOP
|
|