blob: bac884a246616ef8ed55d6508964e719310c62b2 [file] [log] [blame]
<!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>
EMF Refactor is an open source component under <a href="http://www.eclipse.org/modeling/emft/">Eclipse EMFT</a> to provide extensible tool support for generating and applying refactorings of EMF based
models, e.g. UML EMF models.
</p>
<p>
EMF Refactor 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>
<h3>Refactoring Application Module</h3>
<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>
<h3>Structured Refactoring Suite</h3>
<p>
EMF Refactor currently supports 22 refactorings for Ecore models and 30 refactorings for UML2EMF models.
</p>
<h3>Refactoring Generation Module</h3>
<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>