GenGMF - a GMF model generator
GenGMF is an open source project proposed as incubator under the Graphical Modeling Project (GMP) project.
The project is in the Project Proposal Phase (as defined by the Eclipse Development Process) and this proposal declares its intent and scope. The proposal is written to solicit additional participation and input from the Eclipse community. You are invited to comment on and/or join the project. Please send all feedback to the Modeling GMF forum with "[GenGMF]" in the subject.
"Domain Specific Languages" (DSL) are an essential part of the complex of topic "Model Driven Software Development" (MDSD). Tree based language editors as provided by "Eclipse Modelling Framework" (EMF) as well as textual DSLs as provided by the "Textual Modelling Framework" (TMF) have a good tooling but the language user cannot get a quick overview about the complete model with its main objects and their references. A graphical DSL could be used to display objects and their references intuitively e.g. as boxes and connections. The "Graphical Modelling Framework" (GMF) allows to model the concepts of a graphical editor but the tooling is not so smart. There are a lot of pitfalls a DSL developer must avoid before he can use a graphical editor for modelling.
GMF models often contain a lot of duplication. Figures that share a common layout concepts but differ in some details need a figure description of its own. Even small changes like an other background color make a new figure which results in much larger editor models. Larger models are harder to handle because they contain a lot of element references and the GMF tooling rarely filters the list of elements appropriately while setting a reference in the properties view.
The integrated GMF wizards can be used to create the GMF models. The three model creation wizards to create the tooling, graph and mapping definitions are heavy-weight because every information needs to be entered in a few wizard steps making the steps themselves very complex. Information entered in one wizard is not shared and has to be entered in the next wizard again. Additionally the wizards hardly handle meta model evolution and can not handle compartments which are often used to display the concept of a parent-child-relation.
GenGMF will provide an efficient tooling for developing graphical editors using the GMF. This includes
- interactive wizards, to create a GenGMF specific editor model iteratively,
- an optimized GenGMF model editor for fine-tuning the wizard-created model and
- a model-to-model transformation to generate the GMF models which in turn can be used without modifications to generate the editor using standard GMF techniques.
GenGMF has been originally developed with the ease of complexity in mind. With the introduction of wizards in version 2 the scope has been extended to provide a smart and adaptive tool support for developing graphical DSLs.
Ease of complexity
The complexity of a model (in the context of MDSD) can be measured by counting the elements and the setting possibilities of each non-containment model reference being set. The complexity grows over-proportionally with the model size.
While developing an editor using the GMF, the editor models can grow so large that they are hardly manageable by humans. GenGMF removes duplications by combining similar figure descriptors with their attached node, edge, compartment and label elements in a single template. The differences between the figures and the template are stored in descriptors which are comparable to the elements from the GMF mapping definition. Transformators can be applied to a descriptor to change the visual appearance of a specific figure.
The model-to-model transformation generates complete GMF models by merging the templates with the information from the descriptors. The otherwise manually created but now generated GMF models contain about 2 to 5 times more model elements and references than the original GenGMF model they are derived from. Compared to a GMF model the complexity of a GenGMF model is a magnitude smaller.
Smart and adaptive tool support
For GenGMF wizards have been introduced in order to lower the entry level for DSL developers and to get first results fast. They can be used to get a basic editor for an existing meta-model within a few minutes. Different wizards exist for template or descriptor creation or modification. The wizards adapt their behaviour to the settings already made. Using the interactive wizards a first version of a complete GenGMF model can be iteratively created. Afterwards the model can be tweaked and tuned manually or using the wizards to fulfil all the needs. It is possible to automatically modify the model during the transformation using a scripting interface.
Relationship with other Eclipse Projects
- GenGMF will be built on top of EMF and GMF.
- GenGMF will integrate with the GMF projects.
- GenGMF will make use of the Xtend model transformation language as far as possible for the model transformation.
- GenGMF will make use of the Check model constraint language as far as possible for model validation.
- GenGMF will make use of the AspectJ project as far as possible for improvements of the tree based GenGMF model editor.
- GenGMF will make use of the Epsilon wizarding language as far as possible for implementing and improving wizards.
- GenGMF will make use of the Edapt (formerly COPE) project as far as possible for metamodel evolution.
- Ed Merks (Macro Modeling, Canada)
Proposed initial committers
- Enrico Schnepel (Germany, project lead)
- Attila Bak (Germany)
- Martin Flügge (Germany)
- b+m Informatik AG (Germany)
- Anthony Hunter (IBM, Canada)
- Ed Merks (Macro Modeling, Canada)
- Frederic Jouault (Univ. Nantes, France)
- Jean Bezivin (Univ. Nantes, France)
- Kenn Hussey (Canada)
- Paul Elder (IBM, Canada)
- Richard Gronback (Borland, USA)
- Sebastien Demathieu (Thalesgroup, France)
- Sven Efftinge(itemis, Germany)
- Tristan Faure (Atos Origin, France)
- Thibault Landré (Atos Origin, France)
- Mahmoud Elhamlaoui (ENSIAS, Morocco)
The initial code contribution will be a set of plug-ins from the existing GenGMF project. Visit the project's website for further information and documentation.