A framework for software fault tolerance

Ray Giguette, Johnette Hassell · 1997

Software Fault tolerance allows a program to execute effectively even in the presence of errors. One goal of software fault tolerance is to be able to deduce, using the various phases of a fault tolerance life-cycle (error detection, damage assessment, containment, and recovery) (34), when and how to alter the program state. In many instances, however, little information is actually obtained during the various life-cycle phases, and decision-making capabilities are limited. Current software fault tolerance methods usually rely on redundancy rather than diagnostics. In other words, questionable components are bypassed rather than examined and repaired. Unfortunately, without a comprehensive examination of the execution state, it is generally impossible to know whether or not recovery is successful, or even necessary. Methods examined in-depth include N-version programming, recovery blocks, robust data structures, and fault-tree analysis. The close relationship between these methods and those used in hardware fault tolerance is emphasized as a way to understand their particular strengths and weaknesses. A framework for software fault tolerance is proposed, a framework that allows logical inferences to be made about the correctness of the execution state and the effects of possible corrective actions. A possible implementation of the framework is suggested, using a relational database. The framework is critiqued, and future research suggested.

Read the paper · More papers on PaperTik