Return to search

Generisches Modellrefactoring für EMFText

Code-Refactorings sind gut erforscht und die meisten Entwicklungsumgebungen unterstützen diese. Mit dem Auftrieb der modellgetriebenen Software-Entwicklung (MDSD) stellt sich jedoch eine neue Herausforderung. Zahlreiche neue domänenspezifische Sprachen (DSL) werden entwickelt, wodurch sich die Frage stellt, wie man diesen Werkzeuge an die Hand gibt, die Modell-Refactorings ermöglichen. In dieser Diplomarbeit wird ein Ansatz zum generischen Modell-Refactoring entwickelt, mit dem der Kern eines Refactorings, bestehend aus den teilnehmenden Elementen und den Transformationsschritten, einmalig definiert und anschließend durch ein einfaches Mapping für beliebige DSLs zur Verfügung gestellt wird.:1 Einleitung 1
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Zielstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Überblick über die Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Grundlagen und Begriffsklärung 5
2.1 Code-Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Model Driven Software Development (MDSD) . . . . . . . . . . . . . . . . 6
2.2.1 Meta Object Facility . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.2 DSLs und Modell-Repräsentationen . . . . . . . . . . . . . . . . . 9
2.3 Code als Modell und Modell-Refactoring . . . . . . . . . . . . . . . . . . . 11
2.4 Textuelle Modelle und EMFText . . . . . . . . . . . . . . . . . . . . . . . 13
3 Analyse von Refactoring-Katalogen 17
3.1 Ein Querschnitt vorhandener Code-Refactorings . . . . . . . . . . . . . . . 17
3.1.1 Extract Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1.2 Remove Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1.3 Rename Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.4 Pull Up Member . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.5 Encapsulate Field . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.6 Move Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.7 Form Template Method . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.8 Consolidate Conditional Expression . . . . . . . . . . . . . . . . . 21
3.2 Auswertung und Übertragung auf Modell-Refactorings . . . . . . . . . . . 21
3.2.1 Erzeugung eines Containers . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Erzeugung eines Kind-Elementes . . . . . . . . . . . . . . . . . . . 23
3.2.3 Verschieben eines Elementes . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 Änderung eines Attributes . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.5 Entfernen eines Elementes . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4 Anforderungsanalyse für generisches Modell-Refactoring 29
4.1 Konzeptionelle Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Nichtfunktionale Anforderungen . . . . . . . . . . . . . . . . . . . . . . . 31
5 Analyse existierender Modell-Refactoring-Ansätze 33
5.1 M3-Spezifikation am Beispiel von GenericMT . . . . . . . . . . . . . . . . 33
VIIInhaltsverzeichnis
5.2 M2-Spezifikation am Beispiel von EMF Refactor . . . . . . . . . . . . . . 40
5.3 M1-Spezifikation am Beispiel des Object Recorders . . . . . . . . . . . . . 46
5.4 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6 Konzept des generischen Modell-Refactorings 53
6.1 Modellierung mit Rollen nach Reenskaug, Riehle und Gross . . . . . . . . 54
6.2 Modellierung generischer Modell-Refactorings mit Rollen . . . . . . . . . . 56
6.2.1 Metamodell zur Definition von Kollaborationen zwischen Rollen . 57
6.2.2 Metamodell zur Spezifikation der Schritte eines Modell-Refactorings 60
6.2.3 Metamodell zur Abbildung von Rollen auf ein Ziel-Metamodell . . 69
6.3 Vor- und Nachbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.4 Bewahrung der Semantik . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.5 Horizontale und vertikale Konsistenz . . . . . . . . . . . . . . . . . . . . . 76
6.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
7 Implementierung und Evaluation 81
7.1 Eclipse Modeling Framework . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.2 Role Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.3 Refactoring Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
7.4 Role Mapping Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.5 Durchführung eines Modell-Refactorings durch Interpretation . . . . . . . 98
7.6 Index-Mechanismus zur Wahrung der Konsistenz . . . . . . . . . . . . . . 99
7.7 Kopplung an die UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.8 Testumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.9 Evaluation anhand von mehreren Metamodellen . . . . . . . . . . . . . . . 105
8 Zusammenfassung und Ausblick 113
8.1 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Abbildungsverzeichnis i
Tabellenverzeichnis iii
Listings v
Abkürzungsverzeichnis vii
Literaturverzeichnis ix

Identiferoai:union.ndltd.org:DRESDEN/oai:qucosa:de:qucosa:25559
Date22 July 2010
CreatorsReimann, Jan
ContributorsSeifert, Mirko, Aßmann, Uwe, Technische Universität Dresden
Source SetsHochschulschriftenserver (HSSS) der SLUB Dresden
LanguageGerman
Detected LanguageGerman
Typedoc-type:masterThesis, info:eu-repo/semantics/masterThesis, doc-type:Text
Rightsinfo:eu-repo/semantics/openAccess

Page generated in 0.0025 seconds