A UML tool is a
software application
Application software is any computer program that is intended for end-user use not computer operator, operating, system administration, administering or computer programming, programming the computer. An application (app, application program, sof ...
that supports some or all of the notation and semantics associated with the
Unified Modeling Language
The Unified Modeling Language (UML) is a general-purpose visual modeling language that is intended to provide a standard way to visualize the design of a system.
UML provides a standard notation for many types of diagrams which can be roughly ...
(UML), which is the industry standard
general-purpose modeling language for
software engineering
Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
.
''UML tool'' is used broadly here to include application programs which are not exclusively focused on UML, but which support some functions of the Unified Modeling Language, either as an ''add-on'', as a ''component'' or as a ''part'' of their overall functionality.
Kinds of functionality
UML tools support the following kinds of functionality:
Diagramming
''Diagramming'' in this context means ''creating'' and ''editing'' UML
diagram
A diagram is a symbolic Depiction, representation of information using Visualization (graphics), visualization techniques. Diagrams have been used since prehistoric times on Cave painting, walls of caves, but became more prevalent during the Age o ...
s; that is diagrams that follow the graphical notation of the Unified Modeling Language.
The use of UML diagrams as a means to draw diagrams of – mostly –
object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
software is generally agreed upon by software developers. When developers draw diagrams of object-oriented software, they usually follow the UML notation. On the other hand, it is often debated whether those diagrams are needed at all, during what stages of the software development process they should be used, and how (if at all) they should be kept up to date. The primacy of software code often leads to the diagrams being deprecated.
Round-trip engineering
Round-trip engineering refers to the ability of a UML tool to perform code generation from models, and model generation from code (a.k.a., reverse engineering), while keeping both the model and the code semantically consistent with each other. Code generation and reverse engineering are explained in more detail below.
Code generation
''
Code generation'' in this context means that the user creates UML diagrams, which have some connected model data, and the UML tool derives from the diagrams part or all of the
source code
In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer.
Since a computer, at base, only ...
for the software system. In some tools the user can provide a skeleton of the program source code, in the form of a source code
template
Template may refer to:
Tools
* Die (manufacturing), used to cut or shape material
* Mold, in a molding process
* Stencil, a pattern or overlay used in graphic arts (drawing, painting, etc.) and sewing to replicate letters, shapes or designs
C ...
, where predefined tokens are then replaced with program source code parts during the code generation process.
An often cited criticism is that the UML diagrams lack the detail that is needed to contain the same information as is covered with the program source: Jack W. Reeves states that the final embodiment of the design lies in the source code. (His often quoted statement that "the Code ''is'' the design"
[http://www.developerdotstar.com/mag/articles/reeves_design_main.html by Jack W. Reeves] has been misinterpreted to mean that there is no need for intermediate- and high-level software-design artifacts, such as UML diagrams or software-requirements documents).
Reverse engineering
''Reverse engineering'' in this context means, that the UML tool reads program source code as input and ''derives'' model data and corresponding graphical UML diagrams from it (as opposed to the somewhat broader meaning described in the article "
Reverse engineering
Reverse engineering (also known as backwards engineering or back engineering) is a process or method through which one attempts to understand through deductive reasoning how a previously made device, process, system, or piece of software accompl ...
").
Some of the challenges of reverse engineering are:
* The source code often has much more detailed information than one would want to see in design diagrams. This problem is addressed by
software architecture reconstruction.
* Diagram data is normally not contained with the program source, such that the UML tool, at least in the initial step, has to create some ''random layout'' of the graphical symbols of the UML notation or use some automatic ''
layout algorithm'' to place the symbols in a way that the user can understand the diagram. For example, the symbols should be placed at such locations on the drawing pane that they don't overlap. Usually, the user of such a functionality of a UML tool has to manually edit those automatically generated diagrams to attain some meaningfulness. It also often doesn't make sense to draw diagrams of the whole program source, as that represents just too much detail to be of interest at the level of the UML diagrams.
* There are language features of some
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
s, like ''class-'' or ''function templates'' of the
C++ programming language, which are notoriously hard to convert automatically to UML diagrams in their full complexity.
Model and diagram interchange
XML Metadata Interchange
The XML Metadata Interchange (XMI) is an Object Management Group (OMG) standard for exchanging metadata information via Extensible Markup Language (XML).
It can be used for any metadata whose metamodel can be expressed in Meta-Object Facili ...
(XMI) is the format for UML model interchange. XMI does not support
UML Diagram Interchange, which allows the importation of UML diagrams from one model to another.
Model transformation
A key concept associated with the
model-driven architecture initiative is the capacity to transform a model into another model. For example, one might want to transform a platform-independent domain model into a Java platform-specific model for implementation. It is also possible to refactor UML models to produce more concise and well-formed UML models. It is possible to generate UML models from other modeling notations, such as
BPMN, which is itself a
UML profile. The standard that supports this is called
QVT for Queries/Views/Transformations. One example of an open-source
QVT-solution is the
ATL language built by
INRIA
The National Institute for Research in Digital Science and Technology (Inria) () is a French national research institution focusing on computer science and applied mathematics.
It was created under the name French Institute for Research in Comp ...
.
See also
*
List of Unified Modeling Language tools
This article compares UML tools. UML tools are software applications which support some functions of the Unified Modeling Language.
General
Features
See also
* List of requirements engineering tools
References
External links
*
List of requirements engineering tools
*
Metamodeling
*
Model-driven engineering
Model-driven engineering (MDE) is a software development methodology that focuses on creating and exploiting domain models, which are conceptual model (computer science), conceptual models of all the topics related to a specific problem. Hence, i ...
*
QVT
*
Specification and Description Language Specification and Description Language (SDL) is a specification language targeted at the unambiguous specification and description of the behaviour of reactive and distributed systems.
Overview
The ITU-T has defined SDL in Recommendations Z.100 ...
(SDL)
References
External links
.
UML Tools Directory
{{DEFAULTSORT:Uml Tool
Unified Modeling Language