Software fault prediction

Abstract Cost-effective and timely software development methods are essential today as software costs and backlogs escalate while applications are developed in rapidly changing environments. Focusing testing efforts on those portions of the code with the largest number of faults can reduce development costs and time, but requires prediction of the potential location of faults. This study is an attempt to determine whether these predictions can be made by applying neural networks to predict faults in several National Aeronautics and Space Administration software development projects. We found that neither code size nor subjective factors describing the problem, schedule, personnel, process, product, and development environment provided enough information with which to predict the total number of faults in highly fault-prone modules. However, if faults tend to cluster, then identification of fault-prone modules through initial testing could guide subsequent testing efforts that focus on these modules.

[1]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[2]  John D. Musa,et al.  Software reliability - measurement, prediction, application , 1987, McGraw-Hill series in software engineering and technology.

[3]  Sarah Brocklehurst,et al.  Recalibrating Software Reliability Models , 1990, IEEE Trans. Software Eng..

[4]  Taghi M. Khoshgoftaar,et al.  Predicting software errors, during development, using nonlinear regression models: a comparative study , 1992 .

[5]  Lee L. Gremillion Determinants of program repair maintenance requirements , 1984, CACM.

[6]  Jon Valett,et al.  Data collection procedures for the Software Engineering Laboratory (SEL) database , 1992 .

[7]  Victor R. Basili,et al.  Software errors and complexity: an empirical investigation0 , 1984, CACM.

[8]  David N. Card,et al.  Evaluating Software Engineering Technologies , 1987, IEEE Transactions on Software Engineering.

[9]  B. Adelson,et al.  The Role of Domain Expenence in Software Design , 1985, IEEE Transactions on Software Engineering.

[10]  Muneo Takahashi,et al.  An empirical study of a model for program error prediction , 1985, ICSE '85.

[11]  Victor R. Basili,et al.  An Empirical Study of a Syntactic Complexity Family , 1983, IEEE Transactions on Software Engineering.

[12]  David Lorge Parnas,et al.  Software aspects of strategic defense systems , 1985, CACM.

[13]  L. Darrell Whitley,et al.  Prediction of Software Reliability Using Connectionist Models , 1992, IEEE Trans. Software Eng..

[14]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[15]  Alan R. Feuer,et al.  Some Results from an Empirical Study of Computer Software , 1979, ICSE.

[16]  Susan A. Sherer,et al.  A cost-effective approach to testing , 1991, IEEE Software.

[17]  Laura Ignizio Burke Introduction to artificial neural systems for pattern recognition , 1991, Comput. Oper. Res..

[18]  Tze-Jie Yu,et al.  Identifying Error-Prone Software—An Empirical Study , 1985, IEEE Transactions on Software Engineering.

[19]  John E. Gaffney,et al.  Estimating the Number of Faults in Code , 1984, IEEE Transactions on Software Engineering.

[20]  Sheldon M. Ross,et al.  Software Reliability: The Stopping Rule Problem , 1985, IEEE Transactions on Software Engineering.

[21]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[22]  David N. Card,et al.  Empirical Study of Software Design Practices , 2004 .

[23]  Ytzhak H. Levendel Improving quality with a manufacturing process , 1991, IEEE Software.

[24]  C. Mallows,et al.  When Should One Stop Testing Software , 1988 .

[25]  Victor R. Basili,et al.  An Investigation of Human Factors in Software Development , 1979, Computer.

[26]  Barry W. Boehm,et al.  Improving Software Productivity , 1987, Computer.

[27]  Adam A. Porter,et al.  Learning from Examples: Generation and Evaluation of Decision Trees for Software Resource Analysis , 1988, IEEE Trans. Software Eng..

[28]  Barry W. Boehm,et al.  Understanding and Controlling Software Costs , 1988, IEEE Trans. Software Eng..

[29]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[30]  Amrit L. Goel,et al.  Optimum release time for software systems based on reliability and cost criteria , 1984, J. Syst. Softw..

[31]  M. Lipow,et al.  Number of Faults per Line of Code , 1982, IEEE Transactions on Software Engineering.