Handbook of Reliability Engineering

Juan A.Carrasco
Increasing demand for system reliability (understood in its broad sense, i.e. as the capability of the system to perform properly) has motivated an increased interest in fault-tolerant systems. A fault-tolerant system is one that can continue correct operation with or without degraded performance in the presence of faults, i.e. physical defects, imperfections, external disturbances, or design flaws in hardware or software components. Fault tolerance can be achieved by fault masking, i.e. by preventing faults from producing errors without eliminating the faulty components from the operational system configuration, or by reconfiguration, i.e. by eliminating faulty components from the operational system configuration. The latter is, generally, more complex to implement and requires fault detection (recognizing that a fault has occurred), fault location (identifying the faulty component), fault containment (isolating the faulty component so that it does not produce errors which propagate throughout the system), and fault recovery (restoring the system to a correct state from which to continue operation if an incorrect state has been reached). All these fault-tolerance techniques require the addition of hardware redundancy (extra hardware components), information redundancy (redundant information), time redundancy (extra computations), or software redundancy (extra software components). Replication of hardware components is an example of hardware redundancy; error detecting and error correcting codes are examples of information redundancy; repeated computation and checkpointing are examples of time redundancy; consistency checks, N-version programming, and recovery blocks are examples of software redundancy. The addition of redundancy affects negatively some...