Abstract
The past 10 years have seen the prediction of software defects proposed by many researchers using various metrics based on measurable aspects of source code entities (e.g. methods, classes, files or modules) and the social structure of software project in an effort to predict the software defects. However, these metrics could not predict very high accuracies in terms of sensitivity, specificity and accuracy. In this chapter, we propose the use of machine learning techniques to predict software defects. The effectiveness of all these techniques is demonstrated on ten datasets taken from literature. Based on an experiment, it is observed that PNN outperformed all other techniques in terms of accuracy and sensitivity in all the software defects datasets followed by CART and Group Method of data handling. We also performed feature selection by t-statistics based approach for selecting feature subsets across different folds for a given technique and followed by the feature subset selection. By taking the most important variables, we invoked the classifiers again and observed that PNN outperformed other classifiers in terms of sensitivity and accuracy. Moreover, the set of ‘if- then rules yielded by J48 and CART can be used as an expert system for prediction of software defects.
TopOverview Of The Techniques Applied
Here we present a brief overview of the machine learning, soft computing and statistical techniques that are employed in this chapter. Since, BPNN is too popular to be overviewed here, the rest of the techniques are presented here.
Group Method of Data Handling (GMDH)
The GMDH was proposed by Ivakhnenko (1968). The main idea behind GMDH is that it tries to build a function (called a polynomial model) that would behave in such a way that the predicted value of the output would be as close as possible to the actual value of output (http://www.inf.kiew.ua/gmdhhome).GMDH (Farlow, 1984) is a heuristic self organizing method that models the input-output relationship of a complex system modeling.
GMDH model with multiple inputs and one output is a subset of the components of the base function in Equation (1) as
(1) where
f is an elementary function depends on different sets of inputs,
![978-1-4666-5202-6.ch129.m02](https://igiprodst.blob.core.windows.net:443/source-content/9781466652026_90651/978-1-4666-5202-6.ch129.m02.png?sv=2015-12-11&sr=c&sig=1f%2BWTgGIBqsadFz5VusBpqC2atBwmcpkHhepF4Qqzfw%3D&se=2019-11-16T10%3A44%3A03Z&sp=r)
represents coefficients and
m represent the number of base function components. In order to find the best solution GMDH algorithm considers various component subsets of the base function called partial models. The coefficients of these models are estimated by the least squares model.
Key Terms in this Chapter
Software Defect: A software defect is the basic unit of measurement of the quality of software.
Design Complexity: The Cyclomatic complexity of a module's reduced flow graph. The flow graph, “G,” of a module is reduced to eliminate any complexity which does not influence the interrelationship between design modules. According to McCabe, this complexity measurement reflects the modules calling patterns to its immediate subordinate modules.
Crossover: The crossover operation is the selection of who gets to mate is a function of the “FITNESS” of the individual.
Lines of Code: Measured according to McCabe's line counting conventions.
Fitness: It is a measure to select individuals (probabilistically) to undergo genetic operations.
Smoothing Factor: The radial deviation of the Gaussian functions.
Global Minimum: That theoretical solution with the lowest possible error.
Momentum: It helps the neural network to overcome obstacles (local minima) in the error surface and settle down at or near the global minimum.
Mutation: It takes one parent and replaces a randomly selected chunk of that parent with a randomly generated sequence of code.
Essential Complexity: The extent to which a flow graph can be reduced by decomposing all the sub flow graphs that are “D-structured primes.”