Fault Tolerance In System Design