Design pattern driven development of model transformations
MDE is considered a well-established software development approach that uses abstraction to bridge the gap between the problem space and the software implementation. These abstractions are represented by models that make the validation of the real system easier. In MDE, many problems are solved using model transformation, which is a paradigm that manipulates high-level models to translate, evolve, or simulate them. However, the development of a model transformation for a specific problem is still a hard task. The main reason is the lack of a development process where transformations must be designed before implemented. Design patterns provide experiential reuse to software engineers when faced with recurring problems. In the literature, design patterns have been used to generate partially reusable software designs in order to help developers. There are many design patterns focused development methodologies proposed. However, most of them specialize in object-oriented design patterns. Given the various contexts in which design patterns have been applied, model transformations may also benefit from a patterns approach. Although several studies have proposed design patterns for model transformation, there is still no accepted common language to express them or a methodology that places design patterns at the heart of the development of model transformations. Therefore, we created a semi-formal way to describe model transformation design patterns that is independent from a specific model transformation language and described in a practical way that is directly implementable by model engineers. In this dissertation, we present a catalog of 15 model transformation design patterns following a novel uniform template and domain-specific language, DelTa. We elaborate a five-step methodology that guides model engineers in designing solutions to transformation problems by putting the design patterns at the heart of their thought process. We also demonstrate how it is possible to automatically generate excerpts of a model transformation in various languages given a design pattern. We conducted a survey to motivate the need for model transformation design patterns and a user study to validate the usefulness and effectiveness of our methodology to solve problems as model transformations based on design patterns.