A Meta-Modelling Technology for CMOF-based Models

UML/MOF 2.0 offers new unique features to capture abstractions, specializations, and redefinitions. Now there is a meta-modelling standard that allows spezialisation relations between the properties of a classifier. This gives concept specialisation and reuse much more flexibility and expresivness. These new opportunities are covered by the more sophisticated flavour of MOF 2 called the CMOF-model. When you are familar UML's infrastructure or superstructure, you have already seen what CMOF is capable of, and how modular an exceptional large language can be modelled.

CMOF allows to use object-oriented techniques in a modelling environment to describe the concepts of a computer language with possibilities to reuse and extend them. This way of modelling is not only needed to model large-scale languages, like the UML, it is also useful to create domain specific extensions (UML-Profiles) or smaller domain specific languages.

Rationale

We wanted to develop a meta-modelling tool based on UML/MOF 2.0 and the CMOF-model. The goal is to capture the new modelling capabilities and provide them to the programming environment of a modern implementation language. In contrast to the earlier MOF versions 1.x, where abstraction hierarchies were usually rooted in a single "Element", leading to a limited modelling of abstractions, the new UML/MOF2.0 uses multiple abstractions, each covering a simple aspect of data-modelling, as a library for itself and your meta-modelling tasks.

We wanted to created a MOF 2.0 for the Java programming language with a featureset that is tailored to create languages and implement language tools based on meta-modelling. The main features are:

Not yet another MOF repository

Most implementation of MOF or other meta-modelling standards, concentrate on the storage of models. They offer functionality that can be compared with those of databases or source versioning systems. Our tool is different. We are looking for a tool that allows easy programing with meta-data. Therefore, we offer a non persistent but fast model storage, and a Java language mapping that allows type-safe programming without type-casts. Combined with our MOPA tool and an integrated OCL processor, anything is there that is needed to develop model driven development tools or create domain specifc languages, using the Java programming language. Comparable technologies like IBM's Eclipse EMF, or SUN's Netbeans MDR (or other JMI implementations) do not support property supsetting or ather advanced redinfinition features and are thus only capable to cover meta-modelling at the level of MOF1.x or MOF2:EMOF. Furthermore they are based on older Java-versions, hence do not take advantage of generics or covariant return types; programming with those platforms often leads to satically unsafe programming.

Paper

The paper On Implementing MOF 2.0: New Features for Modelling Abstractions explains Javamapping and Propertyredefiniton issues and how it is done in A MOF 2.0 for Java.

  Markus Scheidgen; On Implementing MOF 2.0: New Features for Modelling Abstractions, Juni 2005

Javadoc

The Javadoc can be obtained from the download section.

Version 1.0

A MOF is now available in version 1.0; it is stable, and has proven its robustnes in a course with 30 students that where confronted with a modelling framework for their first time. Note that the newer versions can only be downloaded from our project site at berliOS.de. In addition to version 0.9 this version supports the following features:

Version 0.9

A lot of important features have been implemented latelly. Note that the newer versions can only be downloaded from our project site at berliOS.de. In addition to version 0.8 this version supports the following features:

Version 0.8

We recently released version 0.8 of the meta-modelling tool; it can be downloaded in the download section, here. In addition to version 0.7 this version supports the following features:

There are some important MOF features that are still not yet implemented. Those are:

Version 0.7

The version 0.7 of our model repository tool is an older version; it can be downloaded in the download here. This version supports the following features:

There are important MOF features that are not yet implemented. Those are:

Upcoming versions

We are continuously extending our meta-modelling tools. It follows a prioritised list of feature that will be available soon:

  1. An event mechanism to allow clients to listen to model changes (very soon).
  2. An example for a GEF-editor using A MOF 2.0 for Java.
  3. A framework for using A MOF 2.0 for Java for defining operational semantics in you meta-models (see here for details