[Back]


Diploma and Master Theses (authored and supervised):

T. Rausch:
"Build Failure Prediction in Continuous Integration Workflows";
Supervisor: S. Schulte, W. Hummer; Institute of Information Systems, Distributed Systems Group, 2016; final examination: 2016-09-30.



English abstract:
Continuous integration (CI) is a practice where developers integrate their work into the main stream of development frequently. A CI server continuously monitors the source code repository of a project and automatically executes the software build process when new changes are checked in. If a build fails, developers have to identify and fix the cause of the broken build, leading to a delay in the integration process and stalling further development. Large software projects often have long running builds that exacerbate this problem.
Despite the widespread use of CI, little is known about the multiplicity of errors that cause builds to fail. Yet, understanding when and why build errors occur is an important step towards improving developer productivity in the CI workflow. By identifying characteristics of development practices that cause build failures, we can predict preliminary results for an integration. This helps developers react to possible problems even before a build is initiated, thereby saving time and resources.
In this thesis, we introduce CInsight, a comprehensive framework for analyzing CI workflows and build failures. We conduct an empirical study on real-world data from 14 open source software projects. Data from source code repositories and build systems are explored to gather qualitative and quantitative evidence about the multiplicity and frequency of CI build errors. Statistical methods are used to examine the relationship between development practices and build failures. Based on the results, we devise a method for CI build failure prediction.
Our results show that failing unit-tests and violations of code quality rules are the main causes for build failures. The statistical analyses reveal that the type and amount of previous errors are the strongest predictor for future failures. Our best prediction models
yield average recall and precision values of 0.82 and 0.80, respectively. Furthermore, our approach allows to update a prediction during the execution of a build.

German abstract:
Kontinuierliche Integration (englisch "Continuous Integration" (CI)), ist eine Methode der Agilen Softwareentwicklung, die das kontinuierliche Zusammenführen und Testen von Änderungen an der Software Codebasis vorsieht. Ein CI-Server überwacht fortlaufend
das Quellcode-Repositorium und führt bei neu eingegangenen Änderungen automatisch den Software-Erstellungsprozess (englisch "Build") durch. Schlägt der Build fehl, so muss die Ursache des Fehlers gefunden und behoben werden, was eine Verzögerung im Integrierungsprozess und der weiteren Softwareentwicklung zur Folge hat. In komplexen
Softwareprojekten kann der Build-Prozess sehr langwierig sein, wodurch sich das Problem weiter verschärft.
Trotz des weitverbreiteten Einsatzes von CI ist nur wenig über die vielfältigen Ursachen für fehlschlagende Builds bekannt. Jedoch ist ein eingehendes Verständnis darüber wann und wie solche Fehler entstehen ein wichtiger Aspekt um die Produktivität in CI-Arbeitsabläufen zu verbessern. Durch die Identifikation von Entwicklungspraktiken, die häufig zu Ausfällen führen, wird es möglich, Vorhersagen über den Erfolg einer bevorstehenden Integration zu treffen. Eine solche Vorhersage erlaubt es Entwicklern auf
mögliche Probleme einzugehen noch bevor der Build-Prozess ausgelöst wird, wodurch Zeit und Ressourcen gespart werden können.
In dieser Arbeit präsentieren wir eine Vorgehensweise für die Analyse des CI-Arbeitsablaufs sowie eine empirische Studie basierend auf Daten von 14 Open-Source-Softwareprojekten, welche CI einsetzen. Daten aus Quellcode-Repositorien und Build-Systemen werden untersucht um qualitative und quantitative Aussagen über die Vielfalt und Häufigkeit von Build-Fehlern zu treffen. Mittels statistischer Verfahren wird die Beziehung zwischen Merkmalen des Entwicklungsprozesses und Build-Fehlern analysiert und bewertet.
Basierend auf den Ergebnissen dieser Untersuchungen wird ein Verfahren für die Vorhersage von Build-Fehlern vorgestellt.
Unsere Ergebnisse zeigen, dass fehlschlagende Modultests und das Verletzen von Programmierstil-Richtlinien die häufigsten Ursachen für Build-Fehler sind. Den statistischen Untersuchungen zu Folge sind die Anzahl und Art vorhergehender Fehler die stärksten Prädiktoren für künftige Ausfälle. Unsere besten Vorhersagemodelle für Ausfälle
im Build-Prozess erzielen eine Trefferquote von 0.82 und eine Genauigkeit von 0.80. Darüber hinaus erlaubt unser Ansatz das Aktualisieren einer Vorhersage während der Ausführung eines Builds.

Keywords:
Empirical Software Engineering / Machine Learning / Predictive Analytics / Continuous Integration / Build Failure Prediction

Created from the Publication Database of the Vienna University of Technology.