Project : triskell
Section: Software
Keywords : MOF, UML, MDA, model transformation.
Kermeta : Kernel Metamodeling
Participants : Olivier Barais, Franck Chauvel, Cyril Faucher, Jean-Marc Jézéquel, Jean-Marie Mottu, Pierre-Alain Muller, Fraçois Tanguy, Didier Vojtisek [correspondant].
Nowadays, object-oriented meta-languages such as MOF (Meta-Object Facility) are increasingly used to specify domain-specific languages in the model-driven engineering community. However, these meta-languages focus on structural specifications and have no built-in support for specifications of operational semantics. Triskell has developped the Kermeta language to explore the idea of using aspect-oriented modeling to add precise action specifications with static type checking and genericity at the meta level, and examine related issues and possible solutions.
Kermeta consists of an extension to the Essential Meta-Object Facilities (EMOF) 2.0 to support behavior definition. It provides an action language to specify the body of operations in metamodels. This action language is imperative and object-oriented.
Kermeta is used in several use cases:
to give a precise semantic of the behavior of a metamodel which then can be simulated.
to act as a model transformation language.
to act as a constraint language.
The development environment built for the Kermeta language currently provides the following tools
an interpreter and a compiler that allow a metamodel to be executed.
text and graphical editors, fully integrated within Eclipse, with syntax higlighting, code autocompletion.
an Eclipse outline view, which allows navigation through the whole model and metamodel.
various import/export transformations such as ecore2kermeta (kermeta text), kermat2ecore, kermeta2xmi (xmi version of your kermeta metamodel), xmi2kermeta, xmi2ecore.
Developped as an open source software under the terms of the EPL (Eclipse Public License), it has been first deposited to the APP (Agence de Protection des Programmes) in October 2005.
Thanks to Kermeta it is possible to build various frameworks dedicated to domain specific metamodels. Those frameworks are organised into MDKs (Model Development Kits). For example, Triskell porposes MDKs to work with the following metamodels: Java5, UML2, RDL (requirements), Ecore, Traceability, ...Some of these MDKs (UML2, RDL) are advanced enough to constitute a complete application.