MDA (Model Driven Architecture) technology
What is MDA?
MDA, defined and supported by the OMG (Object Management Group), defines an approach to IT system specification that separates the specification of system functionalities from the specification of the implementation of these functionalities on a particular technological platform.
This approach places the emphasis on models, provides a higher level of abstraction during development, and enables significant decoupling between platform-independent models (PIM) and platform-specific models (PSM).
Of particular importance to model-driven architecture are the notions of metamodel and model transformation. Metamodels are defined at the OMG using the MOF (Meta Object Facility) standard. A specific standard language for model transformation called QVT has been defined by OMG. The OMG has also defined a model interchange mechanism based on XML called XMI.
The industrial reality of MDA
Industrial implementations of MDA are mainly based on the UML standard and on the UML Profile mechanism. This mechanism provides the following advantages:
- Supported by most UML tools on the market
- Reuses the UML metamodel, thus avoiding reinventing the wheel with the major software modeling notions (class, state, and so on)
- Interchangeable between UML tools: A UML model extended by a profile can be exchanged between different tools, even if the profile is not known or applied by the other tool. The UML part of the extended model will still be there.
- Avoids the "autism" schema: Inventing a new modeling technique from scratch for a certain group of people will lock these people and their work in a format that only they understand, and only their tool can handle. This is the main advantage of reusing the UML standard as compared with developing a new metamodel from scratch.
- A profile can be dynamically applied to or withdrawn from a UML model, and combined to other profiles on the same model.
- Very quick to implement, with all the benefits from all provided UML tool functionalities (doc generation, workgroup support, and so on)
One notable MDA implementation is the EMF (Eclipse Metamodel Framework) opensource tool. This tool is widely used by research projects and provides a good means of quickly supporting a metamodel. However, EMF does not scale up for large models, does not provide any workgroup support, and is generally not used as a basis for industrial tools. EMF does not fully comply with the MOF standard. Modelio supports a dedicated XMI for EMF import or export.
The model transformation language standardized by the OMG (QVT) cannot be called a success. It has no complete implementation, no industrial strong support and is not frequently used. Other transformation languages such as ATL (opensource) have had more success.
Our opinion is that some of these languages have interesting features, but are far from the quality of well established 3G languages such as Java or C#: a well defined organization, efficient tool support and implementation, debug capacities, rich set of libraries, and so on. Using these languages may quickly lead to maintenance, performance or scaling issues.
SOFTEAM and Modelio's vision of and contribution to MDA
Since its creation in 1989, SOFTEAM has been conducting research and development into model-driven engineering, providing a tool supporting this approach since 1991. A specific technology named "hypergenericity" (published in a book - "Object Engineering – The Fourth Dimension", Addison Welsey – 1994), created in 1992 and supported by Objecteering since 1994, has since evolved to integrate and enhance the UML profile technology. UML profiles are now part of the OMG UML standard, and will be improved in the UML 2.0 standard. These improvements will be close to the UML profile improvements that SOFTEAM has been implementing in the Objecteering/UML CASE tool since 1994. Since this time, SOFTEAM has gained in experience, constantly providing an ever-improving toolset and range of consultancy services, designed to supply the customer with dedicated MDA approaches and implementations. Based on UML, UML profiles and the Objecteering/UML Profile Builder toolset, this technology is now mature and has been applied to several hundreds of projects.
The Modelio tool provides a large set of features to support MDA:
- An open and easy-to-handle metamodel: The UML metamodel has been reworked in order to reinforce its consistency, simplify its usage, and take full advantage of object orientation when programmers handle it. Developers familiar with the UML2/EMF API will find it very easy to understand and handle.
- Rich Java API to program new model capacities: Whatever can be done manually within Modelio can also be done programmatically. Model transformation, diagram creation and pattern appliance can, for example, easily be programmed using the API. New generators can be developed using predefined services for round trip engineering. The Modelio editor can be customized by adding new diagram types, a new GUI or new couplings to other tools.
- A flexible MDA packaging mechanism: Modelio can be extended by installing “modules” in projects. These modules package MDA extensions and services. Their installation customizes the Modelio tool, adding new services, applying dedicated profiles and customizing Modelio’s GUI.
- A dedicated MDA Designer module: This module is used to model profiles and define new services. Wizards are provided to create modules and new services that automatically generate suitable Java code. The MDA Designer module also packages profile definition, Java MDA code and all necessary additional resources (such as icons) into a module, which is a file that Modelio can load.
- A scripting language (Jython): This scripting language enables you to dynamically define and apply MDA requests to models. Model refactoring and defining batch MDA processes (such as applying all the PIM to PSM transformation and code generation actions at night, and connecting this to a MAVEN, ANT or makefile process) are two examples of the services provided by this scripting feature.
- Strong support of profiles: This allows you to dynamically apply, withdraw or combine profiles, and also to update a model with a new profile version.
With these capacities, users have a highly efficient tool for implementing their MDA approaches. They have all the power of Java and the Modelio metamodel and libraries, but can also connect this to other transformation engines such as template based model to text transformers.