Reliability of a software system is its probability of failure free operation in a given environment. Several approaches have been proposed to measure software reliability. As argued by Horgan and Mathur, these approaches are not entirely satisfactory for use in practical software development environments. The goal of this research project is to develop and experiment with methods for estimating the reliability of a system given the reliabilities of its components and of their interfaces with other components.
One method proposed recently is termed "Component-Based Reliability Estimation" (CBRE). Considering the variety of systems and programming languages to which CBRE can be applied, the term "component" defies a general purpose formal definition. For our purpose a component is viewed as a cohesive collection of program functions. The interface between two components could be another component, a collection of global variables, a collection of parameters, a set of files, or any combination of these.
CBRE relies on using the sequence of components executed during system or subsystem testing. In this sense it is different from the approach reported by Laprie and Kanoun which models a system using the Markov chains and computes system reliability using a knowledge of component interconnections, their failure rates, inter-component transition probabilities, and other statistical information. More details of our work with CBRE see: http://serc.uoregon.edu/serc/