Investigating code fault proneness using program slicing
Lead Research Organisation:
Brunel University London
Department Name: Information Systems Computing and Maths
Abstract
This feasibility study explores the relationship between program slices and faults. The aim is to investigate whether the characteristics of program slices can be used to identify fault-prone code hotspots. Slicing metrics and dependence clusters are used to characterise the slices in a software component. The relationship between the characteristics of those slices in the component and the faults in that component are then analysed. Identifying fault-prone code is difficult and reliable predictors of fault-proneness are not widely reported in the literature. Program slicing is an established software engineering technique to support the detection and correction of known faults. Once a problem has emerged, slicing enables all statements that could have caused that problem to be identified and extracted. This extracted code makes the identification and removal of the fault much easier. We propose to investigate whether slicing could also be a good predictor of latent faults that have not yet caused a problem. The results of this study will show whether the use of program slicing can be extended as a reliable tool to predict fault-prone code. Our previous proof of concept study suggests that this investigation is viable and that slicing may offer valuable insights into fault-proneness.
Organisations
People |
ORCID iD |
Tracy Hall (Principal Investigator) | |
Paul Wernick (Co-Investigator) |
Publications
Bowes D
(2012)
SLuRp
COUNSELL S
(2012)
A THEORETICAL AND EMPIRICAL ANALYSIS OF THREE SLICE-BASED METRICS FOR COHESION
in International Journal of Software Engineering and Knowledge Engineering
Hall T
(2014)
Some Code Smells Have a Significant but Small Effect on Faults
in ACM Transactions on Software Engineering and Methodology
Shepperd M
(2014)
Researcher Bias: The Use of Machine Learning in Software Defect Prediction
in IEEE Transactions on Software Engineering