Diplomarbeit

Verfolgen von Codekopien zur Defektvermeidung

schatten

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:

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: