The Kermeta language was initiated by Franck Fleurey in 2005 within the team of IRISA. The Kermeta language borrows concepts from languages such MOF, OCL and QVT, but also from BasicMTL, a model transformation language implemented in 2004 in the Triskell team by D. Vojtisek and F. Fondement. It is also inspired by the previous experience on MTL, the first transformation language created by Triskell, and by the Xion action language for UML. The name Kermeta is an abbreviation for "Kernel Metamodeling" and reflects the fact that the language is conceived as a core for modeling. The Breton language consonance of this name is an intentional reflection of the Triskell team's location in Brittany. Kermeta, and its execution platform under Eclipse is currently available under its version 2.0.4 released in 2012. It is open-source, under the Eclipse Public License.
Philosophy
Kermeta is a modeling and aspect oriented programming language. Its underlying metamodel conforms to the EMOF standard. It is designed to write programs which are also models, to write transformations of models. The goal of this model approach is to bring an additional level of abstractionon top of the "object" level and thus to see a given system like a set of concepts that form an explicitly coherent whole, which one will call a model. Kermeta thus brings:
all the concepts of EMOF used for the specifications of a model.
a real concept of model, more precisely of model type.
a concrete syntax that fits well to model and metamodel writing.
model-oriented: first-class concepts of associations and composition
aspect-oriented: integrate a simple but powerful weaver for simple meta-modeling tasks. Arbitrary complex weaving is achieved using a dedicated composer written in Kermeta. This allows programmers to extend existing metamodels. Especially in order to add behavior to them by weaving behavioral semantics.
design by contract: operations support pre and post conditions, classes use invariants.
functional: functions and first class lambda-expressions
statically typed: genericity for the classes and the operations, function types...
complete introspection: the complete model of the program is available during execution.
Syntax
The curious reader will find further information on the .
Example (Kermeta 1.4)
package fsm; require kermeta using kermeta::standard class FSM class State class Transition