| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> |
| |
| |
| <head> |
| </head> |
| |
| <body> |
| |
| <p> |
| <b>EMF Refactor</b> is an Eclipse open source tool environment conveniently supporting a <b>structured model quality assurance process</b>. |
| In particular, EMF Refactor supports metrics reporting, smell detection, and refactoring for models being based on the Eclipse Modeling Framework, |
| a widely used open source technology in model-based software development. |
| </p> |
| <p> |
| The tool environment mainly consists of two kinds of modules: |
| For calculating model metrics, detecting smells, and executing refactorings there is an <b>application module</b> each. |
| Similarly there are three <b>specification modules</b> for generating metrics, smell, and refactoring plugins containing Java code that can be used by the corresponding application module. |
| </p> |
| <p> |
| |
| <h2>Refactoring tool</h2> |
| The refactoring tool consists of |
| <ul> |
| <li>a <strong>Refactoring Application Module</strong> for applying EMF model refactorings in a uniform and user-friendly way, |
| <li>a <strong>Structured Refactoring Suite</strong> of predefined EMF model refactorings supporting several EMF-based languages, and |
| <li>a <strong>Refactoring Generation Module</strong> for specifying EMF model refactorings using several model transformation approaches. |
| </ul> |
| </p> |
| |
| <u><b>Refactoring Application Module</b></u> |
| |
| <p> |
| EMF Refactor uses the Eclipse <a href="http://www.eclipse.org/articles/Article-LTK/ltk.html" target="_blank">Language Toolkit</a> |
| (LTK) for homogenous refactoring application consisting of three parts. |
| After triggering a model element, refactoring-specific basic conditions are checked (<i>initial check</i>). Then, |
| the user has to set all parameters and the EMF Refactor checks whether the user input does not violate further conditions |
| (<i>final check</i>). In case of erroneous parameters a detailed error message is shown. If the final check has passed, |
| EMF Refactor provides a preview of the changes that will be performed by the refactoring using <a href="http://www.eclipse.org/emf/compare/" target="_blank">EMF Compare</a>. |
| Last but not least, these changes can be committed and the refactoring can take place (<i>model change</i>). |
| Here, EMF Refactor supports undo and redo functionality, of course. |
| </p> |
| |
| <u><b>Structured Refactoring Suite</b></u> |
| |
| <p> |
| EMF Refactor currently supports 22 refactorings for Ecore models and 30 refactorings for UML2EMF models. |
| A list of implemented refactorings can be found in the <a href="refactorings.php">refactorings</a> section. |
| </p> |
| |
| <u><b>Refactoring Generation Module</b></u> |
| |
| <p> |
| Since EMF Refactor uses the LTK technology mentioned above, a concrete refactoring specification requires up |
| to three parts (i.e., specifications for initial checks, final checks, and the proper model changes). EMF Refactor |
| currently supports three concrete mechanisms for EMF model refactoring specification. They can be specified using |
| <ul> |
| <li>Java, |
| <li>OCL expressions (for pre-condition checking), or |
| <li>the EMF model transformation tool <a href="http://www.eclipse.org/modeling/emft/henshin/" target="_blank">Henshin</a>. |
| Here, EMF Refactor uses Henshin's model transformation engine for executing the refactoring as well as Henshin's pattern |
| matching algorithm to detect violated preconditions. |
| </ul> |
| Actually, we are working on a combination mechanism of existing refactorings to more complex ones by using a dedicated domain-specific language called |
| CoMReL (Composite Model Refactoring Language) that will be integrated soon into the official release of EMF Refactor. |
| </p> |
| |
| </body> |