Incremental model compiler for executable UML

June 8, 2016    

We are introducing our brand new, open source, incremental model compiler

for generating ready-to-run C++ code from xUML-RT – a novel executable UML syntax and semantics – developed in cooperation by IncQuery Labs Ltd.ELTE-Soft Ltd., and Ericsson AB.

xUML-RT has its root coming from both the original UML-RT and xtUML languages. It aims to provide a revisited version of UML based executable modeling integrating all the experience gained from its predecessors and providing a rigid formal execution semantics. The language itself is currently under development with the final goal to become a stand-alone OMG standard.

Our model compiler is developed on top of a technology stack

that provides scalable code generation performance with support for both source and target incrementality. Whenever the design model is updated, the compiler regenerates code from the modified part of the model only, and ensures that only the affected source code files are overwritten. This results in very fast turnaround time even on large and complex systems, as the execution time of both model and C++ code compilation depends only on the size of the changed parts.

The presented model compiler

  • integrates with Papyrus to take advantage of a fully-featured UML modelling tool,
  • provides an Xtext-based action language based on the concepts of ALF with complete editor support for specifying behavior,
  • incrementally generates ready to compile and run C++ code with support for model-level optimization.

We are also happy to announce that the complete workflow is available open-source

under the Eclipse Public License and we believe that the components of the tool contain useful examples on writing efficient and incremental model-to-model transformationscode generators and file system synchronization using the VIATRA query and transformation framework. Finally, a model executor/simulator is also available for xUML-RT as part of the complete tool-chain developed by ELTE-Soft Ltd.