An underlying assumption for this thesis is that quantitative assessment of the ability of a software project to perform software changes can be a valuable complement to qualitative methods for evaluating and improving project processes and products. A software change is a coherent and independent unit of work that improves a functional or non-functional quality of a software system, and may effect one or more system modules. By measuring properties of software changes over time, software projects may improve their ability to identify what influences the cost and quality of the changes, giving them better cost estimates and helping them identify ways to improve
The goal of this thesis was to provide such information by identifying measures of software change that are possibly related to change-level effort and quality, provide exact definitions of the measures, to create a tool to extract the measures, and finally, to validate the measures using available empirical maintenance effort data. Many software projects today use some kind of issue or bug tracking tool to manage changes that need to be applied to a system. Likewise some sort of version control system (VCS) is often used to keep track of the actual modifications to the body of software itself. In this thesis, we focus on retrieving change-level measurements from information resident in such tools.
We reviewed literature on measures that have been conjectured to correlate with effort and quality of changes, as well as literature on how such changes could be extracted. Based on this, we created a UML based domain model that provided a basis for consistent and precise definitions of change measures. The same model constituted the basis for the design of a measurement tool, the VCSMiner, which can be used by researchers or practitioners to extract change level measures. The tool extracts measurements of size and complexity of changes, as well as measurements of the experience of the developers implementing it
The correctness of the measurements provided by the tool was then verified by comparing them to that of similar measurements provided by manual extractions and existing scripts. The measurements were validated by conducting a correlation analysis to see if they correlated to the cost of change. Identification of possibly redundant measures were performed by investigating the internal correlations between the measures provided by the tool. The usefulness of such measurements were evaluated in a group discussion with the developers in the projects providing the empirical data.
We conclude that quantitative, change-level measurement can indeed prove useful for software projects, as well as research into the evolution of software. The creation of an extendible, VCS-impendent tool demonstrated that the extraction of measurements can be fully automated, which is essential for resource constrained software projects. In the future, the tool created as part of the thesis can be extended with regards to available measurements, and possibly becoming part of a larger framework for automated analysis and presentation.