Detection of Fault-Prone Classes Using Logistic Regression Based Object-Oriented Metrics Thresholds.
Abstract
Background: In the plethora of studies, the objectoriented metrics have been empirically validated to assess the design properties and quantify the high-level quality attributes such as fault-proneness, either at the method or class granularity levels of software. Motivation: A more precise value of an objectoriented metric can be used as an indicator for the developers to make the informed decisions regarding the detection of design flaws and classify the fault-proneness classes. Method: Bender used an approach in the domain of epidemiology studies to derive the threshold values for the risk factors. In our study, we follow the Bender's approach and propose a model to derive the thresholds for a set of software design metrics via non-linear functions, which are described through logistic regression coefficients. Subsequently, we perform four types of analysis and three experiments in order to evaluate and compare the effectiveness of derived thresholds in the domain of classification of fault proneness classes. We use the Precision, Recall, Fmeasure and classification accuracy performance measures to assess the effectiveness of derived metrics thresholds. Results: We compare the derive threshold values of DIT, CA, LCOM and NPM metrics with their existing data distribution based threshold values, and observed the significant increase in the classification accuracy of fault-prone classes. For example, DIT (27%), Ca (2%), NPM (2%) and LCOM (15%) for the Ant-1.5 project. Conclusion: The analysis results suggest that the proposed model can be applied to derive the thresholds of other object-oriented metrics which present either with or without heavy-tailed distribution, however, the proposed model to derive thresholds cannot generalize for all the systems due to variation in data characteristics. Subsequently, the structure of object-oriented software includes a set of design entities such as classes, methods and packages with their relationships, such as inheritance and composition. The object-oriented software metrics are used to compute the complexity of design entities and enable its relationship with external quality attributes such as to scrutinize the fault