University of Sheffield

Reusable Model Design Languages

Model specification, model transformation and code generation

ReMoDeL Tools

The current version ReMoDeL v3 specifies metamodels and model transformations in a bespoke concept modelling language, using Java readers, writers and compilers that convert these into executable Java libraries and transformation programs. A description of these reader, writer and compiler tools will be given below.

Reusable pieces of design

ReMoDeL Version 3 Tools

ReMoDeL v3 provides a simple declarative language for specifying metamodels and model transformations. The native syntax of ReMoDeL may be read and and written, or cross-compiled to Java. The complete ReMoDeL package includes the metamodel for parse trees (in remodel.meta), the input, output and cross-compiler tools (in remodel.io) and the utility library to support generated Java (in remodel.util).

ReMoDeL v3 Readers, Writers and Compilers
Tools for processing ReMoDeL metamodels:
  • MetamodelReader is a parser for metamodels and will build a parse tree from a metamodel.met input file.
  • MetamodelWriter is a writer for metamodels and will write a metamodel.met output file from a metamodel parse tree.
  • MetamodelCompiler is a compiler for metamodels and will create a Java package of classes, modelling the concepts of the metamodel, from a metamodel parse tree.
Tools for processing ReMoDeL model transformations.
  • TransformReader is a parser for transformations and will build a parse tree from a transform.tra input file.
  • TransformWriter is a writer for transformations and will write a transform.tra output file from a transformation parse tree.
  • MetamodelCompiler is a compiler for transformations and will create a Java package containing a class capable of executing the specified model transformation, from a transformation parse tree.
Tools for processing ReMoDeL model instances.
  • ModelReader is an unmarshaller for building a Java model in memory from a model.mod input file. The model consists of instances of Java classes that were compiled from the relevant metamodel.
  • ModelWriter is a marshaller for serialising a Java model in memory to a model.mod output file. The model consists of instances of Java classes that were compiled from the relevant metamodel.

In normal usage, the designer will specify a source metamodel, a target metamodel and a model transformation in the native ReMoDeL syntax. The appropriate readers and compilers will then be used to translate these into Java packages. Finally, the designer will write a Java main program that reads a model instance of the source metamodel, applies the compiled model transformation, and writes the model instance of the target metamodel.