Executable UML (xUML)

What is Executable UML (xUML)?

Executable UML (xUML) is a profile of UML 2.0 that leverage the action semantics in order to facilitate the execution of a UML model.

Action semantics allow UML models to specify behaviors associated with an operation or a state machine transition. The introduction of action semantics in UML 2.0 is not widely known in the programming community but it is very significant because it makes UML a turing-complete language! This we finally have a bridge over the gap between development and modeling activities. Only a few organizations have been crossing this chasm but those who have, have seen great payoffs. One of the more prominent success stories of xUML was by Lockheed Martin Aeronautics at to develop the F-16 Modular Mission Computer Application Software. See http://www.omg.org/mda/mda_files/LockheedMartin.pdf for more information.

Executable UML, which was also at one point called Executable and Translable UML (xtUML) was developed in response to the OMG consortium's effort to improve support for model-driven architecture (MDA). The xUML technology has evolved from proven and well-known formalisms such as the Schlaer-Mellor method of object-oriented analysis and design.

Problems with xUML

There are two well known problems with xUML: it depends on visual diagrams and there is no widely agreed upon surface syntax for expressing action semantics (i.e. no action language). Diagrams are excellent for visualization, but are hard to work with for developers. Some of the problems with diagrams are:

  • effective tools for working with diagrams are not easily available, expensive to buy or build
  • many important tools in a programmer's toolkit rely on textual representations: SED, AWK, GREP, WinDiff, Perl
  • it is easy to create diagrams of a model that are unusable (elements hiding other elements), whereas valid textual representations of the same model are always managable.
  • diagrammatic tools require a lot of system resources compared to text editors like VI, or Emacs, which can be run on embedded systems

Action Languages

Action languages are textual syntaxes for expressing the action semantics associated with operations and state transition diagrams in UML.

The two most widely used action languages are Object Action Language (OAL) used by the Bridgepoint EdgeUML compiler suite from Mentor Graphics, and the Action Specifciation Language (ASL) used in various tools from Kennedy Carter.

Heron (http://www.heron-language.com/spec.html) has an action language at its core, which resembles a combination of Java and Scala, but is unique in that it also provides a syntactic representation of the elements in xUML class diagrams and state machine diagrams.

Executable UML (xUML) and Model-Driven Architecture (MDA)

Executable UML (xUML) was developed largely in response the OMG's efforts to come up with a solution for the Model-Driven Architecutre (MDA) approach to developing software. All MDA approaches other than xUML require model elaboration. In effect the model is used to generate a portion of the software, and software "elaborate" on the generated code to produce the final product.

Some of the problems with the elabroationist approach to MDA are:

  • is a platform specific approach: each new targeted platform requires new elaboration
  • it is a langauge-specific approach: the developers are locked in to the language used for elaboration
  • there are no standards in place: every toolset takes its own approach.

Executable UML is considered to be a translationist approach to MDA. Platform specific models or implementations are generated automated by model compilers.

For More Information

The following links provide more information on xUML:

The following are popular books on xUML:

Last modified on June 7, 2008 by Christopher Diggins, http://www.cdiggins.com