Working towards my MSc thesis, I’m increasingly engaging with the Model Management Tool Framework (MMTF), an Eclipse-based tool framework for software model management, built by Rick Salay. At a glance, MMTF allows users to create macromodels (very roughly speaking, models that have other models as elements) in the form of “model interconnection diagrams” (MIDs). The elements of a MID are models of various types that are connected by model mappings (model mappings are models that describe how some other models are related).
As mentioned, the nodes/models in a MID are typed. For example, if we employ a MID to show how a particular UML class diagram is related to a particular UML sequence diagram, it would contain a node of type “UML class diagram” and a node of type “UML sequence diagram” and a mapping link between them (let’s not go into mapping types here). MMTF, being a framework, offers a way for users to plug in their own model types.
MMTF is built on top of the Eclipse line of model-related technologies (EMF, GMF, GEF etc). Therefore the notion of plugging in a new model type in practice means creating a new metamodel (using EMF), creating a graphical diagram editor for it (using GMF) and then plugging it in MMTF as an Eclipse plugin. Such model types, that require a new full-blown GMF graphical editor are called “heavy”, in contrast to “light model types”. Light types are what Qiyu Zhu spent this summer implementing. The idea is that heavy types already registered with MMTF (we already have for example good support for state machine models) can be constrained (presently using only OCL) to create useful model subtypes.
As GMF is not an easy monster to fight against, light model types are a very good step for MMTF. But useful as they are, heavy types still remain at the core, so anything that makes playing with GMF easier, is very good news indeed. I was therefore delighted to stumble upon EuGENia!
EuGENia, coupled with Emfatic can dramatically speed the creation of heavy model types. The user needs to create an ecore model using the simple DSL employed by Emfatic and then properly annotate it with GMF-related information. EuGENia then takes over the task of generating all the ugly GMF stuff. This might sound like a bunch, but compared to the plunging oneself into the dungeons of GMF, fighting graphical definition model dragons, mapping model balrogs and generator model orcs, EuGENia makes quite a pleasant journey!
In fact, EuGENia is part of a larger project, Epsilon, which in turn is part of the larger Generative Modeling Technologies research incubator project of Eclipse. Epsilon also has other interesting features apart from EuGENia, such as supporting model transformation, validation and merging.