Abstract Software fault tolerance is often necessary, but itself can be dangerously error-prone because of the additional effort that must be involved in the programming process. The additional software redundancy may increase the size and complexity and thus adversely affect software reliability. Object-oriented programming seems to provide an appropriate framework for controlling complexity and enforcing reliability. However, software fault tolerance cannot be achieved merely by implementing the classical fault tolerance schemes in an object-oriented fashion.
New problems arise while integrating software redundancy into object-oriented computing systems.
This paper identifies a set of such problems, addresses possible solutions and proposes an object-oriented architecture for dealing with software design faults. Both linguistic supports for the architecture and implementation issues are also discussed in detail.