Toward Systematic Design of Fault- Tolerant Systems