The Role of Model-to-Model Transformations in MDSD
Many people have said many things about Model-to-Model transformations and how good, bad
or essential they are for MDSD. Fact of the matter is: in mainstream MDSD (if there is something like that :-)) most people generator code directly from models and M2M does not play an important role. Certainly that was the case in my past projects. However, I see this changing - slowly but certainly. I have been working on several projects - some larger, some smaller prototypes - where M2M played an important role. The projects range from rather simple model modifications (where a model is modified according to some external "aspectual" model) up to the stepwise transformation from a business domain, to an architectural domain and finally to code.
So why is it that M2M starts to play an important role? I think there are several reasons. One is that people are beginning to have experience with the basic, architecture-centric MDSD approach and want to leveral "business DSLs". The other thing is that tools are getting better. For example, in my projects we have been using openArchitectureWare's xTend language to do the transformations. It is a small, maybe not perfect, but practically useful transformation language and tool support is ok (if not perfect: we have no debugger).
So, I just wanted to point that out to people should not discard M2M, and that it is becoming a practical reality.
One important comment: If I talk about M2M, I do not talk about having developers modify the destination model of an M2M transformation. Rather, in my view, a M2M transformation is about modularizing the transformation process and reusing partial transformations. If you want to a modify the result of a M2M transformation and then continue to transform it into yet another model, that's a recipe for trouble. Don't do that.