The static and dynamic models of software defects and reliability
Abstract
The purpose of this research is to identify the factors which can be used to model software defects. The approach employs statistical and stochastic analyses of many software programs collected from three large companies and Purdue University. Our results show that three factors are best correlated with software defects; they are (1) number of unique operands (i.e., variables, constants, and literal strings), (2) number of defects found during the phases of coding and unit testing (called earlier defects), and (3) testing time. The contributions of this research are (1) This research provides different measurements of software defects. It shows that different measurements of defects may lead to completely different results. (2) This research shows that a well-known quality index, defect density, is often misused. (3) This is the first study to our knowledge to employ discriminant analysis to study defects found after delivery. (4) This is the first empirical study of the relationship between earlier defects and later defects. Using this relationship, we constructed a defect model to evaluate the effectiveness of any defect removal process. (5) This research led to a dynamic defect model based on the Markov chain. Compared with the already-known nonhomogeneous Poisson model, this Markov model requires fewer assumptions and provides a better estimate of software reliability. (6) This research combines all the good features of other dynamic models and proposes a composite dynamic model. This defect model exhibits S-shaped curves for the number of cumulative, detected defects and the number of cumulative, fixed defects. The S-shaped curves of cumulative defects are supported by the empirical data from industrial software. (7) Other studies concentrate on either static models or dynamic models, but not both. This research suggests using static models in the earlier phases of the software life-cycle. As the testing process progresses, software developers can rely more on dynamic models. When the software becomes stable (i.e., the curve of cumulative defects flattens), software developers can trust the estimates from the proposed dynamic models.
Degree
Ph.D.
Advisors
Shen, Purdue University.
Subject Area
Computer science
Off-Campus Purdue Users:
To access this dissertation, please log in to our
proxy server.