Software systems typically contain design and code defects that manifest themselves as software failures at various points during program execution. These software faults can be viewed as causing failures to occur according to some chance mechanism that is often taken to be a Poisson process. Individual per-fault failure sequences (resulting from delayed fault detection and software correction) during test execution were analyzed to determine whether they satisfied Poisson process assumptions. The system analyzed, a large, complex, industrial software system, was executed under a defined operational profile corresponding to a controlled command and autonomous event mix characteristic of the system's actual usage. The failure events, defined as severe, system-wide affecting events attributed to software faults, typically occurred following many cycles of interacting system features in the expected user mode. Execution times between failure events were calculated and then statistically analyzed for conformance to Poisson process assumptions. The results indicated that first-time failure events conformed to the assumptions of a Poisson process and were consistent with a reliability growth Poisson model but that per-fault failure sequences attributed to specific faults tended to violate Poisson assumptions due to failure clustering. >
['Willa K. Ehrlich', 'Anthony Iannino', 'Bala Prasanna', 'John P. Stampfel', 'Jar R. Wu']
How faults cause software failures: implications for software reliability engineering