It is well known that legacy software is difficult to evolve. Code restructuring is one way to cope with code decay. One of the first applications of "restructuring tools" in industry in the mid 80's was the elimination of goto statements, which was identified in the 70's as bad practices (now called "bad smells"). This leads to the transition from ad hoc programming to structured programming. Then the apparition of new waves in structuring paradigms never stopped (and will not stop). Waves include successively procedural programming, modular programming, object-oriented programming, aspect-oriented or component programming, etc. An important focus of attention is currenty on refactoring, that is restructuring in the context of object-oriented software. There is no doubt, however, that similar problems already appear or will appear at the level of aspects, components, models, etc.
This talk presents how Model-Driven Engineering is am integrative approach supporting in a uniform way various technological spaces, various paradigms, and various kinds of transformations, including restructuring. It is shown how transformations, "bad smells" and best practices depend on the metamodel considered. Beyond particular problems to be solved broader research directions will be identified. We claim that the identification of a new paradigm or new DSL should be accompagnied in the future with the identification of corresponding transformation and restructruring techniques.