Wer möchte seinen Großen Beleg oder seine Diplomarbeit zu folgendem Thema schreiben:
Refactoring für OCLMit 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.