UML tool
Encyclopedia
A UML tool or UML modeling tool is a software application
Application software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...

 that supports some or all of the notation and semantics associated with the Unified Modeling Language
Unified Modeling Language
Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...

(UML), which is the industry standard general purpose modeling language for software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

.

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.

Diagramming

Diagramming in this context means creating and editing UML diagram
Diagram
A diagram is a two-dimensional geometric symbolic representation of information according to some visualization technique. Sometimes, the technique uses a three-dimensional visualization which is then projected onto the two-dimensional surface...

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
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...

 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
Round-trip engineering
Round-trip engineering is a functionality of software development tools that synchronizes two or more related software artifacts, such as, source code, models, configuration files, and other documents...

 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
Automatic programming
In computer science, the term automatic programming identifies a type of computer programming in which some mechanism generates a computer program to allow human programmers to write the code at a higher abstraction level....

in this context means that the user creates UML diagrams, which have some connoted model data, and the UML tool derives from the diagrams part or all of the source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

 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 (programming)
Templates are a feature of the C++ programming language that allow functions and classes to operate with generic types. This allows a function or class to work on many different data types without being rewritten for each one....

, where predefined tokens are then replaced with program source code parts during the code generation process.

There is some debate among software developers about how useful code generation as such is . It certainly depends on the specific problem domain and how far code generation should be applied. There are well known areas where code generation is an established practice, not limited to the field of UML.

The idea of completely leaving the "code level" and starting to do "programming" directly from the UML diagram level (i.e., design level) is quite debated among developers . That is the vision for Model-driven architecture
Model-driven architecture
Model-driven architecture is a software design approach for the development of software systems. It provides a set of guidelines for the structuring of specifications, which are expressed as models. Model-driven architecture is a kind of domain engineering, and supports model-driven engineering of...

 (MDA). This idea is not in such widespread use compared to other software development
Software development
Software development is the development of a software product...

 tools like compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

s or software configuration management systems
Configuration management
Configuration management is a field of management that focuses on establishing and maintaining consistency of a system or product's performance and its functional and physical attributes with its requirements, design, and operational information throughout its life.For information assurance, CM...

.

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" 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: Reeves only points out that there is a limit to how much the design of such artifacts can help in creating a working product, and that ultimately all design processes must be validated through the creation of operational code.)

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
Reverse engineering is the process of discovering the technological principles of a device, object, or system through analysis of its structure, function, and operation...

").

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
    Programming language
    A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

    s, like class- or function templates of the C++
    C++
    C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

     programming language, which are notoriously hard to convert automatically to UML diagrams in their full complexity.

Model and Diagram Interchange

XML Metadata Interchange
XML Metadata Interchange
The XML Metadata Interchange is an Object Management Group standard for exchanging metadata information via Extensible Markup Language .It can be used for any metadata whose metamodel can be expressed in Meta-Object Facility ....

 (XMI) is the format for UML model interchange. XMI does not support UML Diagram Interchange, which allows you to import UML diagrams from one model to another.

Model Transformation

A key concept associated with the Model-driven architecture
Model-driven architecture
Model-driven architecture is a software design approach for the development of software systems. It provides a set of guidelines for the structuring of specifications, which are expressed as models. Model-driven architecture is a kind of domain engineering, and supports model-driven engineering of...

 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. The standard that supports this is called QVT
QVT
QVT is a standard set of languages for model transformation defined by the Object Management Group .- Overview :...

 for Queries/Views/Transformations. One example of an open-source QVT
QVT
QVT is a standard set of languages for model transformation defined by the Object Management Group .- Overview :...

-solution is the ATL
ATLAS Transformation Language
ATL is a model transformation language and toolkit developed and maintained by OBEO and AtlanMod. It was initiated by the team...

 language built by INRIA.

See also

  • List of UML tools
  • Model Driven Engineering
  • QVT
    QVT
    QVT is a standard set of languages for model transformation defined by the Object Management Group .- Overview :...

  • ATL
    ATLAS Transformation Language
    ATL is a model transformation language and toolkit developed and maintained by OBEO and AtlanMod. It was initiated by the team...

  • Metamodeling
  • Java to UML Sequence Diagram

External links

.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK