An Approach to Concurrent Control Flow Checking

A control flow checking scheme capable of detecting control flow errors of programs resulting from software coding errors, hardware malfunctions, or memory mutilation during the execution of the program is presented. In this approach, the program is partitioned into loop-free intervals and a database containing the path information in each of the loop-free intervals is derived from the detailed design. The path in each loop-free interval actually traversed at run time is recorded and then checked against the information provided in the database, and any discrepancy indicates an error. This approach is general, and can detect all uncompensated illegal branches. Any uncompensated error that occurs during the execution of a loop-free interval and manifests itself as a wrong branch within the loop-free interval or right after the completion of execution of the loop-free interval is also detectable. The approach can also be used to check the control flow in the testing phase of program development. The capabilities, limitations, implementation, and the overhead of using this approach are discussed.

[1]  C. V. Ramamoorthy,et al.  Optimal placement of software monitors aiding systematic testing , 1975, IEEE Transactions on Software Engineering.

[2]  Peter J. Denning,et al.  Fault Tolerant Operating Systems , 1976, CSUR.

[3]  Stephen S. Yau,et al.  An approach to error-resistant software design , 1976, ICSE '76.

[4]  Tsun S. Chow,et al.  Testing Software Design Modeled by Finite-State Machines , 1978, IEEE Transactions on Software Engineering.

[5]  Stephen H. Caine,et al.  PDL: a tool for software design , 1975, AFIPS '75.

[6]  Michael R. Paige On Partitioning Program Graphs , 1977, IEEE Transactions on Software Engineering.

[7]  S. Yau,et al.  Design of self-checking software , 1975, Reliable Software.

[8]  John Cocke,et al.  A program data flow analysis procedure , 1976, CACM.

[9]  C. V. Ramamoorthy,et al.  On the Automated Generation of Program Test Data , 1976, IEEE Transactions on Software Engineering.

[10]  Stephen S. Yau,et al.  Concurrent software fault detection , 1975, IEEE Transactions on Software Engineering.

[11]  Paul Van Leer Top-Down Development Using a Program Design Language , 1976, IBM Syst. J..

[12]  P. M. Melliar-Smith,et al.  A program structure for error detection and recovery , 1974, Symposium on Operating Systems.

[13]  James F. Stay HIPO and Integrated Program Design , 1976, IBM Syst. J..

[14]  William E. Howden DISSECT—A Symbolic Evaluation and Program Testing System , 1978, IEEE Transactions on Software Engineering.

[15]  C. V. Ramamoorthy,et al.  Testing large software with automated software evaluation systems , 1975, IEEE Transactions on Software Engineering.

[16]  C. V. Ramamoorthy,et al.  Failure-tolerant parallel programming and its supporting system architecture , 1976, AFIPS '76.

[17]  R. Kerr,et al.  Recovery blocks in action: A system supporting high reliability , 1976, ICSE '76.