Enriching Tool Support for Model-driven Software Development
MegaTools - Megamodel-based tools for model-driven engineers
Model-driven software development (MDSD) is a promising approach that proposes to use models not only as documentation artifacts but also as first class entities. In a typical model-driven software development process, one can find at least two stakeholders, the model-driven engineer and the modeler. The former is responsible for building the tools to manipulate (create, edit, compile) concrete models whereas the latter is the one that uses these tools to model problems and generate the corresponding solutions.
Commonly, the interaction between the modeler and the model-driven engineer is as presented in figure 1. At the beginning, the modeler provides an initial model that represents a specific problem in a specific domain. This model is taken as an input of a model-driven solution that, across a set of operations, produces a platform-specific solution. The solution can be either another model or the code of an application. What is important is that the solution satisfies the initial requirements of the modeler.
Figure 1. A typical model-driven software development process
Notice that the benefits of this kind of approaches are proven in terms of the improvement of the modeler's productivity. It is a fact that the time that a modeler expends during the development process is greatly reduced. However, the development of a model-driven solution is not a trivial task. It requires specialized knowledge and specific skills by part of the model-driven engineer.
Unfortunately, the current tool support for model-driven engineers is lagging behind since the integrated development environments (IDEs) still being focused on code-centric technologies. In other words, the IDEs are designed and implemented to facilitate the manipulation of code and, in the case of model-driven technologies, models are not treated as real first-class entities but as data files in code-projects. As a result, model-driven engineer has to overcome several changes during the development process that seriously impact his/her productivity.
The complexity behind the development of models-centric IDEs is that the requirements of this kind of tools are quite variable. New types of models appear frequently and new operations are needed. As a result, it is not a practical idea to create a well-engineered IDE that satisfies the requirements of model-driven engineers. Instead of that, what it is common to find is a set of customized integrated development environment focused on a specific model-driven engineer.
The global contribution of this project is to provide a domain-specific language, called MoMs, that allows describing the tooling required for a particular model-driven engineer. Then, we provide a generation mechanism that generates the corresponding eclipse extensions that offer the required functionality.
In this context, the support for software evolution is quite important. A well-engineered IDE for software development would have to take this issue into account. As a result, some part of our work has been focused on the understanding of the evolution of development artifacts of model-driven software development.
Until now, we have an initial implementation of MoMS language and a generation process that creates basic functionality for model-driven engineers. Besides, we have a tools deposit that contains some essential operators for model management.
David Méndez Acuña
- Construction of operators for model management in the context of model-driven software development.
- Including variability issues in the process of enriching tool support for model-driven software development.
- Rubby Casallas
- David Méndez Acuña
- Jaime Chavarriaga
- Camilo Alvarez
- Hugo Arboleda
- Andres Paz
- Ivan Mauricio Sánchez
- Willy Montes
- Rafael Meneses