Show simple item record

Mining Developer Dynamics for Agent-Based Simulation of Software Evolution

dc.contributor.advisorGrabowski, Jens Prof. Dr.
dc.contributor.authorHerbold, Verena
dc.date.accessioned2019-07-10T08:13:40Z
dc.date.available2019-07-10T08:13:40Z
dc.date.issued2019-07-10
dc.identifier.urihttp://hdl.handle.net/21.11130/00-1735-0000-0003-C15C-C
dc.identifier.urihttp://dx.doi.org/10.53846/goediss-7551
dc.language.isoengde
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/4.0/
dc.subject.ddc510de
dc.titleMining Developer Dynamics for Agent-Based Simulation of Software Evolutionde
dc.typedoctoralThesisde
dc.contributor.refereeGrabowski, Jens Prof. Dr.
dc.date.examination2019-06-27
dc.description.abstractgerDurch 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.de
dc.description.abstractengThe steady growth of software in our daily life results in the need for quicker adaption of the software changing usage and requirements. This process is defined as software evolution. Primarily, it is concerned with changes that are responsible for the evolution. The most important contribution to this process results from developers, e.g., by adding code to the repository. This process is highly dynamic as the team constellation as well as the activity of individual developers is always changing. This is especially the case for open-source software (OSS) projects which are analyzed in this thesis because of the free availability. We create and evaluate several models describing software evolution. The main focus of the approach described in this thesis is in the source of the changes, i.e., the developers. Using Agent-based simulation, project managers have the ability to try different scenarios and estimate possible software evolution trends. For example, it is possible to choose a team constellation and evaluate if the chosen team will be able to fix enough bugs using the simulation output. If not, more developers can be added to the simulation. In this case, the developers are agents who create, update, and delete software artifacts and possibly add or fix bugs at the same time. Huge parts of this thesis are dedicated to find suitable simulation parameters and estimate them by mining software repositories to gain a realistic simulation. Questions like the size of the software project, the activity of developers, the number of bugs, and the structure of the software under simulation can be answered. We apply methods from data mining, machine learning and statistics for our work. For the simulation, the behavior of developers is estimated using heuristics gained from analyzing the history of different software projects. The resulting simulation model reflects different developer roles with varying workload. Although, the representation of OSS dynamics was limited. For a fine-grained developer contribution behavior, a state-based probabilistic model (Hidden Markov Model) was trained based on different levels of code-based and communication-based activities. This allows the developers to switch between different of activity. The same procedure is used to summarize the whole project activity with the aim to evaluate whether a project is still active. Therefore, we are interested in finding out how much activity is still performed in inactive projects, since a strict separation is difficult to find, but important for potential users of the project. The results of three case studies show that Agent-based simulation is a promising approach for the prediction of software evolution and that many relations can be described this way. In particular, it turned out that a dynamic developer and project behavior is indispensable for the description of OSS evolution, because otherwise the representation of software processes is too static.de
dc.contributor.coRefereeWaack, Stephan Prof. Dr.
dc.subject.engAgent-Based Simulationde
dc.subject.engSoftware Evolutionde
dc.subject.engMining Software Repositoriesde
dc.subject.engHidden Markov Modelsde
dc.subject.engDeveloper Contributionde
dc.identifier.urnurn:nbn:de:gbv:7-21.11130/00-1735-0000-0003-C15C-C-2
dc.affiliation.instituteFakultät für Mathematik und Informatikde
dc.subject.gokfullInformatik (PPN619939052)de
dc.identifier.ppn1672306361


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record