Fault Tolerance Against Design Faults
Lorenzo Strigini · City Research Online (City University London) · 2005
This chapter surveys techniques for tolerating the effects of design defects in computer systems, paying special attention to software.Design faults are a major cause of failure in modern computer systems, and their relative importance is growing as techniques for tolerating physical faults gain wider acceptance.Although design faults could in principle be eliminated, in practice they are inevitable in many categories of systems, and designers need to apply fault tolerance for mitigating their effects.Limited degrees of fault tolerance in software -"defensive programming" -are common, but systematic application of fault tolerance for design faults is still rare and mostly limited to highly critical systems.However, the increasing dependence of system designers on off-the-shelf components often makes fault tolerance a necessary, feasible and probably cost-effective solution for achieving modest dependability improvements at affordable cost.This chapter introduces techniques and principles, outlines similarities and differences with fault tolerance against physical faults, provides a structured description of the space of design solutions, and discusses some design issues and trade-offs.