Entwicklung eines Werkzeugs zur Identifizierung vergleichbarer Code-Modifikationen in Software-Archiven

BearbeiterIn:Christoph Romstöck
Titel:Entwicklung eines Werkzeugs zur Identifizierung vergleichbarer Code-Modifikationen in Software-Archiven
Typ:masters thesis
Betreuer:Dotzler, G.; Philippsen, M.
Status:abgeschlossen am 3. Dezember 2013
Vorausetzungen:
Thema:

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
Am Lehrstuhl wurde ein Werkzeug zur Extraktion von Code-Änderungsmustern aus git-Archiven entwickelt. Dieses Werkzeug soll in dieser Arbeit so erweitert werden, dass ähnliche Muster aufgefunden werden. Dafür sollen unscharfe String-Matching-Algorithmen (Levenshtein-Distanz, Needleman–Wunsch-Algorithmus, Smith–Waterman-Algorithmus, etc.) implementiert und auf die Code-Muster angewendet werden. Da diese Algorithmen am effizientesten mit kleinen Alphabeten arbeiten, sollen für die Änderungsmuster passende Codierungen definiert werden. Die unterschiedlichen Algorithmen und Codierungen sollen auf Code-Muster aus Software Projekten von github angewendet werden. Dabei sollen die Algorithmen und Codierungen hinsichtlich ihrer Laufzeit und Güte evaluiert werden.

Meilensteine

  • Definition von möglichen Codierungen für Code-Muster
  • Implementierung von unscharfen String-Matching-Algorithmen
  • Anwendung der Algorithmen auf Code-Muster auf Software Projekte bei github
  • Evaluierung der Algorithmen
  • Ausarbeitung

Literatur

  • 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
  • https://en.wikipedia.org/wiki/Approximate_string_matching
watermark seal