This paper will compare two popular software reliability models in use today: the Jelinski-Moranda model and the Musa-Okumoto model. An in-depth critical comparison is not possible in the amount of space available in this paper, but a reasonable attempt will be made to provide the reader with a general consensus of the basic differences and commonalities between the two models. The focus will be on specific attributes and qualities of the models, such as the form of their respective failure rate functions, the data inputs required to exercise the models, and the assumptions that must be true for the models to produce reliable and useful data. After a comparison of the models is presented, a short analysis of the differences in the resulting reliability predictions will be given.
Before a discussion of the main topic is presented, one may inquire why an analysis of software reliability is really necessary. After all, shouldn't software developers just remove as many defects in the code as possible before it is released as a product, thereby making the claim that the product is as reliable as possible?
This may not be desirable. First, the cost to remove the last remaining defect may be disproportionately expensive compared to the total cost spent on repairing all currently discovered defects. Second, removing x% of defects may not increase product reliability by x%. It may be a better business case to accept some level of unreliability and pay for future failure costs. This is one of the key decisions that must be made by the software project manager, and the use of reliability models helps to put a perspective on this problem. The following three questions are important: How reliable is the software currently? How much more testing is needed before the software can be released? Will the reliability requirements be satisfied in time to release the software? Indeed, the field of software reliability engineering is closely allied with and related to the amount of testing (Musa, 1984). With these three questions in mind, a comparison of two reliability models is presented.
Lyu (1996) points out that the failure process is dependent on three principal factors: fault introduction, fault removal and the operational environment. A software reliability model specifies the general form of this dependence. Both the Jelinski-Moranda and Musa-Okumoto models are recommended by the AIAA (Paulson, 1998). Both are widely used and commonly accepted. Of the two, Jelinski-Moranda is more popular and well known. The Musa-Okumoto model is widely accepted in the telecommunications environment (Paulson, 1998). The Jelinski-Moranda model's metrics are readily available and easily collected. Musa-Okumoto allows significant changes to the software while testing and reliability evaluation takes place.
Musa (1999) makes the point that a good reliability model must possess a number of important characteristics. It must give a good projection of future failure behavior. The quantities it produces must be useful to the organization using the model. It must be simple, not confusing to the analyst. It should be widely applicable. The model must be based on sound assumptions. Both of these models possess all these attributes.
Musa and Okumoto (1983) categorize the Jelinski-Moranda model as belonging to the Exponential class, with Binomial type. The Musa-Okumoto model belongs to the Geometric family and is Poisson in type. Since the Musa-Okumoto model belongs to a family, it assumes an infinite number of failures are inherent in the subject system. The functional form of the failure intensity is in terms of the expected number of failures experienced. This model is categorized by failures per time period. The Jelinski-Moranda model belongs to a class, and so it assumes a finite number of failures are present. The functional form of it's failure intensity is in terms of time. This model is categorized by time between failures (Musa, 1999).
There are three basic assumptions that are common to both models (Farr, 1996a), and these are known as the Standard Assumptions:
1. The software is operated in a way that can be mapped to the reliability predictions (model estimates derived can be used in the environment that the predictions are desired).
2. Every fault, of a specific severity class, has an equal chance of occurring.
3. Failures, when faults are detected, are independent.
In addition to the standard assumptions, Jelinski-Moranda has the following assumptions:
1. Errors occur by accident.
2. Failure rate is proportional to the number of remaining defects.
3. Failure rate remains constant over the intervals between fault occurrences.
4. Faults are corrected instantaneously and perfectly – no new faults are introduced.
Likewise, the Musa-Okumoto model has specific assumptions as well. They are, again in addition to the standard assumptions:
1. Failure intensity decreases exponentially with the expected number of failures experienced.
2. The cumulative number of failures follows a Poisson process.
It is important that these assumptions be taken seriously. In fitting any model to a given set of data, the accuracy of the predictions are only as good as the appropriateness of the model chosen.
The data requirements for both models are the same and simple in concept. There are two parameters, only one of which is needed. One is the elapsed time between failures. The other is the actual times that the software failed. Both models use execution time. Musa (1999) points out that only the Musa basic and Musa-Okumoto models are explicitly defined as being in the execution time domain. All others are either calendar time models or their domains are not explicitly stated.
In light of the questions earlier in this paper, each of the two models presented for comparison here provide a good mechanism for future predictions of software faults, and hence, a reliability estimation. These predictions can be used to adjust resource allocations and schedule testing time. Both of these models perform fairly well in this regard. However, Farr (1996b) clearly points out that software, under reliability evaluation of these models, "… must have matured to the point that extensive changes are not being routinely made".
The Jelinski-Moranda (J-M) model is one of the earliest proposed, often called the de-eutrophication model. It was developed by two McDonnell Douglas employees, Jelinski and Moranda, while working on a few Navy projects. The rate of fault detection is directly proportional to the current fault content of the software. The hazard rate of the J-M model is best expressed as shown in equation 1. This clearly shows that the failure rate decreases proportionally with the
|
(1) |
parameter , called the
proportionality constant and shows a per-fault constant hazard rate. N
represents the total number of faults in the software. Figure 1 shows graphically how the rate decreases as faults
are discovered. Although the plot is shown as a continuous function, in reality
the hazard rate is a step function since improvements in reliability only take
place when a failure is fixed. The hazard rate decreases by
every time a fault is
fixed.
Figure 1 - Failure intensity versus failures |
The Musa-Okumoto (M-O) model demonstrates a hazard rate that is exponential in nature, as shown in equation 2, and is a continuous function.
|
(2) |
In this case, the hazard rate is
not constant, but decreases exponentially as failures occur (see Figure 1). The parameter , is called the failure intensity decay parameter. It
indicates the magnitude of the failure rate change with respect to faults. In
this model, the hazard rate is controlled by an initial rate modified by an
exponential decay as determined by the decay parameter
. The M-O model is called logarithmic since the expected
number of failures over time is a logarithmic function (as can be seen by
plotting the natural logarithm of failure intensity over mean failures as Musa
(1999) suggests). One of the important key points to remember is that in the
J-M model, fixes contribute to the overall reliability, whereas in the M-O
model, they do not have any direct effect on reliability.
In both models, the value of the decay parameter controls the shape of
the resultant hazard rate curve. Although Figure
1 shows no cross of model lines, this is not always the
case. Figure 2 and Figure
3 show the family of curves that can arise from varying
values of the decay parameter.
Figure 2 – Musa-Okumoto family of curves |
Figure 3 – Jelinski-Moranda family of curves |
In order to examine these two models more closely, the analysis is moved to a time domain viewpoint. The two models possess different failure intensity functions, as expected. Equations 3 and 4 represent the failure intensity functions for the J-M and M-O models respectively. Figure 4 shows a sample failure intensity plot with respect to execution time.
|
(3) |
|
(4) |
Figure 4 - Failure intensity versus execution time |
The M-O model shows a fairly rapid decrease in failure rate in the early period of execution while the J-M model shows a failure rate that remains high for a much longer period. Later, the M-O curve flattens and the decrease rate is very slow. The exponential rate of decrease in the M-O model indicates that earlier discoveries of failures have a greater impact on reducing the failure intensity function than those found later (Farr, 1996c).
|
(5) |
|
(6) |
Finally, the cumulative failure function (mean value function) for each of the models are given in equation 5 for J-M and equation 6 for M-O. They represent how failures accumulate over time.
Figure 5 shows a representation of the cumulative number of failures predicted by each model. Notice the flattening of the J-M curve indicative of a finite failure model.
Figure 5 - Mean failures experienced versus execution time |
One of the questions at the start of this paper proposed a
possible goal of a software development firm. That is, to determine when
sufficient testing has been completed on a software system so it can be
released with a known reliability evaluation. In regards to the M-O model, this
can be answered through use of equation 7. is the initial
failure intensity,
is the required
failure intensity
|
(7) |
(value desired before product is deemed ready to release), is the intensity
decay parameter and
the elapsed execution
time. Once the value of
is determined and the
remaining parameters entered, the result of the calculation yields the amount
of further execution time required to achieve the required failure intensity.
Although specific to the M-O model it illustrates the usefulness of software
reliability engineering in answering the question "how much more testing
is necessary …" (Paulson, 1998).
In discussing the reliability predictions of the two models Musa (1999) reminds us that reliability is dependent not only on the failure intensity but also on the period of execution time. As the period of time increases, the reliability of the system decreases.
The Musa-Okumoto model clearly shows a tendency to produce
low MTTF values in the initial period of software test, as the failure
intensity function is very steep in the early execution time periods (MTTF is
approximated by the inverse of the failure rate). Farr (1996d) recommends this
model for systems that are likely to have operational profiles that are
non-uniform to a great degree. After the initial period of shakeout, the MTTF
values will increase rapidly. Since the reliability of a system is a
function of the cumulative density function
as shown in equation
8, and since
is the integral of
over time,
is essentially given
by equation 9. Based on this relationship, reliability values
|
(8) |
|
(9) |
(MTTF) for M-O are very good later on in the testing phase as the
curve of flattens
dramatically.
Jelinski-Moranda follows a more gradual reliability improvement curve as the MTTF values tend to remain rather constant, although decreasing with execution time. This is to be expected as J-M assumes a fixed number of faults in the system.
A very general comparative analysis of two software reliability models, the Musa-Okumoto model and Jelinski-Moranda model, has been described. Both are acceptable models and are recommended for use provided they are used properly. Software modifications, not fixes, must be completed for these models to produce reasonable predictions of reliability.
Farr, W. (1996a). Software Reliability Modeling Survey. In M. R. Lyu (Ed.), Handbook of Software Reliability Engineering (p. 78). New York: McGraw-Hill.
Farr, W. (1996b). Software Reliability Modeling Survey. In M. R. Lyu (Ed.), Handbook of Software Reliability Engineering (p. 77). New York: McGraw-Hill.
Farr, W. (1996c). Software Reliability Modeling Survey. In M. R. Lyu (Ed.), Handbook of Software Reliability Engineering (p. 102). New York: McGraw-Hill.
Farr, W. (1996d). Software Reliability Modeling Survey. In M. R. Lyu (Ed.), Handbook of Software Reliability Engineering (p. 104). New York: McGraw-Hill.
Lyu, M. R. (1996). Software Reliability Modeling Survey. In M. R. Lyu (Ed.), Handbook of Software Reliability Engineering (p. 18). New York: McGraw-Hill.
Musa, J. D. (1984). Software Reliability. In C. R. Vick, & C. V. Ramamoorthy (Eds.), Handbook of Software Engineering (p. 393). New York: Van Nostrand Reinhold Company.
Musa, J. D. (1999). Software Reliability Engineering. New York, New York: McGraw-Hill.
Musa, J. D., & K. Okumoto (1983). Software Reliability Models: concepts, classification, comparisons, and practice. In J. K. Skwirzynski (Ed.), Electronic systems effectiveness and life cycle costing, NATO ASI Series (pp. 395-424). Heidelberg: Springer-Verlag.
Paulson, J. and Yue, T. (1998). Software Reliability Measurement Plan for CellTel Ltd. [Online]. Available: http://cern.ucalgary.ca/~paulson/SENG623/MetricsPlan/metricsplan.html
Farr, W. (1996). Software Reliability Modeling Survey. In M. R. Lyu (Ed.), Handbook of Software Reliability Engineering (p. 78). New York: McGraw-Hill.
Fenton, N. E., & Neil, M. (1999). A Critique of Software Defect Prediction Models. IEEE Transactions on Software Engineering, 25, 675-687.
Grams, T. (1999). Reliability Growth Models Criticized.
[Online]. Available:
http://www.fh-fulda.de/~fd9006/RGM/RGMcriticized.html
Hecht, M, Tang, D., & Hecht, H. (1996). Software
Reliability Assessment – Myth and Reality. [Online]. Available:
http://appl.nasa.gov/library/docs/issues12/inppm12h.htm
Lanubile, F. & Visaggio, G. (1997). Evaluating predictive quality models derived from software measures: lessons learned. The Journal of Systems and Software, 38, 225-234.
Littlewood, B. (2000). Problems of Assessing Software
Reliability. [Online]. Available:
http://www.csr.city.ac.uk/people/bev.littlewood/bl_public_papers/SCSS_2000/SCSS_2000.pdf
Lyu, M. R. (1996). Software Reliability Modeling Survey. In M. R. Lyu (Ed.), Handbook of Software Reliability Engineering (p. 18). New York: McGraw-Hill.
Musa, J. D. (1984). Software Reliability. In C. R. Vick, & C. V. Ramamoorthy (Eds.), Handbook of Software Engineering (p. 393). New York: Van Nostrand Reinhold Company.
Musa, J. D. (1999). Software Reliability Engineering. New York, New York: McGraw-Hill.
Musa, J. D., & K. Okumoto (1983). Software Reliability Models: concepts, classification, comparisons, and practice. In J. K. Skwirzynski (Ed.), Electronic systems effectiveness and life cycle costing, NATO ASI Series (pp. 395-424). Heidelberg: Springer-Verlag.
Nour, P. & Mehrotra, R. (2000). Software Reliability and Testing CASRE Report. [Online]. Available: http://sern.ucalgary.ca/~philip/Seng/Seng609.11/Report.html
Paulson, J. and Yue, T. (1998). Software Reliability Measurement Plan for CellTel Ltd. [Online]. Available: http://cern.ucalgary.ca/~paulson/SENG623/MetricsPlan/metricsplan.html
Vouk, M. A. (2000). Software Reliability Engineering.
Wallace, D. R., Ippolito, L. M., and Cuthill, B. (1996).
Reference Information for the Software Verification and Validation Process.
[Online]. Available:
http://hissa.ncsl.nist.gov/HHRFdata/Artifacts/ITLdoc/234/val-proc.html
Wood, A. (1996). Predicting Software Reliability. Computer, 29(11), 69-77.