Abstract :
The requirements specification is normally translated into a design by a process of elaboration in which the description of what the system should do is elaborate until the description comprises a set of easily implemented activities. Ideally, to avoid the introduction of faults, the designer should prove the correctness of the design and the design should be translated into an implementation using proven translators. Finally, the implementation should be verified to show that it is fit for use. In practice, the system which is implemented may incorporate faults. To overcome this difficulty, a designer may consider using software fault tolerance in the design of a system. The aim is to design a system which will meet its specification in the presence of certain classes of fault