Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Edelta: an approach for defining and applying reusable metamodel refactorings

254 views

Published on

Metamodels can be considered one of the key artifacts of any model-based project. Similarly to other software artifacts, metamodels are expected to evolve during their life-cycle and consequently it is crucial to develop approaches and tools supporting the definition and re-use of metamodel refactorings in a disciplined way.

This paper proposes Edelta, a domain specific language for specifying reusable libraries of metamodel refactorings. The language allows both atomic and complex changes and it is supported by an Eclipse-based IDE. The developed supporting environment allows the developer to apply refactorings both in a batch manner and in a step-by-step fashion, which provides developers with an immediate view of the evolving Ecore model before actually changing it.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Edelta: an approach for defining and applying reusable metamodel refactorings

  1. 1. Dipartimento di Ingegneria e Scienze Università degli Studi dell’Aquila dell’Informazione e Matematica Edelta: an approach for defining and applying reusable metamodel refactorings Lorenzo Bettini - DiSIA, University of Florence Davide Di Ruscio – DISIM, Università degli Studi dell’Aquila Ludovico Iovino – Gran Sasso Science Institute, L’Aquila Alfonso Pierantonio - DISIM, Università degli Studi dell’Aquila
  2. 2. 2 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Refactoring in metamodeling - Metamodels play a key role in any model-based approach - They are subject of evolutionary pressures that can arise for several reasons and several maintenance goals - Refactoring can be defined as the process of changing a software system to improve its design, readability, and to reduce bugs
  3. 3. 3 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Refactoring in metamodeling - Metamodel refactorings can be expressed as a sequence of additions, deletions and changes of elements - Metamodel refactorings can involve also complex operations, which are obtained by mixing atomic changes - Existing approaches are mainly based on tedious and error- prone manual activities - The possibility to organize and reuse already defined refactorings is limited
  4. 4. 4 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas A simple metamodel evolution
  5. 5. 5 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas A simple metamodel evolution Evolution The attributes firstname and lastname of the metaclass Person have been merged into the new name attribute
  6. 6. 6 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas A simple metamodel evolution EvolutionThe metaclass Place has been added as an abstract super class of WorkPlace and LivingPlace Their address attribute has been pulled-up in the new metaclass
  7. 7. 7 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas A simple metamodel evolution Evolution The gender attribute of the metaclass Person has been replaced by the new sub-classes Male and Female
  8. 8. 8 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas A simple metamodel evolution Evolution The reference works of the metaclass Person has been replaced by the new metaclass WorkingPosition between the new version of Person and WorkPlace
  9. 9. 9 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Refactoring in metamodeling Modelers might want to define reusable metamodel changes so to similarly evolve other metamodels in the future
  10. 10. 10 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas A simple metamodel evolution 1. The attributes firstname and lastname of the metaclass Person have been merged into the new name attribute; 2. The metaclass Place has been added as an abstract super class of WorkPlace and LivingPlace. Their address attribute has been pulled-up in the new metaclass; 3. The gender attribute of the metaclass Person has been replaced by the new sub-classes Male and Female 4. The reference works of the metaclass Person has been replaced by the new metaclass WorkingPosition between the new version of Person and WorkPlace Extract Superclass Introduce Subclass
  11. 11. 11 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Mastering Metamodel Refactoring - Operating metamodel refactorings without a dedicated support can be an error-prone task - There is the need for languages and tools supporting the specification and application of metamodel refactorings in a disciplined way - The used language should provide at least the following characteristics: - Conciseness and comprehensibility - Integration - Static checks - Refactoring composability - IDE support
  12. 12. 12 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas The Edelta Language - Edelta is a domain specific language for specifying and applying metamodel refactorings - It provides modelers with constructs for specifying atomic refactoring: - additions, deletions and changes - and to define complex reusable metamodel changes by properly composing already defined ones
  13. 13. 13 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas A simplified version of the Edelta metamodel
  14. 14. 14 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Xtext-based implementation of Edelta
  15. 15. 15 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Xtext-based implementation of Edelta
  16. 16. 16 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Applying Edelta to PersonList metamodel example Edelta program
  17. 17. 17 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Applying Edelta to PersonList metamodel example
  18. 18. 18 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Applying Edelta to PersonList metamodel example Edelta libraries Edelta program
  19. 19. 19 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas The Edelta editor - The Edelta editor provides typical Eclipse tooling mechanisms
  20. 20. 20 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas The Eclipse-based Edelta editor - The Edelta editor provides typical Eclipse tooling mechanisms static type checking, syntax highlighting, code completion, ..
  21. 21. 21 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas The Eclipse-based Edelta editor - On-the-fly interpretation of the specified refactorings - Immediate view of the modified Ecore model in the Outline view.
  22. 22. 22 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Application of a sample Edelta specification Applied to Result
  23. 23. 23 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Discussion points Edelta vs. traditional GPL techniques - Conciseness and comprehensibility. If we compare the Edelta specification of the running example with the generated Edelta Java code in terms of lines of code, the result would be 42 vs 225 LOC - Integration: We designed Edelta in order to enable its integration with EMFMigrate. Edelta will be used to specify the patterns that have to be matched to trigger model migrations …
  24. 24. 24 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Discussion points … - Static checks: Edelta is able to detect refactoring errors at compilation time - Refactoring Composability: possibility of defining reusable refactoring libraries that can be included when specifying Edelta programs - IDE support: Edelta is distributed with a complete Eclipse IDE tooling support available at https://github.com/LorenzoBettini/edelta
  25. 25. 25 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Conclusions - In Model Driven Engineering metamodels play a key role - Similarly to any kind of software artifacts, metamodels can evolve - Edelta is a domain specific language for specifying and applying reusable metamodel refactorings - It allows the developer to specify both atomic and complex changes - The implementation of Edelta is based on Xtext - The language is endowed with an Eclipse-based development environment providing also early evaluation of the refactoring being applied
  26. 26. 26 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Future work - Extend the language and supporting environment by introducing the notion of quality models - modelers will have the possibility to assess the refactoring impact on the quality attributes that might be defined and associated to the metamodel being changed - Adoption of the language for specifying the evolution of other kinds of modeling artifacts - E.g., model transformations, models, … - Use of the language in coupled evolution scenarios - Integration in EMFMigrate
  27. 27. 27 ME+ CommitMDE Workshop at MODELS 2017 - September 18, 2017, Austin, Texas Thank you !!!!

×