Entwicklung eines Werkzeugs zur Extraktion von Mustern aus Software-Archiven zur Quellcode-Optimierung

Student:Marius Kamp
Title:Entwicklung eines Werkzeugs zur Extraktion von Mustern aus Software-Archiven zur Quellcode-Optimierung
Type:bachelor thesis
Advisors:Dotzler, G.; Philippsen, M.
State:submitted on November 6, 2012
Prerequisits:
Topic:

Hintergrund

Software wird im Laufe der Zeit ständig verändert. Der Grund für die Änderungen sind vielfältig. Häufig wurden 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-Optimierungswerkzeug, das alle Stellen im Projekt mit den zu modifizierenden Stellen aufzeigt und für jede Stelle den neu 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-Optimierungswerkzeug gelernt und dann auch in anderen Projekten oder Projektteilen angewandt werden.

Thema
In der Arbeit soll für das am Lehrstuhl entwickelte Code-Optimierungswerkzeug eine Datenbank mit Code-Verbesserungsmustern aufgebaut werden. Die Muster sollen aus dem git-Archiv des Eclipse-Projekts extrahiert werden. In einem ersten Schritt soll dafür eine Schnittstelle vom Code-Optimierungswerkzeug zu git programmiert werden. Danach sollen durch den Vergleich von unterschiedlichen Versionen der Dateien aus dem Eclipse-Archiv Vorher/Nachher-Muster extrahiert werden. Durch den Vergleich der AST-Strukturen, Datenabhängigkeitsanalysen und Textanalysen (Levenshtein-Distanz etc.) sollen verschiedene, unabhängige Änderungen in der selben Datei voneinander getrennt und jeweils als separates Muster erkannt werden. Zur Bewertung, wie relevant ein Muster für zukünftige Projekte ist, soll eine Heuristik entwickelt werden. Die Heuristik soll sich unter anderem an der Größe der Änderungen und der Ähnlichkeit der verschiedenen AST-Graphen orientieren. Danach soll das fertige Werkzeug auf weitere Software Projekte von github angewendet werden.

Meilensteine

  • Implementierung einer Schnittstelle zum git-Archiv des Eclipse-Projekts
  • Implementierung eines Werkzeugs zur Extraktion von Code-Mustern aus dem git-Archiv
  • Entwicklung von Heuristiken zur Bewertung der extrahierten Muster
  • Anwendung des Werkzeugs auf weitere Software Projekte bei github
  • Ausarbeitung

Literatur

  • The Eclipse Project Homepage: https://www.eclipse.org
  • EGit: https://www.eclipse.org/egit/
  • Dotzler, G.; Veldema, R.; Philippsen, M.: Annotation support for generic patches.
  • Aho, Sethi, Ullman, Compilers: Principles, Techniques, and Tools Second Edition, Addison-Wesley, 2006. ISBN 0-321-48681-1
  • Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann, 1997. ISBN 1-55860-320-4
watermark seal