Software reliability modeling has, surprisingly to many, been around since the early 1970s with the pioneering works of Jelinski and Moranda, Shooman, and Coutinho. The theory behind software reliability is presented, and some of the major models that have appeared in the literature from both historical and applications perspectives are described. Emerging techniques for software reliability research field are also included. The following four key components in software reliability theory and modeling: historical background, theory, modeling, and emerging techniques are addressed. These items are discussed in a general way, rather than attempting to discuss a long list of details.
Software reliability modeling has, surprisingly to many, been around since the early 1970s with the pioneering works of Jelinski and Moranda (1972), Shooman (1972, 1973, 1976, 1977), and Coutinho (1973). We present the theory behind software reliability, and describe some of the major models that have appeared in the literature from both historical and applications perspectives. Emerging techniques for software reliability research field are also included. We address the following four key components in software reliability theory and modeling: historical background, theory, modeling, and emerging techniques. These topics are introduced in brief below
1. Historical Background
1.1. Basic Definitions
Software reliability is centered on a very important software attribute: reliability. Software reliability is defined as the probability of failure-free software operation for a specified period of time in a specified environment (ANSI, 1991). We notice the three major ingredients in the definition of software reliability: failure, time, and operational environment. We now define these terms and other related software reliability terminology.
A failure occurs when the user perceives that a software program ceases to deliver the expected service.
Bibliography: | |A. A. Abdel-Ghaly, P. Y. Chan, and B. Littlewood, Evaluation of Competing Software Reliability Predictions, IEEE Transactions | | |on Software Engineering SE-12(9), 95–967 (September 1986) | |W. W. Agresti and W. M. Evanco, Projecting Software Defects From Analyzing Ada Designs, IEEE Transactions on Software | | |Engineering SE-18(11), 98–997 (November 1992) | |AIAA (American Institute of Aeronautic and Astronautics), Recommended Practice for Software Reliability, ANSI/AIAA R-013–1992,| | |AIAA, Washington, DC, 1993 | |J. E. Angus, R. E. Schafer, and A. Sukert, Software Reliability Model Validation, Proceedings of the 1980 Annual Reliability | | |and Maintenance Symposium, 1980 | |ANSI/IEEE, Standard Glossary of Software Engineering Terminology, STD-729–1991, ANSI/IEEE, Washington, DC, 1991. | | |R | |G. Becker and L. Camarinopoulos, A Bayesian Estimation Method for the Failure Rate of a Possibly Correct Program, IEEE | | |Transactions on Software Engineering SE-16(11), 130–1310 (November 1990) | |S. Brocklehurst, P. Y. Chan, B. Littlewood, and J. Snell, Recalibrating Software Reliability Models, IEEE Transactions on | | |Software Engineering SE-16(4) (1990) | |W. D. Brooks and R. W. Motley, Analysis of Discrete Software Reliability Models, RADC-TR-80–84, Rome Air Development Center, | | |Rome, NY, 1980 | |M. H. Chen, M. R. Lyu, and E. Wong, Effect of Code Coverage on Software Reliability Measurement, IEEE Transactions on | | |Reliability (2001) | |1992). | | |W | |J. de. S. Coutinho, Software Reliability Growth, IEEE Symposium on Computer Software Reliability, 1973. | | |L | |Biometry, SIAM, Philadelphia, PA, 1974. | | |A | |177–183 (1990). | | |A | |(1984). | | |T | |SE-11(4) (1985). | | |T | |on Software Engineering SE–12(9) (1986). | | |W | |Software Reliability Engineering, International Symposium on Software Reliability Engineering, Astin, TX., 1991. | | |W | |American Statistical Association 72 (1977). | | |E | |Transactions on Reliability 28 (1979). | | |J | |Rome, NY, 1977. | | |A | |IEEE Transactions on Reliability R-28(3) (1979). | | |S | |P. Guo and M. R. Lyu, Software Quality Prediction Using Mixture Models with EM Algorithm, Proceedings of the 1st Asia-Pacific | | |Conference in Quality Software (APAQS2000), Hong Kong, October 2000, pp | |H. Hecht, Allocation of Resources for Software Reliability, Proceedings of COMPCON Fall 1981 Washington, DC, 1981. | | |C | |Fault Detection Rates, IEEE Transactions on Reliability (2001). | | |G | |A. Iannino, J. D. Musa, K. Okumoto, and B. Littlewood, Criteria for Software Reliability Model Comparisons, IEEE Transactions | | |on Software Engineering SE–10(6) (1984) | |Z. Jelinski and P. B. Moranda, Software Reliability Research, in W. Freiberger, ed., Statistical Computer Performance | | |Evaluation, Academic Press, New York, 1972 | |W. S. Jewell, Bayesian Extensions to a Basic Model of Software Reliability, IEEE Transactions on Software Engineering | | |SE-11(12) (1985) | |H. Joe and N. Reid, Estimating the Number of Faults in a System, Journal of the American Statistical Association (1984). | | |N | |F3, 441–460 (1983). | | |T | |Selected Areas in Communications 8(2), 25–264 (Febuary 1990). | | |T | |Research Letters, p. 1 (1982). | | |W | |W. Kremer, Birth-Death and Bug Counting, IEEE Transactions on Reliability R–32(1) (1983). | | |S | |N. Langberg and N. D. Singpurwalla, Unification of Some Software Reliability Models Via the Bayesian Approach, SIAM Journal of| | |Scientific and Statistical Computation 6(3), 781–790 (1985) | |J.-C. Laprie, Dependability Evaluation of Software Systems in Operation, IEEE Transactions on Software Engineering SE–10(6) | | |(1984) | |B. Littlewood, A Bayesian Differential Debugging Model for Software Reliability, Proceedings of the IEEE Computer Society, | | |International Computer Software Applications Conference, 1980 pp | |B. Littlewood, Stochastic Reliability-Growth: A Model for Fault Removal in Computer Programs and Hardware-Design, IEEE | | |Transactions on Reliability R–30(4) (1981) | |B. Littlewood and A. Sofer, A Bayesian Modification to the Jelinski-Moranda Software Reliability Growth Model, Journal of | | |Software Engineering 2, 30–41 (1987)