Multiple program versions are independently developed in order
to reduce the likelihood of similar faults creating catastrophic failures.
Examples include the redundant software used to control the dynamically
unstable Space Shuttle during reentry, software used in other critical space
systems, and software used in safety systems.
Complexity: This technique
typically multiplies the cost of implementation by the desired level of
redundancy and substantially increases the requirement for detailed