Diplomarbeit
Verfolgen von Codekopien zur Defektvermeidung
Projekt
Aufzeichnung des Mikroprozesses der Softwareentwicklung
Art
30% Theorie, 50% Implementation, 20% Evaluation
Beschreibung
Der
Mikroprozess der Softwareentwicklung bezeichnet die Aufeinanderfolge von Ereignissen während des Kodierens, Testens und Entwerfens von Software. In der AG Software Engineering wird derzeit ein System zur automatischen Aufzeichnung möglichst vieler Ereignisse wie Codeänderungen, Testläufe, API-Browsen, u.s.w. erstellt. Zweck eines solchen Systems ist es, empirische Daten zu erlangen über Arbeitsweisen von Programmierern, insbesondere unter dem
Aspekt der Fehlervermeidung.
Die Aufzeichnungsdaten können aber auch zu anderen praktischen Zwecken genutzt werden. Eine solche Erweiterung von Entwicklungsumgebungen, nämlich die Kopieverfolgung, soll in dieser Arbeit implementiert werden. Die Idee ist folgende: Oftmals wird ein Codestück von einer anderen Stelle kopiert (Copy), eingefügt (Paste) und ein wenig angepasst (Change). Nicht immer macht es nämlich Sinn, aus dem kopierten Codefragment eine neue Methode zu entwickeln (Refactoring), denn evtl. lohnt eine Verallgemeinerung für nur einen Fall nicht oder die gemachte Änderung an der Kopie ist keine Verallgemeinerung, die man elegant mit Hilfe von Methodenparametern ausdrücken kann.
Das Problem einer solchen Aktion bleibt aber bestehen: Ähnlich einem Schatten (siehe Bild) sollte sich die Kopie ändern, wenn sich das Original ändert. Wenn also nach einer solchen "Copy-Paste-Change"-Aktion das Original angepasst wird, ist es oft nötig, dass die hervorgegangenen Kopien daraufhin ebenfalls angepasst werden. Ziel dieser Arbeit ist es, solche Änderungswarnungen automatisch zu generieren.
Aufgabe
Ausgehend von den schon vorhandenen Mikroprozessaufzeichnungswerkzeugen (
ElectroCodeoGram) sind dementsprechend zu konzipieren und zu erstellen:
- Ein Erkenner einer "Copy-Paste-Change"-Aktion in Eclipse oder Visual Studio
- Ein Beobachter des Originals, genauer: ein Erkenner von Änderungen des Originals (hier ist schon Vorarbeit geleistet worden)
- Ein Warnmechanismus zur Aufforderung der Änderung der Kopien
- Eine Evaluation des Werkzeuges in einer realistischen Umgebung inklusive Benennung der Einsatzgrenzen
Wie üblich schließt die Arbeit mit einer schriftlichen Ausarbeitung und einem Vortrag ab.
Ergebnis
Die Arbeit wurde durchgeführt von
SofoklisPapadopoulos und betreut von
SebastianJekutsch und
LutzPrechelt.
Detailliertere Informationen sind hier zu bekommen: