<?php require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); $App = new App(); $Nav = new Nav(); $Menu = new Menu(); include($App->getProjectCommon()); # All on the same line to unclutter the user's desktop' | |
$pageTitle = "EMF Refactor - Component Proposal"; | |
$pageKeywords = "emf, emft, ecore, refactoring, model refactoring, compare, uml, uml2, emf tiger, ltk, ewl"; | |
$pageAuthor = "Thorsten Arendt"; | |
ob_start(); | |
?> | |
<div id="maincontent"> | |
<div id="midcolumn"> | |
<h1>EMF Refactor - Component Proposal</h1> | |
</p> | |
<?php | |
include_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/proposal-page-header.php"); | |
generate_header("Eclipse Modeling Framework Refactor"); | |
?> | |
<h2>Introduction</h2> | |
<p>EMF Refactor is a proposed new open source component under | |
<a href="http://www.eclipse.org/modeling/emft/">Eclipse EMFT</a> to provide tool support for | |
generating and applying refactorings for models based on EMF Ecore, e.g. UML EMF models.</p> | |
<p>This component is in the Pre-Proposal Phase (as defined in the | |
<a href="http://www.eclipse.org/projects/dev_process/">Eclipse Development Process</a>) and | |
this document is written to declare its intent and scope. This proposal is written to solicit | |
additional participation and input from the Eclipse community. You are invited to comment on | |
and/or join in the development of the component. Please send all feedback to the | |
<a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.emft">emft newsgroup</a>. | |
</p> | |
<h2>Background</h2> | |
<p> Model driven development has become a promising trend in software development which makes | |
models to the primary artifacts. However, code generators can produce high quality code only | |
for input models being of high quality. On the other side, code refactoring is a well-known and | |
investigated technique to improve software structures without changing the observable behaviour. | |
So an essential technique for model quality assurance is the refactoring of models which is | |
in focus of the current research.</p> | |
<p>Although several refactorings for models have been suggested, there is not yet a corresponding | |
tool support in Eclipse for creating custom refactorings and applying them. Moreover, some model | |
refactorings were adopted from code refactorings, especially for models that describe structural | |
features like UML class diagrams. In addition, completely new approaches have been developed, | |
especially for further diagram types such as state machines and activity diagrams or just other | |
kinds of EMF models.</p> | |
<h2>Scope</h2> | |
<p>Providing similarly comfortable refactoring support for models as for code refactoring in | |
Eclipse would be worthwhile. Since EMF has become a key reference in model driven software | |
development and a basic technology in Eclipse modeling, the intention is to provide an extensible | |
tool support for handling EMF model refactorings.</p> | |
<p>A basic intention of the proposed component is to provide a framework for developing | |
refactorings for models that are based on EMF. Model refactorings can be seen as endogenous model | |
transformations preserving the semantics of a model yet improving the internal structure. The idea | |
is to provide an easy to use generator which relies on model transformations to build model | |
refactorings. So in the proposed framework the development of individual model refactorings will be | |
based on model transformations, whereas the specifications of these model refactorings should be | |
done by means of several different model transformation approaches. This will lead to a framework | |
which will be extensible in two ways: on the one hand it should be possible to develop new EMF model | |
refactorings which will, on the other hand, be specified and executed by exchangeable model transformation | |
engines.</p> | |
<p>Like in tool support for code refactoring all generated model refactorings shall be applied | |
in an intuitive and convenient way. Users should be able to select one or more model elements of | |
interest - either in the standard EMF instance editor or in a generated graphical editor - and | |
choose the appropriate model refactoring out of the context menu of the selection. Needed parameters | |
should be entered like in Eclipse code refactoring wizards. If the selected refactoring can not be | |
executed the user should be informed by appropriate error messages. Furthermore, tool support for | |
EMF model refactoring should provide a preview of the performed changes as well as undo and redo | |
functionality. Here, the proposed framework should aspire to an integration or adjustment of the | |
Language Toolkit API (<a href="http://www.eclipse.org/articles/Article-LTK/ltk.html">LTK</a>).</p> | |
<p>An advanced tool support for EMF model refactoring could additionally combine refactorings | |
of different models or, what is especially of interest in the field of MDD, combine model | |
refactorings and code refactorings to synchronize the approriate artifacts of the software | |
development process. A further improvement would be to provide supplementary tool support for | |
specifying and detecting model smells which could be hints for possible model refactorings. | |
Here, model refactorings could be executed in a quick-fix manner.</p> | |
<p>Because of the increasing usage of UML2 models refactoring support especially for UML2 models | |
edited in <a href="http://www.eclipse.org/modeling/mdt/?project=uml2tools">UML2 Tools</a> is desirable.</p> | |
<h2>Initial Contribution</h2> | |
<p>An initial contribution will provide the primary functionality for model refactoring.</p> | |
<p><img src="images/ModulesArchitecture.png" /></p> | |
<p>As described above EMF Refactor consists of two main modules with basic functionalities. | |
The Refactoring Generation Module integrates the functionality of each model refactoring, that | |
has been defined by an EMF model transformation, into a special Eclipse plugin. Here, the actual | |
distribution supports the model transformation tool EMF Tiger that allows defining model | |
transformations graphically. The advanced plugin will extend EMF Refactor and provide a new | |
item in the context menu of the standard tree-based EMF instance model editor by which the | |
refactoring can be applied. Moreover, the Refactoring Application Module allows to select a model | |
refactoring, to set all parameters needed, to preview the result of a refactoring, and to actually | |
perform a refactoring.</p> | |
<p>The actual distribution of EMF Refactor provides implementations of a number of basic UML2 | |
model refactorings:</p> | |
<h4>Available Refactorings for UML2 class diagrams</h4> | |
<ul> | |
<li>Change Attribute To Association End - | |
<i>transforms an attribute to an association end.</i></li> | |
<li>Change Association End To Attribute - | |
<i>transforms an association end to an attribute and is the opposite of refactoring | |
[Change Association End To Attribute]</i>.</li> | |
<li>Create Associated Class - | |
<i>creates an empty class and connects it with a new association to the source class | |
from where it is extracted.</i></li> | |
<li>Create Intermediate Superclass - | |
<i>creates an empty class in between a selected class and one of its superclasses.</i></li> | |
<li>Create Subclass - | |
<i>creates an empty subclass of a selected class.</i></li> | |
<li>Create Subinterface - | |
<i>creates an empty subinterface of a selected interface.</i></li> | |
<li>Create Superclass - | |
<i>creates a new super-class of a class.</i></li> | |
<li>Hide Property - | |
<i>makes a non-private attribute/property of a given class private and creates getter and | |
setter operations for it. In the literature, this refactoring is called | |
[Attribute/Field/Property Privatization] and [Encapsulate Attribute/Field/Property].</i></li> | |
<li>Pull Up Operation - | |
<i>moves an operation of a class to one of its superclasses.</i></li> | |
<li>Pull Up Operation To Interface - | |
<i>moves an operation of a class to one of its implemented interfaces.</i></li> | |
<li>Pull Up Operation To Superinterface - | |
<i>moves an operation of an interface to one of its superinterfaces.</i></li> | |
<li>Pull Up Property - | |
<i>removes a property from a class and inserts it into one of its super-classes.</i></li> | |
<li>Push Down Operation - | |
<i>pushes an operation down to all its sub-classes. Sometimes it is also called [Push Down | |
Method] and it is the opposite of refactoring [Pull Up Operation].</i></li> | |
<li>Push Down Property - | |
<i>moves a property of a class to all of its sub-classes. It is the opposite of refactoring | |
[Pull Up Property].</i></li> | |
<li>Remove Empty Intermediate Superclass - | |
<i>removes a completely empty class which is a superclass of a set of subclasses but also | |
generalizes other classes or implements interfaces. It is the opposite of refactoring | |
[Create Intermediate Superclass].</i></li> | |
<li>Remove Empty Subclass - | |
<i>removes a completely empty subclass of a classes and is the opposite of refactoring | |
[Create Subclass].</i></li> | |
<li>Remove Empty Subinterface - | |
<i>removes a completely empty subinterface of an interface and is the opposite of refactoring | |
[Create Subinterface].</i></li> | |
<li>Remove Empty Superclass - | |
<i>removes a completely empty superclass of a set of classes.</i></li> | |
<li>Rename Class - | |
<i>changes a class name to a new one.</i></li> | |
<li>Show Property - | |
<i>makes a non-visible property public and removes its getter and setter operations. | |
It is the opposite of refactoring [Hide Property].</i></li> | |
</ul> | |
<h4>Available Refactorings for UML2 state machines</h4> | |
<ul> | |
<li>Fold Transition Incoming to Composite State - | |
<i>folds transitions with same event incoming to a composite state from a state | |
outside that composite state.</i></li> | |
<li>Fold Transition Outgoing From Composite State - | |
<i>folds transitions with same event outgoing from a composite state to a state | |
outside that composite state.</i></li> | |
<li>Unfold Transition Incoming to Composite State - | |
<i>unfolds a transition incoming to a composite state to transitions incoming to | |
each sub-state of the composite state. It is the opposite of refactoring [Fold | |
Transition Incoming to Composite State].</i></li> | |
<li>Unfold Transition Outgoing From Composite State - | |
<i>unfolds a transition outgoing from a composite state to transitions outgoing from each | |
sub-state of the composite state. It is the opposite of refactoring [Fold Transition | |
Outgoing From Composite State].</i></li> | |
</ul> | |
<h2>Relationships to other Eclipse Projects/Components</h2> | |
<p>EMF Refactor builds upon the functionality provided by the | |
<a href="http://www.eclipse.org/modeling/emf/">EMF</a> project itself.</p> | |
<p><img src="images/UsesArchitecture.png" /></p> | |
<p>Special relationships to other projects/components are:</p> | |
<ul> | |
<li><a href="http://www.eclipse.org/modeling/m2t/?project=jet">JET</a>, for Java code | |
generation by the Refactoring Generation Module. </li> | |
<li>EMF model transformation tools for designing and generating individual model refactorings. | |
Here we plan a close collaboration with <a href="http://tfs.cs.tu-berlin.de/emftrans">EMF Tiger</a>, | |
also in the Pre-Proposal Phase as EMFT component. But other transformation tools should be | |
supported by EMF Refactor, too.</li> | |
<li>An EMF model comparison tool for providing a preview before applying individual model | |
refactorings. Here we plan to integrate the existing EMFT component | |
<a href="http://www.eclipse.org/modeling/emft/?project=compare#compare">EMF Compare</a>. | |
</li> | |
</ul> | |
<p>Planned integrations:</p> | |
<ul> | |
<li>An integration into the graphical editors of | |
<a href="http://www.eclipse.org/modeling/mdt/?project=uml2tools">UML2 Tools</a> should be | |
involved.</li> | |
<li>EMF Refactor should aspire to an integration or adjustment of the Language Toolkit API | |
(<a href="http://www.eclipse.org/articles/Article-LTK/ltk.html">LTK</a>).</li> | |
</ul> | |
<p>Related Work:</p> | |
<ul> | |
<li>EMF Refactor will not compete with the <a href="http://www.eclipse.org/gmt/epsilon/">Epsilon | |
Wizard Language (EWL)</a>, a language that supports update transformations in the small for | |
diverse modeling languages. Instead, a combinated use of EMF Refactor and EWL could be possible.</li> | |
<li>EMF Refactor could be used in combination with <a href="http://www.eclipse.org/proposals/edapt/">Edapt</a>, | |
a framework for Ecore model adaptation and instance migration which is also proposed as project | |
under <a href="http://www.eclipse.org/modeling/emft/">Eclipse EMFT</a>.</li> | |
</ul> | |
<h2>Organization</h2> | |
<h3>Mentors</h3> | |
<ul> | |
<li>Ed Merks (<a href="http://www.macromodeling.com">Macro Modeling</a>, Canada)</li> | |
<li>Bernd Kolb (<a href="http://www.sap.com">SAP</a>, Germany)</li> | |
</ul> | |
<h3>Initial Committers</h3> | |
<p>The initial committers for this component would be:</p> | |
<ul> | |
<li>Thorsten Arendt (<a href="http://www.uni-marburg.de/fb12">Philipps-Universitaet Marburg</a>, | |
Germany), proposed project lead</li> | |
<li>Florian Mantz (<a href="http://www.uni-marburg.de/fb12">Philipps-Universitaet Marburg</a>, | |
Germany), committer</li> | |
<li>Lars Schneider (<a href="http://www.uni-marburg.de/fb12">Philipps-Universitaet Marburg</a>, | |
<!-- (<a href="http://www.de.capgemini-sdm.com/deutsch/index.html">Capgemini sd&m AG</a>, Munich, --> | |
Germany), committer</li> | |
</ul> | |
<h3>Interested Parties</h3> | |
<p>So far, interest in this component has been expressed by:</p> | |
<ul> | |
<li>Nikolaus Regnat | |
(<a href="http://w1.siemens.com/innovation/en/about_fande/corp_technology/index.htm">Siemens | |
Corporate Technology</a>, Munich, Germany)</li> | |
<li>Philip Langer | |
(<a href="http://www.tuwien.ac.at/">Vienna University of Technology</a>, Vienna, Austria)</li> | |
</ul> | |
<p>Interested parties are welcome to add themselves to the list above as interested parties or to | |
suggest changes to this document.</p> | |
<h3>Developer Community</h3> | |
<p>The team of initial committers will explore statements of interest from additional developers | |
experienced with model refactoring or willing to gain such experience.</p> | |
<h3>User Community</h3> | |
<p>It is expected that the user community for EMF Refactor will consist of two kinds of users. | |
On the one hand, there will be researchers and developers who design model refactorings. On the | |
other hand, there will be modelers who apply the generated model refactorings to their EMF based | |
models - which can surely belong to the first category, too.<p/> | |
<h3>Tentative Plan</h3> | |
<p>The first community technical preview release is scheduled at the beginning of 2010 and the first | |
release is targeted in autumn 2010.<p/> | |
<p>Please visit our <a href="https://www.mathematik.uni-marburg.de/~swt/modref/">Homepage</a> for | |
further information.</p> | |
</div> | |
</div> | |
<?php | |
$html = ob_get_contents(); | |
ob_end_clean(); | |
# Generate the web page | |
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); | |
?> |