Inkrementelles Clustering ähnlicher Quelltext-Änderungen

BearbeiterIn:Martin Endrizzi
Titel:Inkrementelles Clustering ähnlicher Quelltext-Änderungen
Typ:bachelor thesis
Betreuer:Kreutzer, P.; Dotzler, G.; Philippsen, M.
Status:abgeschlossen am 8. Juni 2016
Vorausetzungen:
Thema:

Hintergrund
Software wird im Laufe der Zeit ständig verändert. Die Gründe für die Änderungen sind vielfältig. Häufig werden Fehler gefunden, die behoben werden müssen, oder die API von verwendeten Modulen hat sich geändert und die eigene Software muss angepasst werden. In vielen Fällen taucht ein Fehler nicht nur an einer Stelle auf, sondern an mehreren. API-Änderungen erzwingen oft ebenfalls viele sich mehr oder weniger ähnelnde Code-Anpassungen. Um Zeit zu sparen und um mögliche Fehler zu vermeiden, wäre gerade in diesen Fällen ein Werkzeug hilfreich, das dem Programmierer die Änderungen abnimmt. Ein Weg dies zu realisieren ist das am Lehrstuhl entwickelte Code-Transformationswerkzeug, das alle Stellen im Projekt mit den zu modifizierenden Stellen aufzeigt und für jede Stelle den jeweils angepassten Quellcode als Verbesserung vorschlägt. Da viele Bibliotheken in mehr als einem Projekt verwendet werden und sich viele ähnliche Fehler in anderen unabhängigen Projekten wiederfinden, können die einmal gemachten Änderungen von einem Code-Transformationswerkzeug gelernt und dann auch in anderen Projekten oder Projektteilen angewandt werden.

Thema
Am Lehrstuhl wurde ein Werkzeug zur Extraktion von Code-Änderungsmustern aus git-Archiven entwickelt, das ähnliche Änderungen identifizieren und darauf aufbauend Vorschläge für Entwickler generieren kann. In vorangegangenen Abschlussarbeiten wurden Verfahren entwickelt, um die Änderungsmuster hinsichtlich ihrer Ähnlichkeit bewerten und Gruppen ähnlicher Änderungen identifizieren zu können. Ein Nachteil der bisherigen Verfahren ist, dass diese von Grund auf wiederholt werden müssen, wenn neue Code-Änderungen in das git-Archiv eingepflegt werden. Da dies einen hohen Rechenaufwand bedeutet, sollen in dieser Arbeit inkrementelle Verfahren zur Bestimmung von Gruppen ähnlicher Quelltext-Änderungen implementiert und evaluiert werden. Die Verfahren sollen bei neuen Code-Änderungen eine bereits berechnete Gruppierung der bisherigen Änderungen berücksichtigen, um den Aufwand für das Clustering zu reduzieren. Teil der Arbeit ist es, die implementierten Algorithmen hinsichtlich ihrer Laufzeit und Güte zu evaluieren. Insbesondere sollen die Ergebnisse der inkrementellen Verfahren mit denen der bisherigen Verfahren verglichen werden. Dabei soll evaluiert werden, ob bzw. wann eine vollständige Neuberechnung einer Gruppierung aller Änderungen notwendig ist.

Meilensteine

  • Einarbeitung in verschiedene Clustering-Verfahren
  • Implementierung ausgewählter Verfahren zur inkrementellen Berechnung einer Gruppierung
  • Evaluierung der Algorithmen, Vergleich der Ergebnisse mit denen der bisherigen Verfahren
  • Ausarbeitung

Literatur

  • Romstöck, Christoph: Entwicklung eines Werkzeugs zur Identifizierung vergleichbarer Code-Modifikationen in Software-Archiven. Masterarbeit, Lehrstuhl für Informatik 2, Friedrich-Alexander-Universität Erlangen-Nürnberg, Dezember 2013.
  • Kreutzer, Patrick: Evaluierung von Verfahren zur Detektion von Gruppen ähnlicher Quelltext-Änderungen. Masterarbeit, Lehrstuhl für Informatik 2, Friedrich-Alexander-Universität Erlangen-Nürnberg, November 2015.
  • Dotzler, G.; Veldema, R.; Philippsen, M.: Annotation support for generic patches.
watermark seal