Refactoring is an important technique for restructuring code to improve its
design and increase programmer productivity and code reuse. Performing
refactorings manually, however, is tedious, time consuming and error-prone.
Thus, providing an automated support for them is necessary. Unfortunately
even in our days, such automation is still not easily achieved and requires
formal specifications of the refactoring process. Moreover, extensibility and
tool development automation are factors that should be taken into
consideration when designing and implementing automated refactorings. In this
paper, we introduce a model-driven approach where refactoring features, such
as code representation, analysis and transformation adopt models as
first-class artifacts. We aim at exploring the value of model transformation
and code generation when formalizing refactorings and developing tool
support. The presented approach is applied to the refactoring of Java code
using a prototypical implementation based on the Eclipse Modeling Framework,
a language workbench, a Java metamodel and a set of OMG standards.