
A Quantitative Analysis Between Software Quality Posture and Bug-fixing Commit
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.