Electronic Thesis and Dissertation Repository

Thesis Format

Monograph

Degree

Master of Science

Program

Computer Science

Supervisor

Konstantinos Kontogiannis

Abstract

Software quality assessment and prediction has been a research hotspot and has become even more critical in continuous software engineering. Modifications to a software product developed following a continuous software engineering process typically commence as a sequence of frequent commits, following a philosophy of “commit small, commit often.” Continuous integration (CI) and continuous deployment (CD) are essential concepts in this development environment. The challenge then is to develop techniques and tools which allow the development team to assess the overall quality posture of a software module in the period from a bug-inducing commit (i.e., when a bug is reported) to a bug-fixing commit (i.e. when a bug is reported fixed. The hypothesis is that in this period, the quality posture of the software modules involved in a bug-inducing/bug-fixing commit pair undergoes changes which may give developers insights that a bug-fixing commit is not only within reach but also the overall quality posture of the system is improving. In this thesis, we perform a quantitative analysis of how the posture of a software module changes and whether those changes follow a pattern that can be used as a predictor for an imminent bug-fixing commit. In this thesis, the posture of a module is denoted by a vector of metrics values computed from the source code and from information extracted from GitHub and Bugzilla repositories. The results indicate that a considerable number of bug-fixing commits in many software projects is preceded by a typical posture, and the occurrences of some posture combinations are more likely than others to be succeeded by a bug-fixing commit.

Summary for Lay Audience

Software development teams always pursue high-quality software, yet quality as a concept is multifaceted and hard to measure. Software bugs are significant causes of system failure and poor quality. While most of the work in this field relies on Machine Learning and software metrics to predict and fix potential quality-influencing bugs in advance, more effort must be made to understand when the actual bugs are fixed, representing the point where product quality is restored. In this thesis, we examine first whether there are any commonly occurring noticeable patterns which manifest an unhealthy system posture and second, whether the manifestations of these patterns are more probable to be followed by fixes of bugs. The findings in the thesis lead to a better understanding of quality restoration, which is an essential part of the software quality profile.

Share

COinS