Refactorings in Language Development with Asymmetric Bidirectional Model Transformations


Abstract—Software language descriptions comprise several heterogeneous interdependent artifacts that cover different aspects of languages (abstract syntax, notation and semantics). The dependencies between those artifacts demand the simultaneous adaptation of all artifacts when the language is changed. Changes to a language that do not change semantics are referred to as refactorings. This class of changes can be handled automatically by applying predefined types of refactorings. Refactorings are therefore considered a valuable tool for evolving a language.

We present a model transformation based approach for the refactoring of software language descriptions. We use asymmetric bidirectional model transformations to synchronize the various artifacts of language descriptions with a refactoring model that contains all elements that are changed in a particular refactoring. This allows for automatic, type-safe refactorings that also includes the language tooling. We apply this approach to an Ecore, Xtext, Xtend based language description and describe the implementation of a non-trivial refactoring.

KeywordsDSL evolution, language description, refactoring, bidirectional model transformations


  author    = {Martin Schmidt and
               Arif Wider and
               Markus Scheidgen and
               Joachim Fischer and
               Sebastian von Klinski},
  title     = {Refactorings in Language Development with Asymmetric Bidirectional
               Model Transformations},
  booktitle = {SDL Forum},
  year      = {2013},
  pages     = {222-238},
  ee        = {},
  crossref  = {DBLP:conf/sdl/2013},
  bibsource = {DBLP,}
  editor    = {Ferhat Khendek and
               Maria Toeroe and
               Abdelouahed Gherbi and
               Rick Reed},
  title     = {SDL 2013: Model-Driven Dependability Engineering - 16th
               International SDL Forum, Montreal, Canada, June 26-28, 2013.
  booktitle = {SDL Forum},
  publisher = {Springer},
  series    = {Lecture Notes in Computer Science},
  volume    = {7916},
  year      = {2013},
  isbn      = {978-3-642-38910-8},
  ee        = {},
  bibsource = {DBLP,}

Leave a Reply

Required fields are marked *.