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

Catalog of Generic Model Refactorings

In the following we present an overview of all refactorings we could specify generically and apply to several metamodels. The original name, as declared in the standard work,[1] can be seen in the first column. It's the name of defined refactorings for programming languages. The following columns are used for sub-entries for each refactoring and show its concrete instances how they could be applied to other metamodels.

Reused 11 generic refactorings for 76 specific refactorings.

Refactoring (Generic Name) Applied for metamodel Specific Refactoring
Rename X
Owl Rename Element
Ecore Rename EElement
BPMN Rename Identifiable
UML2 Rename Element
Forms Rename Option
Rename Employee
Rename Office
Roles Rename Role Model Element
Sandwich_simple Rename Ingredient
Rename Room
Rename Door
TimedAutomata Rename EElement
Rename Procedure
Rename Declaration
Rename Program
Java Rename Element
Conference Rename Conference Element
ConcreteSyntax Rename Token
Feature Rename Feature
Appflow Rename Element
Rename Company
Rename Department
Rename Employee
Introduce Reference Class
Ecore Derive Composite Interface
Create Sub Interface
Create Subclass
Feature Introduce Constraint
Extract Xwith Reference Class
BPMN Extract Sub Process
Uml Extract Composite State
Forms Introduce Item Group
Simple_gui Encapsulate In Panel
Textadventure Move To New Room
Pl0 Extract Procedure
Java Extract Method
Conference Extract Track
ConcreteSyntax Extract Rule
Appflow Encapsulate In Panel
Extract X
Extract EEnum
Introduce Parameter Object
Extract Super Class
Extract Interface From Features
Extract Interface From Operations
Extract Super Class
Extract Interface
Move X
Ecore Pull Up Feature
Pull Up Property
Pull Up Operation
Pull Up Operation To Interface
Pull Up Operation To Super Interface
Pl0 Pull Up Constant
Extract Sub X
Ecore Extract Sub EPackage
UML2 Extract Sub Package
Company Extract Sub-Department
Remove Unused Contained X
UML2 Remove Unused Classes
Java Remove Unused Parameters
Remove Empty Contained X
UML2 Remove Empty Superclass
Java Remove Empty Methods
Move X loosely
Forms Move Group Next To
Office Move Employee Next To
Select X With Var
Dresden OCL
Rename Variable
Rename Simple Name CS
Rename Named Literal Exp CS
Select X
Dresden OCL
Remove Redundant Brackets
Remove All Redundant Brackets
Remove Empty Variable Declaration
Remove All Empty Variable Declarations
Remove Unused Variable Declarations
Split Expression
Split Expression Atomic
Inline Variable
Inline Variable Here
Merge Atomic Expressions
Merge Expressions
Extract Variable

List of refactorings still to realise:

  • more Ecore Refactorings (Push Down, ...)
  • more OWL Refactorings
  • more UML Refactorings
  • Modelica Refactorings
  • more refactorings for UPPAAL Timed Automata

  1. Martin Fowler: Refactoring - Improving The Design Of Existing Code, Addison Wesley, 1999.