Fast Abstracts Archives . .

FastAbstracts


WHAT IS a
FastAbstract

The History

Archives of
FastAbstracts

ISSRE 2003
ISSRE 2002
ISSRE 2001
ISSRE 2000
ISSRE 1999
ISSRE 1998
FTCS 1999
FTCS 1998



 

 

       

 

Software Component Reliability Analysis


William W. Everett1
Principal Consultant, SPRE, Inc.

Over the years of teaching and applying quantitative methods of analyzing software reliability, I have not been satisfied with having to wait until testing starts before doing any real quantitative analysis of software reliability. Current approaches rely on collecting failure event data during system test and then “fitting” one of a number of reliability growth models to the data . The “fitted” model is used to estimate reliability measures of interest.

To overcome this shortcoming, we have been developing an approach called Software Component Reliability Analysis (SCRA). The approach has been distilled into a six step procedure (see the table below for an outline of what is involved in each step). The procedure starts very early in the software development process, during the architecture or high level design phase. During this phase, the software is divided into modules and the features and functions specified in the requirements are allocated to the modules. The analysis starts by dividing the software into components. The component breakdown follows the software module breakdown but includes additional structure to aid reliability analysis. Descriptive reliability models such as Musa’s Basic Execution Time (BET, see [MUS87]) and Everett’s Extended Execution Time (EET, see [EVE92]) models are used to model the reliability of each component. The parameters of these models can be estimated in terms of the properties of the software and the processing patterns it is subjected to. Thus component reliabilities can be estimated in terms of software and processing properties prior to the start of test. As test cases are developed, they are analyzed in terms of there processing impact on individual components. Also, estimates are developed of the processing impact on components during operational usage. The occurrence frequencies of test cases in operational usage (as specified in the operational profile (see [MUS93]) help in doing this). This information on processing patterns is used in combining component reliabilities to estimate software module and software system reliabilities.

As the reliability analysis is done prior to the start of testing, the output of such analysis can be used in:

  • engineering the reliability of software during design
  • developing a testing strategy to attain optimal reliability growth during test
  • estimate the amount of testing needed to attain a specified level of reliability.

Also, the analysis does not assume that test cases must be executed in an order as specified by the operational profile, thus different orders can be selected and their effect on reliability growth investigated. When testing starts, modeling is used in a different way than current approaches. Rather than using failure data to fit models, the calibrated models from SCRA are used to create control charts. Failures observed during test are tracked on the control charts to determine whether the calibrated SCRA models explain the failures observed during test. When failure events fall outside control limits, this triggers the need to redo reliability analysis, using more information that becomes available during testing.

SCRA Six Step Procedure

 
Step Notes
1. Divide software into components Start with architecture breakdown of software into modules. Further divide into components taking into account newly developed code, incremental delivery of code, critical nature of processing, and distributed processing if there are multiple processors.
2. Characterize properties of components Properties that affect reliability of a software component include: residual fault content, component size in source and machine instructions, machine processing speed, fault exposure ratio, loopiness/branchness of code, operational stress.
3. Characterize how usage stresses components During Test: determine how each test case stresses (in terms of relative processing) each component and the order in which test cases are run. During Operation: the relative likelihood of occurrence of test cases in operation.
4. Model reliability growth of components Use BET, EET models or approximations to EET model. Model parameters can be determined from properties developed in steps 2 and 3.
5. Superimpose component reliabilities Using Poisson properties of models, can express software system reliability quantities (e.g. cumulative failures, field failure rate) as weighted sums of individual component quantities. Need to specify order in which test cases will be executed in test.
6. Do confirmatory analysis during testing Use models from step 5 to create control charts. Log failure event observe during test on control charts. When failures fall outside control limits, repeat analysis in steps 1 - 5. Use added information available during test.

Currently, we are in the process of implementing guidelines, tools and pracniques (= practical techniques) trade-off guidelines (effort vs. accuracy) to support the analyst in carrying out each step of the SCRA procedure.

REFERENCES

[EVE92] - An “Extended Execution Time” Software Reliability Model; Everett, W. W.; Third International Symposium on Software Reliability Engineering; IEEE CS Press; October, 1992; pp 4-13.

[MUS87] - Software Reliability; Measurement, Prediction, Application; Musa, J. D.: Iannino, A.; Okumoto, K.; McGraw Hill, 1987.

[MUS93] - Operational Profiles in Software Reliability Engineering, Musa, J. D., IEEE Software Magazine; vol. 10, no. 2; March 1993, pp. 14-32.


1 Author Contact: SPRE, Inc., 4212 Rancho Centro NW, Albuquerque, NM 87120-3495,
phone: (505) 890-7773, fax: (505) 890-2933, email: w.w.everett@computer.org