Data Diversity: An Approach to Software Fault ToleranceReport
Crucial computer applications such as avionics systems and automated life support systems require extremely reliable software. For a typical system, current proof techniques and testing methods cannot guarantee the absence of software faults, but careful use of redundancy may allow the system to tolerate them. The two primary techniques for building fault-tolerant software are N-version programming and recovery blocks. Both methods rely on redundant software written to the same specifications to provide fault tolerance at execution time. These techniques use design diversity to tolerate residual faults. Nothing fundamental limits diversity to design; diversity in the data space may also provide fault tolerance. Two observations promote this view. First, program faults often cause failure only under certain special case conditions. Second, for some applications a program may express its input and internal state in a large number of logically equivalent ways. These observations suggest obtaining a related set of points in the data space, executing the same software on these points, and then employing a decision algorithm to determine system output. In direct analogy to the N-version and recovery block strategies, the decision algorithm uses a voter or an acceptance test. This technique uses data diversity to tolerate residual faults.
Note: Abstract extracted from PDF file via OCR
All rights reserved (no additional license for public reuse)
Ammann, Paul, and John Knight. "Data Diversity: An Approach to Software Fault Tolerance." University of Virginia Dept. of Computer Science Tech Report (1986).
University of Virginia, Department of Computer Science