Automatic Intermediate Model Builder for STP Projects
In our days of software development mostly done by writing code, we rely on the compilers of our programming languages to keep a centered machine-executable instance of our programs. When we think of a model-driven development paradigm, instead of writing code we create several models to construct a solution; today it's very common to hear about model-to-model or model-to-text transformations that could automate software development, but there is a problem when the user creates several models of different types and transforms each one of them, which at the end results in a great number of generated models with semantic concepts scattered across all of them. It is desirable to maintain a centralized, intermediate model that can represent all the concepts in the particular solution domain of the developer.
Fortunately, in the SOA domain, the STP project at Eclipse already defined a metamodel for this Intermediate Model which can host all the concepts drawn in all its types of models. This project is about constructing a model builder or also a model compiler, which keeps track of all the transformations happening inside an STP project and keeps a centralized instance of the Intermediate Model, shaped by all the model elements of the user. It will strengthen the bridge that the IM already provides between the model editors, and improve the overall user experience of the STP users.
The SOA Tools Platform project at Eclipse aims to build a set of components to support the SOA lifecycle, from the early stages of business process modeling and composite application design, to development and deployment tasks such as service assembly and policy definition. However, there used to exist a gap between these tools concerning their integration to support a full development methodology for service-oriented solutions. The Intermediate Model for STP model editors appeared to fill this gap.
On the previous edition of Google Summer of Code on 2008, a project was developed with the STP-IM component lead, Adrian Mos, to develop model transformations between several STP model editors and the intermediate model, in both directions. However, as the project progressed, several issues arised in the consideration of the SOA development methodology; for example, a user could be working on a solution to support several business processes, which are represented in several BPMN models and not just one. With the current paradigm on single one-to-one transformations, each BPMN would be transformed into a separate instance of the Intermediate Model, instead of a single project-wide instance that represents the complete picture of the business domain, which is a fundamental requirement for SOA development. Furthermore, having the business concepts scattered in several models puts an inconvenient to use them for further transformations, for example to BPEL or SCA models.
During the project execution, the idea of creating a model builder arised, as a means to mantain a single instance of the intermediate model, by handling all the model transformations and keeping a consistent, consolidated copy. Such mechanism will be supported by the resources builder mechanism that the Eclipse platform provides through the
org.eclipse.core.resources.builders extension point.
The builder will have the following features, to be developed in the timeframe of the Google Summer of Code program:
- Automatic transformation of models created through the STP editors.
- Creation and consolidation of a central Intermediate Model instance.
- Model comparation and difference matching using EMF Compare.
- Intermediate Model instance updating using EMF Model Query.
- Round-trip engineering to reflect changes in user models.
- Interface for the resolution of semantic conflicts (i.e. inconsistencies between models).
- Outline view for a centralized project-wide view of semantic concepts.
- Drag and Drop from the outline view into model editors, to allow creation of model elements from existing concepts in the IM instance.
Initial considerations on the Intermediate Model Builder as the idea was conceived at the end of last year's instance can be found here. These will be taken into account for this year's instance, however a complete redesign might be required in order to support the above features.
The modeling technologies it will build upon are EMF Model Compare and EMF Model Query.
- To develop a mechanism, the IM Builder, to enable the Intermediate Model to become the central artifact in SOA development projects, carrying all the concepts modeled from all possible viewpoints (business domain, service design and definition, and deployment).
- To take advantage of the existing model-to-model transformations in the STP Intermediate Model component, by putting them in the frame of a builder mechanism to trigger them automatically and increase their utility for the SOA developer.
- To leverage the modeling tools at STP with the technologies available at the Eclipse Modeling Project, in order to develop a solution that is able to consolidate the concepts represented in several models of different types.
- To design and implement specific functionality such as drag and drop aimed at increasing the overall usability of the STP model editors, by allowing the user to reuse elements from one model to others, and give a sense of integration between the tools.
Transformations from and to STP-IM
The IM model builder will work with the model transformations built on the project for Google Summer of Code 2008, as well as other existing transformations.
Tests and Sample Scenarios
The project will follow a test-driven methodology in which the test will first be written before the actual coding takes place. The tests will be designed according to the features above mentioned.
A set of unit tests for the IM Builder was proposed last year as a means to verify the initial requirements conceived for the IM builder.
The documentation for this project will extend the Eclipse wiki (Eclipsepedia – http://wiki.eclipse.org) technical documentation on STP-IM involving the design decisions of the builder to meet with the mentioned features. The main target of this documentation is the STP team, both from IM and other components, so they can realize the integration possibilities the model brings.
The project will rely on the constant communication of the main developer (me) with his mentor, Adrian Mos from INRIA (France), as well as other committers from the STP project. There will be active participation on the project’s mailing lists and newsgroups. The project will involve several design decisions that must be made taking into account the advice of experts in the modeling domain. Some of them at the Eclipse Modeling Project are:
- Ed Merks
- Antoine Toulme (also in STP)
- Cédric Brun
- Peter Friese
Thanks to the already existent experience with the project, the Community Bonding period can be used as an early start of the project, to perform a detailed planning of activities. However, the following scheduled of deliverable features is proposed:
|May 22th||Detailed plan of activities and deliverables. Final plan of features to be developed. Initial design sketches.|
|May 29th||Builder mechanism to automatically transform each model.|
|June 5th||Consolidation of IM instances into a centralized instance.|
|June 12th||Round-trip engineering: Diff matching|
|June 19th||Round-trip engineering: Diff matching and conflict resolution|
|June 26th||Round-trip engineering: Notifying and posting changes to user models.|
|July 3rd||Round-trip engineering: Notifying and posting changes to user models in BPMN.|
|July 10th||Round-trip engineering: Notifying and posting changes to user models in SCA, BPEL and other model editors in STP.|
|July 17th||Outline view for central instance of the IM.|
|July 24th||Drag and drop from outline view elements into STP model editors (to define).|
|July 31th||Drag and drop from outline view elements into STP model editors (to define).|
|August 7th||Creation of sample scenarios for the IM builder. Unit testing.|
|August 14th||Creation of sample scenarios for the IM builder. Documentation; proposal for a generic EMF model builder mechanism.|
The resulting code of the project will be committed to the STP project module of the Eclipse repository, in the IM component, and released under the Eclipse Public License once the IP process is cleared out.
It has been considered that the idea of a model builder does not only concern the SOA domain, but is in general a modeling solution that might be needed in other domains, so there might be a possibility to construct a generic model builder for EMF models, as a component of the Eclipse Modeling Project.
Enlarge the scope of the STP-IM builder, by adding more transformation to cover more model types, such as EID (Enterprise Integration Development) and Policy.
Juan Cadavid is from Medellín, Colombia, South America. He's 24 years old and he's a Computer Science graduate at EAFIT University in Medellín, on board to start his PhD at the University of Rennes, France. His main areas of interest are enterprise information systems, business process management, software engineering and architecture, model engineering, service-oriented architecture and web technologies. His senior degree project, which was given the Honorific Mention by the University's Academic Council, is entitled “A Proposal for a Model Mapping from a Computation Independent Model (CIM) to a Platform Independent Model (PIM)”, building a model transformation from a BPMN model to a SCA model using a model transformation engine called Operational QVT, part of the Eclipse M2M sub-project.