Mining Developer Dynamics for Agent-Based Simulation of Software Evolution

Verena Herbold · 2019

Durch die wachsende Zunahme von Software in unserem alltäglichen Leben, nimmt auch die Anpassung der Software an die Nutzung und somit verbundenen ständig wechselnden Anforderungen zu. Dieser Prozess wird als Softwareevolution bezeichnet. In erster Linie geht es um Änderungen an der Software, die für die Evolution verantwortlich sind. Eine wichtige Rolle dabei spielen die Entwickler, da diese die Änderungen vornehmen, indem sie z.B. Code zum Repository hinzufügen. Dem Prozess liegen viele Dynamiken zugrunde, da sich sowohl das Entwicklerteam als auch die Aktivität der einzelnen Entwickler stets ändert. Dies ist vor allem in Open-Source Softwareprojekten der Fall, die hier aufgrund der Verfügbarkeit der Daten analysiert werden. Mehrere Modelle zur Beschreibung von Softwareevolution werden erarbeitet und ausgewertet. Der in der Doktorarbeit verfolgte Ansatz beginnt dort, wo die Änderungen entstehen: bei den Entwicklern. Ein Agenten-basiertes Simulationsmodell ermöglicht es dem Softwareprojektmanager verschiedene Szenarien auszuprobieren und so mögliche Verläufe abzuschätzen. Zum Beispiel kann eine Teamzusammenstellung gewählt werden, um simulativ zu ermitteln, ob diese in der Lage sein wird, genügend Fehler zu beheben. Falls nicht, könnten weitere Entwickler zur Planung hinzugefügt werden. Agenten sind in diesem Fall die Entwickler, die die Softwareartefakte erstellen, ändern, löschen und dabei ggf. Fehler hinzufügen oder korrigieren. Ein großer Teil der Arbeit beschäftigt sich damit, geeignete Simulationsparameter zu finden und durch Mining von Softwarerepositorien zu schätzen, um eine möglichst realitätsnahe Simulation zu ermöglichen. Fragestellungen nach der Größe des Projekts, der Aktivität von Entwicklern, der Fehleranzahl und der Struktur der Software können dabei beantwortet werden. Hierzu werden Methoden aus den Bereichen Data Mining, Machine Learning und Statistik verwendet. Für das Simulationsmodell wurde das Verhalten der Entwickler durch Heuristiken aus den Historien verschiedener Softwareprojekte gemittelt. Dieses Modell stellt bereits verschiedene Entwicklertypen mit unterschiedlicher Arbeitsintensität zur Verfügung. Allerdings konnte nur limitiert eine Dynamik widergespiegelt werden. Für ein verfeinertes Entwicklerverhalten wurde ein statistisches Modell (Hidden Markov Modell) basierend auf mehreren Ebenen Code-basierter und kommunikativer Aktivität trainiert, welches den Entwicklern erlaubt zwischen verschiedenen Aktivitätsleveln zu wechseln. Das gleiche Vorgehen wird genutzt, um Projektaktivität zusammenzufassen und zu bewerten, ob das Projekt noch aktiv ist. Das Hauptinteresse hierbei ist es herauszufinden wieviel Aktivität ein inaktives Projekt noch haben kann, denn eine klare Trennung ist schwierig, aber unabdingbar für potentielle Nutzer des Projekts. Die Resultate von drei Fallstudien haben gezeigt, dass Agenten-basierte Simulation ein vielversprechender Ansatz zur Vorhersage von Softwareevolution ist und dass viele Zusammenhänge damit dargestellt werden können. Insbesondere hat sich gezeigt, dass ein dynamisches Entwickler- und Projektverhalten unabdingbar für die Beschreibung von Softwareevolution sind, da sonst Projektverläufe zu statisch abgebildet werden.

Read the paper · More papers on PaperTik