DevBooststLogoQualiTunetudLogorewerseLogo modelplexLogo
Refactory Logo
EMFText Refactoring SDK
Enabling Refactorings for your DSL just became a piece of cake


Just drag and drop this install button into your Eclipse:


Or follow the instructions here.

Refactory: Generic Model Refactoring

In Model Driven Software Development (MDSD), code being the essential artifact for a long time is replaced by models. In the world of code, refactorings have been implemented for several languages (e.g., Java, C# or Objective-C). By this technique the structure of existent software artifacts can be improved while preserving the external behavior. In MDSD, the development of own Domain Specific Languages (DSL) and metamodels currently deliver nice editors with syntax highlighting and code completion but the essence still is only an editor.

The changeover from code to models now demands the techniques of refactoring in a generic way. Refactorings should be reused for several metamodels because they often express the same restructuring actions only in different contexts. Therefore a method is needed to apply several refactorings to a bunch of different metamodels. This challenges have been realised in the framework Refactory. We implemented a role-based approach which enables the refactoring designer to specify a dedicated context for each refactoring.

As a result of our evaluation a catalog of refactorings evolved. We specified only a few model refactorings generically and reused them in several target metamodels. Please feel free to investigate the catalog and try the refactorings on your own. Have a look at the documentation to check out some screenshots and follow the install instructions.

Furthermore there is a video, where Refactory can be seen in action. We recommend to view the video in HD quality to capture and comprehend all labels and input which is made.

As a little foretaste what benefits you can expect from Refactory have a look at the left screenshot. Before refactoring Refactored model

It can be seen that specified model refactorings integrate into your editor of choice. In the screenshot an example Ecore model is depicted for which the refactoring Extract Superclass will be invoked just by selecting the desired elements and right-clicking. The result can now be seen in the right screenshot.