The EGF (Eclipse Generation Factories) component is a proposed open source project under the EMFT project to provide a model-based generation framework.
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process document) and is written to declare its intent and scope. This proposal is written to solicit additional participation and input from the Eclipse community. You are invited to comment and/or join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.emft newsgroup.
For improving software development industrialization, a major step consists in mass-producing software. This mass-production must be customizable and support complex and heterogeneous generations. Given the today available tools in Eclipse, the issue here is not to provide a new transformation engine or DSL editor but to realize their integration with fitted formalisms (e.g., generation pattern) and mechanism (e.g., generation orchestration) for flexible software mass-production.
This proposal focuses on an implementation project of an Eclipse model-based generation framework, named EGF.
EGF federates generation around the pivotal notion of factory component. A factory component is a unit of generation with a clear objective of generation. It has a contract to declare the factory component parameters. Generation data are organized by viewpoints, such as generation pattern or model mapping declarations. The generation orchestration is defined in a production plan. A generation step of the production plan can either be a Java task or, by assembly, a call to another factory component. A factory component can be edited and executed.
A factory component encapsulates generation know-how. A portfolio is a consistent set of factory components with a common generation objective which is valuable for a development team or a user community. The purpose is to create off-the-shelf factory components. For instance, a technical infrastructure factory can provide all mechanisms needed for the development of an application (e.g., transaction management, persistence policy).
As a consequence, EGF is built on a two-layer architecture.
- EGF engine is the tool that allows editing and executing factory components. It has its own model and is mainly built on EMF. It also offers a generation pattern viewpoint for model-to-text transformation.
- A Factory Component Portfolio layer for solutions of generation.
Example: The following figure exemplifies a simple generation. It shows a generation decomposition and assembly. Code generation is realized by generation patterns, which supports pattern inheritance. By default for the model/edit/editor generation, the EMF generation is applied. This generation can be specialized by inherited patterns.
Figure 1 - Example of generation
EGF contributions can take two kinds of different forms:
Development of Factory Component portfolios.
- The most natural contribution is the development of factory components and factory component portfolios.
- With the generation patterns, further than the pattern inheritance mechanism, combination of factory component generation allows merge of generation, for instance for introducing specific behaviors in the standard EMF generation.
Extension of EGF engine.
- Extensibility of the default EGF viewpoints. By model extension, a child viewpoint adds its own language and editor, such as deployment specification, licensing policy or feature modeling. An associated factory component can define one viewpoint execution mode. For instance, generation patterns conform to a pattern language, are edited with a pattern editor, and are executed with a pattern runtime factory component.
- All factory components depends on a root factory component. A new default factory component can add its specific behaviors.
It becomes relevant to make the viewpoints cooperate. For instance, generation patterns can use a feature model for addressing the product line engineering.
Relationship with Other Eclipse Projects/Components
- Model-to-text. EGF generation patterns are JET-based. The target in this proposal is to also support JET2 and MTL. The EGF engine infrastructure is designed to support other engines with different editors and lifecycles (compiler vs. interpreter production lifecycle), such as Xpand.
- Model-to-model and text-to-model. Tools of this category, such as ATL, QVTo, QVTr for model-to-model transformations, or Xtext, TCS for text-to-model, can be used through Java tasks.
We propose that this project be undertaken as part of an Eclipse Modeling Framework Technology subproject.
The following companies will contribute committers to get the project started :
- Benoît Langlois, Thales/TCS/EPM, proposed project lead – firstname.lastname@example.org
- Thomas Guiu, Soyatec – email@example.com
- Xavier Maysonnave, Thales/TCS/EPM – firstname.lastname@example.org
- Laurent Goubet, Obeo – email@example.com
Thales will provide the initial contribution which is already deployed in an industrial context. These people have contributed to the iniital code:
- Guillaume Brocard, Thales/TCS/EPM – firstname.lastname@example.org
- Stèphane Fournier, Thales/TCS/EPM – email@example.com
The following organizations have expressed interest in the project :
- Thales/TCS/EPM - www.thalesgroup.com
- Crescendo Technologies - www.crescendo-technologies.com
- HiPeS - www.hipes.nl
- Obeo - www.obeo.fr
- Skyway Software - www.skywaysoftware.com
- Soyatec - www.soyatec.com
- University of Augsburg - www.uni-augsburg.de
Developer and user communities
Critical to the success of this project is participation of interested third parties to the community. We intend to reach out to this community and enlist the support of those interested in making a success of the EGF project. We ask interested parties to contact news://news.eclipse.org/eclipse.tools.emft to express interest in contributing to the project.
The first community technical preview release is scheduled in Summer, 2009.