Empirical validation of object-oriented metrics for predicting fault proneness models

  • Authors:
  • Yogesh Singh;Arvinder Kaur;Ruchika Malhotra

  • Affiliations:
  • University School of Information Technology, GGS Indraprastha University, Delhi, India 110403;University School of Information Technology, GGS Indraprastha University, Delhi, India 110403;University School of Information Technology, GGS Indraprastha University, Delhi, India 110403

  • Venue:
  • Software Quality Control
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

Empirical validation of software metrics used to predict software quality attributes is important to ensure their practical relevance in software organizations. The aim of this work is to find the relation of object-oriented (OO) metrics with fault proneness at different severity levels of faults. For this purpose, different prediction models have been developed using regression and machine learning methods. We evaluate and compare the performance of these methods to find which method performs better at different severity levels of faults and empirically validate OO metrics given by Chidamber and Kemerer. The results of the empirical study are based on public domain NASA data set. The performance of the predicted models was evaluated using Receiver Operating Characteristic (ROC) analysis. The results show that the area under the curve (measured from the ROC analysis) of models predicted using high severity faults is low as compared with the area under the curve of the model predicted with respect to medium and low severity faults. However, the number of faults in the classes correctly classified by predicted models with respect to high severity faults is not low. This study also shows that the performance of machine learning methods is better than logistic regression method with respect to all the severities of faults. Based on the results, it is reasonable to claim that models targeted at different severity levels of faults could help for planning and executing testing by focusing resources on fault-prone parts of the design and code that are likely to cause serious failures.