Wer möchte seinen Großen Beleg oder seine Diplomarbeit zu folgendem Thema schreiben:

Refactoring für OCL
Mit steigender Komplexität von Software wird die Wartbarkeit immer schwieriger. Aus diesem Grund ist es von essentieller Bedeutung, dass Software-Komponenten intelligent entworfen wurden und viele Teile wiederverwendet werden können. Dem Design von Software wird demzufolge eine sehr wichtige Bedeutung zugemessen, damit der Mensch komplexe Systeme schnell erfassen kann. Die Umstrukturierung vorhandenen Codes zur Verbesserung des Designs ist aus diesem Grund ein ständiger Begleiter im Software-Entwicklungsprozess. Wichtig dabei ist, dass das implementierte Verhalten nicht verändert werden darf, da sichergestellt werden muss, dass vor und nach der Umstrukturierung die gleiche Semantik vorliegt. Dieses Vorgehen wird Refactoring genannt.

In einer vorangegangen Arbeit wurde das schon seit langem bekannte Code Refactoring auf Modelle übertragen (Model Refactoring). Dabei wurde gezeigt, dass der Kern eines Refactorings, bestehend aus den teilnehmenden Elementen und den durchzuführenden Transformationsschritten, über Metamodell-Grenzen hinweg wiederverwendet werden kann. In dieser Arbeit ist dabei das Framework Refactory entstanden, mit dem Model Refactorings generisch definiert und durch Mappings auf beliebige Metamodelle in diesen bereitgestellt werden können.

Zur Definition von Constraints und Anfragen auf Modellen und Metamodellen ist OCL sehr weit verbreitet. Zu diesem Zweck wurde das Toolkit Dresden OCL am Lehrstuhl entwickelt. Da OCL-Ausdrücke komplexe Formen annehmen können, ist intelligentes Design auch hier von hoher Bedeutung. Außerdem wurde Refactoring-Unterstützung von der OCL-Community in einer umfangreichen Online-Umfrage als sehr wichtig eingestuft.

Bisher konnten mit Refactory insgesamt 9 generische Model Refactorings spezifiziert werden, aus denen 53 konkrete entstanden sind. Diese werden zur Laufzeit von einem Interpreter ausgeführt und die generisch definierten Transformationsschritte im Kontext des jeweiligen Metamodells angewendet. In dieser Arbeit wird OCL als Ziel-Metamodell festgelegt. Dabei soll mittels Refactory das Toolkit Dresden OCL um Refactoring-Unterstützung erweitert werden, um den Anwender dabei unterstützen zu können, OCL-Ausdrücke im Design zu verbessern. Im einzelnen sind dabei folgende Teilaufgaben zu bearbeiten:
  • intensive Literatur-Recherche über bisher bekannte Refactorings für OCL
  • intensive Literatur-Recherche über bisher bekannte Refactorings für OCL
    Analyse und Definition von weiteren nützlichen und möglichen Refactorings für OCL in Form eines Katalogs
  • Implementierung der gesammelten Refactorings für OCL und Integration in Dresden OCL mittels Refactory
  • Formulierung ermittelter Stärken und Schwächen von Refactory und damit verbundener Lösungsvorschläge
  • prototypische Implementierung ausgewählter Lösungsvorschläge zur Beseitigung der Schwächen


Die Arbeit wird am Lehrstuhl Softwaretechnologie durchgeführt. Bei weiteren Fragen meldet euch hier oder schickt mir eine PM.