Masterarbeit zur automatisierten Software-Code-Analyse
Die Masterarbeit zum Thema „Automated Selection of Software Refactorings that
improve Performance and Stability" von Nicoalai Moesus wurde für die ICSOFT 2018 angenommen.
Die Arbeit ist in Zusammenarbeit mit QMETHODS und der Technische Universität Berlin
entstanden und wird Ende Juli auf der Konferenz in Porto vorgestellt.
„Automated Selection of Software Refactorings that improve Performance and Stability"
Die Performance und die Stabilität eines Programms sind Eigenschaften, die bei
der Softwareentwicklung eine wesentliche Rolle spielen. Eine schwache Performance
bzw. die fehlende Stabilität einer Anwendung wirkt sich unmittelbar auf die Funktionalität
der Software aus. Daher gilt es, diese Schwachstellen bei der Entwicklung zu vermeiden
bzw. sie mittels Durchführung von Softwaretests zu finden.
Im Rahmen der Masterarbeit wurde untersucht, wie man den Quellcode eines Programms
effektiv analysieren kann, um genau die Abschnitte zu finden, die für die Performance
und die Stabilität relevant sind. Ausgangspunkt ist die Kombination der klassischen
Anti-Pattern-Erkennung mit einer auf Messdaten basierten Performance-Analyse.
Anti-Pattern Erkennung
Mit der statischen Anti-Pattern Erkennung wird der Software-Code analysiert, ohne
dass das Programm läuft. Die statische Analyse benötigt keine Daten und ist daher
immer gültig. Abhängig vom Fokus der Analyse variieren die Anti-Patterns zwischen
Verletzungen des Programmierstils und Formulierungen, die auf einen Programmierfehler
hinweisen. Folglich zeigt dieses analytische Vorgehen sämtliche Unstimmigkeiten des
Quellcodes an, unabhängig davon, ob sie sich auf die Funktionalität des Programms
auswirken. In der Masterarbeit wurde für die statische Code-Analyse das Werkzeug PMD
eingesetzt.
Auf Messdaten basierte Performance-Analyse
Die dynamische Software-Analyse untersucht ein Programm im Betrieb. Für diese
Form der Analyse wird lediglich ein Set von Eingabewerten verwendet. Folglich ist
das Ergebnis dieser Software-Analyse mit jeder Ausführung einmalig. Jeder Eingabewert
kann direkt mit dem Verhalten des Programms verknüpft werden und gibt somit Aufschluss
über die Funktionalität. Eine dynamische Software-Analyse liefert einen wertvollen
Einblick, der im Hinblick auf die Verbesserung der Funktionalität (Performance und
Stabilität) maßgeblich sein kann. In der Masterarbeit wurde das dynamische Analysewerkzeug
Dyntrace AppMon eingesetzt.
Ergebnis der Masterarbeit
Hauptgedanke der Arbeit war die Erstellung einer Bewertungsskala von Softwareeigenschaften,
die sowohl von der statischen Quellcode-Analyse als auch von der dynamischen Software-Analyse
angezeigt werden. Darauf basierend wurde eine Liste mit konkreten Refactorings erstellt,
die je nach Einfluss auf die Software-Performance sortiert wurden. Um die Ergebnisse
besser bewerten zu können, wurden Microbenchmarks implementiert, gemessen und bewertet.
In einer Fallstudie mit zwei Experimenten wurde die Effektivität dieses Ansatzes untersucht
und eine messbare Verbesserung der Performance erreicht. Die Umsetzung der Refactorings
war im Vergleich zu einer statischen Quellcode-Analyse mit weniger Aufwand verbunden.
Dies lässt sich zum einen auf die automatisierte Selektion zurückführen, mit der effektive
Refactorings schnell und unkompliziert ermittelt werden konnten. Zum anderen vereinfachten
die konkreten Verbesserungsvorschläge grundlegend den gesamten Prozess des Refactorings.
Wollen Sie die komplette Arbeit lesen? Dann freuen wir uns über Ihre Kontaktaufnahme!