You are here: SE » ThesesHome » ThesisAutoRefactoring

Diplomarbeit

Ermitteln von Refactoringvorschlägen aus dem Verfolgen von Codekopieänderungen

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. Denn viele Techniken, die sich allein auf statische Programmanalyse beschränken oder auf die Analyse der Programmänderungen auf Basis von "revisions" in Versionsverwaltungssystemen setzen, lassen sich mittels der aufgezeichneten "Mikroevolution" von Programmteilen verbessern. So wurde z.B. in der Arbeit Verfolgen von Codekopien zur Defektvermeidung eine Codekopieerkennung realisiert, indem explizit die Kopier- und Einfügetätigkeiten des Programmierers beobachtet wurden, statt nachträglich und statisch Codekopien in Programmen zu erkennen.

Der Gedanke lässt sich weiter verfolgen. Codekopien werden vom Programmierer unter anderem zur Nutzung von sog. Templates benutzt: Er weiß, dass er ein Problem schon einmal an einer anderen Stelle gelöst hat, kopiert diese Stelle, fügt sie an aktueller Stelle ein und ändert sie. Der Unterschied zwischen Original und Kopie lässt sich oft (wenn auch nicht immer) als Ausprägung eines mit Parametern versehenen Templates ausdrücken. Werden z.B. lediglich konstante Werte oder Variablennamen in der Kopie geändert, so hätte das Template die Form einer Unterroutine (Nutzbar als Methode im Code) mit den Variablen als Parameter. Diese Templates können dann als Vorlage zu einem Refactoringvorschlag für den Programmierer dienen. Dies wäre dann eine Art "refactoring-by-example" oder ein Aufzeichnen von parametrisierten Codeerzeugungsmakros.

Aufgabe

Es soll eine weitgehend automatische Ermittlung der bei Kopieraktionen zugrunde liegenden Templates realisiert werden. Ausgehend von den schon vorhandenen Mikroprozessaufzeichnungswerkzeugen (ElectroCodeoGram) und der genannten Arbeit zur Verfolgung von Codekopien ist folgendes zu leisten:
  • Literaturstudium zum Thema automatischem Refactoring und Codeähnlichkeiten
  • Empirisches Charakterisieren von Codekopien und Formalisieren der Arten von Templatebildungen bei Codekopien
  • Evaluieren der schon realisierten Codekopienverfolgung und evtl. Anpassen ihrer Heuristiken
  • Entwicklung eines Werkzeuges zur (semi-)automatischen Erstellung von Refactoringvorschlägen
  • 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.

Detailliertere Informationen sind hier zu bekommen: