Übersicht Inhaltsverzeichnis Vorwort 1 Einführung 2 Agile und UML-basierte Methodik 3 Kompakte Übersicht zur UML/P 4 Prinzipien der Codegenerierung 5 Transformationen für die Codegenerierung 6 Grundlagen des Testens 7 Modellbasierte Tests 8 Testmuster im Einsatz 9 Refactoring als Modelltransformation 10 Refactoring von Modellen 10.1 Quellen für UML/P-Refactoring-Regeln 10.2 Additive Methode für Datenstrukturwechsel 10.3 Zusammenfassung der Refactoring-Techniken 11 Zusammenfassung und Ausblick Literatur |
10 Refactoring von ModellenAuf Basis der Grundlagen für Modelltransformationen und ihrer Spezialisierung als Refactoring-Regeln beinhaltet dieses Kapitel eine Diskussion von möglichen Formen von Refactoring-Regeln für die UML/P, die Übertragung von Regeln anderer Sprachen auf die UML/P und eine additive Vorgehensweise für die Durchführung größerer Datenstrukturwechsel. 10.1 Quellen für UML/P-Refactoring-Regeln Die Anzahl der Refactoring-Regeln ist ähnlich den Theoremen der Mathematik im Prinzip unbeschränkt. Deshalb ist es erstrebenswert, neben einem grundlegenden Satz von Regeln und einem ausgewählten Portfolio an komplexeren Regeln für spezifische Problemstellungen, Mechanismen zu kennen, die die Übertragung von vorhandenen Refactoring-Regeln anderer Sprachen sowie die Spezialisierung und die Kombination von Regeln erlaubt. In diesem Kapitel wird deshalb zunächst untersucht, welche Refactoring-Regeln in anderen Sprachen existieren, und in welcher Form Sie in die UML/P übertragen werden können. Die darauf aufbauende exemplarische Diskussion komplexer Refactorings bietet wie auch bei den Testmustern gegenüber einer detaillierten Liste von Regeln den Vorteil der selbständigen Adaptierbarkeit. Abschnitt 10.1 diskutiert Mechanismen zur Erstellung von Refactorings und zur Übertragung vorhandener Refactorings auf die UML/P. Als Quellen eignen sich dafür zum Beispiel die der UML/P zugrunde liegende Programmiersprache Java, die Automatentheorie für Statecharts und Verifikationstechniken für die OCL. In Abschnitt 10.2 wird darauf aufbauend ein auf OCL-Invarianten basierendes Verfahren zum Wechsel von Datenstrukturen vorgestellt, die mit Klassendiagrammen modelliert sind. Dieses Verfahren erlaubt es, individuelle und größere Refactoring-Schritte zu entwickeln und durchzuführen. Es nutzt dabei Anleihen aus der Verifikation, indem es prädikative Beziehungen zwischen den auszutauschenden Datenstrukturen herstellt, prüft aber deren Korrektheit nur durch automatisierte Tests.
|
|||||||||