Agile Modellierung mit
UML
Loading

10 Refactoring von Modellen

Auf 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
10.1.1 Definition und Darstellung von Refactoring-Regeln
10.1.2 Refactoring in Java/P
10.1.3 Refactoring von Klassendiagrammen
10.1.4 Refactoring in der OCL
10.1.5 Einführung von Testmustern als Refactoring
10.2 Additive Methode für Datenstrukturwechsel
10.2.1 Vorgehensweise für den Datenstrukturwechsel
10.2.2 Beispiel: Darstellung von Geldbeträgen
10.2.3 Beispiel: Einführung des Chairs im Auktionssystem
10.3 Zusammenfassung der Refactoring-Techniken

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.


Bernhard Rumpe. Agile Modellierung mit UML. Springer 2012