Measuring Structural Software Quality
Knaappila, Jani (2020)
Knaappila, Jani
2020
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2020111823284
https://urn.fi/URN:NBN:fi:amk-2020111823284
Tiivistelmä
The purpose of this thesis is to research a way to measure quality attributes of software and find metrics that can then be used to improve the quality of software.
Software quality can be understood in different ways by different people. Therefore, software quality is first described from a standards point of view. Two categories for software quality metrics are identified and further investigated. Product-related quality metrics are metrics that are measured from a static code, a technic, which is known as static code analysis. Another category is then the process related metrics. Process related metrics measure how people develop software. Multiple studies have shown that metrics measuring how software is developed, are more accurate of predicting faults than static code analysis.
Three metrics were chosen to be measured: Code ownership, Code Churn and Code Complexity. It is described in detail how those are calculated in practice. Further, an aggregate metric is introduced to give a single number as a quality indicator. The framework where the solution needs to operate is defined, including software source code structure, software repository environment and issue tracking software. The software solution is then defined and was developed to measure these metrics.
This proof of concept solution was then used to measure metrics from a set of software components in a software repository. Results were then analysed and explained. One software component was chosen to be more closely examined, and from there several files with the highest value for an aggregate metric were analysed even in more detail.
Finally, the solution was evaluated by comparing predictions against real issues. Results were inconclusive but provide similar results as previous studies. These results are encouraging. There are several threats to validity issues, but this can be engaged with when this proof of concept is further developed.
Software quality can be understood in different ways by different people. Therefore, software quality is first described from a standards point of view. Two categories for software quality metrics are identified and further investigated. Product-related quality metrics are metrics that are measured from a static code, a technic, which is known as static code analysis. Another category is then the process related metrics. Process related metrics measure how people develop software. Multiple studies have shown that metrics measuring how software is developed, are more accurate of predicting faults than static code analysis.
Three metrics were chosen to be measured: Code ownership, Code Churn and Code Complexity. It is described in detail how those are calculated in practice. Further, an aggregate metric is introduced to give a single number as a quality indicator. The framework where the solution needs to operate is defined, including software source code structure, software repository environment and issue tracking software. The software solution is then defined and was developed to measure these metrics.
This proof of concept solution was then used to measure metrics from a set of software components in a software repository. Results were then analysed and explained. One software component was chosen to be more closely examined, and from there several files with the highest value for an aggregate metric were analysed even in more detail.
Finally, the solution was evaluated by comparing predictions against real issues. Results were inconclusive but provide similar results as previous studies. These results are encouraging. There are several threats to validity issues, but this can be engaged with when this proof of concept is further developed.