Model-Driven Software Evolution
Research project granted by NWO/JACQUARD in 2006
The promise of model-driven engineering (MDE) is that the development and maintenance effort can be reduced by working at the model instead of the code level. Models define what is variable in a system, and code generators produce the functionality that is common in the application domain.
The problem with model-driven engineering is that it can lead to a lock-in in the abstractions and generator technology adopted at project initiation. Software systems need to evolve, and systems built using model-driven approaches are no exception. What complicates model-driven engineering is that it requires multiple dimensions of evolution. In regular evolution, the modeling language is used to make the changes. In meta-model evolution, changes are required to the modeling notation. In platform evolution, the code generators and application framework change to reflect new requirements on the target platform. Finally, in abstraction evolution, new modeling languages are added to the set of (modeling) languages to reflect increased understanding of a technical or business domain. While MDE has been optimized for regular evolution, presently little or no support exists for metamodel, platform and abstraction evolution. It is this gap that this project proposes to address.
The first fundamental premise of this proposal is that evolution should be a continuous process. Software development is a continuous search for recurring patterns, which can be captured using domain-specific modeling languages. After developing a number of systems using a particular meta-model, new patterns may be recognized that can be captured in a higher-level or richter meta-model. The second premise is that reengineering of legacy systems to the model-driven paradigm should be a special case of this continuous evolution, and should be performed incrementally.
The goal of this project is to develop a systematic approach to model-driven software evolution. This approach includes methods, techniques, and underlying tool support. We will develop a prototype programming environment that assists software engineers with the introduction, development, and maintenance of models and domain-specific languages.
- Eelco Visser - project lead, program transformation and generation
- Arie van Deursen - promotor, reverse engineering
- Zef Hemel - PhD student
- Sander Vermolen - PhD student
- opening - postdoc
- opening - PhD student
- Lennart Kats - PhD student TFA project
- Danny Groenewegen - master's student, PhD student ASSESS project
- Wouter Mouw - master's student
- Jippe Holwerda - master's student
former team members
- Martin Bravenboer - postdoc (11/2007 - 03/2008)
- Jonathan Joubert - master's student
- Sander Mak - master's student
Several industrial parties are involved in the project, including
We have the following openings:
- Postdoc for 3 years
- 2 PhD students
For information regarding these positions contact Eelco Visser