On the reuse and recommendation of model refactoring specifications

  • Authors:
  • Jan Reimann;Mirko Seifert;Uwe Aβmann

  • Affiliations:
  • Technische Universität Dresden, Institut für Software- und Multimediatechnik, Dresden, Germany 01062;DevBoost GmbH, Berlin, Germany 10179;Technische Universität Dresden, Institut für Software- und Multimediatechnik, Dresden, Germany 01062

  • Venue:
  • Software and Systems Modeling (SoSyM)
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

Refactorings can be used to improve the structure of software artefacts while preserving the semantics of the encapsulated information. Various types of refactorings have been proposed and implemented for programming languages (e.g., Java or C#). With the advent of (MDSD), a wealth of modelling languages rises and the need for restructuring models similar to programs has emerged. Since parts of these modelling languages are often very similar, we consider it beneficial to reuse the core transformation steps of refactorings across languages. In this sense, reusing the abstract transformation steps and the abstract participating elements suggests itself. Previous work in this field indicates that refactorings can be specified generically to foster their reuse. However, existing approaches can handle certain types of modelling languages only and solely reuse refactorings once per language. In this paper, a novel approach based on role models to specify generic refactorings is presented. Role models are suitable for this problem since they support declaration of roles which have to be played in a certain context. Assigned to generic refactoring, contexts are different refactorings and roles are the participating elements. We discuss how this resolves the limitations of previous works, as well as how specific refactorings can be defined as extensions to generic ones. The approach was implemented in our tool Refactory based on the (EMF) and evaluated using multiple modelling languages and refactorings. In addition, this paper investigates on the recommendation of refactoring specifications. This is motivated by the fact that language designers have many possibilities to enable refactorings in their modelling languages with regard to the language structures. To overcome this problem and to support language designers in deciding which refactorings to enable, we propose a solution and a prototypical implementation.