A dynamic failure model for performing propagation and infection analysis on computer programs

This thesis introduces a methodology for determining program locations where faults can easily hide. It is a program structure-based model that analyzes pro­ gram flow both statically and dynamically; each program location is analyzed relative to its preceding locations and succeeding locations. A statistical model termed propagation analysis studies the relation between incorrect internal data states and their affect on the output. Infection analysis is a statistical model which studies the relation between classes of faults and internal data states. To­ gether these two models combine to form one model of analyzing programs termed Propagation and Infection Analysis(PIA). PIA employs aspects of both software testing methods and verification tech­ niques. The results of PIA distinguish it from traditional verification efforts how­ ever. Verification compares a program with its specification. The ultimate goal of verification is to show the program is correct with respect to its specification. PIA characterizes a program in terms of how its failure behavior will be impacted by the presence of faults at various locations. A location which minimally impacts the failure behavior is called fault insensitive. The goal of PIA is to identify fault insensitive location. Since program correctness, safety, and reliability axe all intri­ cately connected to the presence (or absence) of faults in the code, PIA therefore provides information useful in quantifying the effectiveness of other verification activities. The implementation of the propagation and infection analysis model is per­ formed through dynamic executions of the program. Propagation analysis quan­ tifies the impacts on a program after its internal data states have been altered; infection analysis quantifies the impacts on internal data states that “common” faults have once injected at program locations. The statistics gathered from both altered data states and altered locations are then used to make predictions about expected program behavior if a fault were there. Models are also provided for applying the results from propagation and infec­ tion analysis to a variety of applications dealing with software quality assurance. These include software complexity, debugging, software testing, software reliabil­ ity, software security, and probable correctness.

[1]  C. V. Ramamoorthy,et al.  Software Reliability—Status and Perspectives , 1982, IEEE Transactions on Software Engineering.

[2]  S. L. Gerhart,et al.  Toward a theory of test data selection , 1975, IEEE Transactions on Software Engineering.

[3]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.