E194 - Institut für Information Systems Engineering
-
Datum (veröffentlicht):
2022
-
Umfang:
74
-
Keywords:
machine learning; deep learning; software performance; data mining
en
Abstract:
Software Performance ist eine wichtige nicht-funktionelle Projektanforderung. Produkte wie Webbrowser oder Videospiele müssen ihre Ladezeit niedrig und User-Interaktion flüssig halten um am Markt kompetitiv zu bleiben. Weil vollständiges Testen und Benchmarking für große Projekte nicht möglich ist, müssen andere Tools in den Softwareentwicklungsprozess integriert werden um ein performantes System zu garantieren. In dieser Arbeit betrachten wir den Open-Source-Webbrowser Mozilla Firefox und konstruieren ein Machine Learning Modell, das Programmcode identifizieren soll, der womöglich Performance-Probleme verursacht. So ein Modell kann verwendet werden um Softwareentwicklern durch frühe Hinweise auf verdächtigen Programmcode interaktives Feedback zu geben, oder etwa Code-Reviewern zu helfen ihre Aufmerksamkeit auf Programmcode zu lenken, der wahrscheinlich ein festgestelltes Peformance-Problem ausgelöst hat. Die entscheidende Herausforderung beim Erkennen von Performance-Problemen ist das Data-Labeling - also zu bestimmen welcher Programmcode Probleme in der Vergangenheit verursacht hat. Da der SZZ Algorithmus, der häufig für diese Aufgabe bei der Software-Defekt-Vorhersage verwendet wird, nur unzureichend präzise war, stellen wir eine Labeling-Methode vor, die direkt auf Assoziationen von Bug-auslösenden und Bug-behebenden Issues im Bug-Tracking-System basiert. Obwohl viel Arbeit in traditionelles Feature-Engineering, wie das Berechnen von Programmkomplexitätsmetriken, gesteckt wurde, funktioniert ein Bag-of-words-Modell am besten und erzielt eine 5.7 mal höhere Genauigkeit als zufälliges Raten. Das finale Modell übertrifft das beste auf dem SZZ Algorithmus basierende Modell dreimal mit einem F1-Score von 0.1745, Genauigkeit von 0.2022 und Sensitivität von 0.1535.
de
Software performance is an important non-functional project requirement. Products like web browsers or video games have to keep their loading times low and user interaction smooth to stay competitive in the market. Since exhaustive testing and benchmarking is infeasible for large-scale projects, other tools have to be integrated in the software development process to ensure a performant system. In this thesis, we study the open source web browser Mozilla Firefox and build a machine learning model to predict which source code changes are prone to cause performance regressions. Such a model could be employed to give interactive feedback to developers by raising early warnings for suspicious code, or could be used to help code reviewers to focus their attention on code changes which are likely to have caused a detected performance problem. The key challenge of predicting performance regressions is the difficulty of data labeling, i.e. determining which code change caused a regression in the past. After evaluating the SZZ algorithm, commonly used in software defect prediction for this task, to be insufficiently accurate, we present a labeling approach based directly on associations of bug-introducing and bug-fixing issues in the bug-tracking-system. Even though a lot of effort is put into traditional feature engineering, like computing source code complexity metrics, a bag-of-words model performs best and scores a 5.7 times higher precision than random guessing. The final model outperforms the best model based on the SZZ algorithm three times with a F1-score of 0.1745, precision of 0.2022 and recall of 0.1535.