User Tools

Site Tools


About txtUML

The name txtUML stands for textual, executable and translatable UML. It is an open source project with the goal to make model driven development easier. Look into this video for a quick intro.


Experience shows that graphical diagrams are valuable for understanding software. On the other hand, writing software in text is usually far more efficient than drawing diagrams in a modeling IDE. The txtUML project aims at combining the advantages of these two approaches: creating models textually and still have possibility to visualize it on graphical diagrams.

txtUML models can be written using two different syntaxes:

  • XtxtUML is a custom textual syntax, designed to be short and clean. You have to learn new syntax in this case, but the models will be shorter and more readable. This syntax has been introduced in 0.2.0 version of txtUML.
  • JtxtUML is a Java library for defining the models. In this case the model is a Java program. Java programmers do not need to learn new syntax in this case, but the models will be slightly longer and less readable.

In both cases, these textual models can be edited, searched, version controlled, refactored as any other program.


UML is mostly used to informally specify the architecture of software, but it is capable to do much more. Executable models specify all aspects of software from components and classes to state machines and activities. They can be executed, debugged and tested independently of the target platform where the software will finally work.

The XtxtUML syntax is on the fly translated to the JtxtUML syntax in Eclipse, therefore all txtUML programs are, basically, Java programs. This makes it possible to run, debug and test them using the standard Java runtime environments, debuggers and test frameworks. In addition, modeling-specific debugging features, such as animated state machines, are also available.


Model compilers translate the abstract models to programs in an implementation language (like C, C++, Java etc.), targeting a specific run-time environment (hardware, operating system, specific libraries). Our project includes a generic C++ model compiler that can be used as is, or as a basis to create a new compilers for different languages and special platforms.

start.txt · Last modified: 2018/10/10 13:14 by djnemeth