Computing systems are becoming more and more complex and they assume more and more responsibilities in all sectors of human activity. Unfortunately, many faults can harm the development or the use of these products. Destructive mechanisms transform faults into errors and finally failures altering the delivered service. For critical systems, the consequences of these failures can be catastrophic, but for most non-critical systems, failures are nowadays unacceptable. Hence, it is necessary to take dependability attributes into account, along the product lifecycle. This book aims at providing a general overview of the dependability of computing systems: impairments and protective means. Issues, concepts and techniques are considered from a system point of view, and are illustrated by both hardware and software technologies.
1. Introductory Elements: Dependability Issues.- 2. General Context.- 3. Failures and Faults.- 4. Faults and Their Effects.- 5. Fault and Error Models.- 6. Towards the Mastering of Faults and Their Effects.- 7. Dependability Assessment.- 8. Redundancy.- 9. Avoidance of Functional Faults during Specification.- 10. Avoidance of Functional Faults during Design.- 11. Prevention of Technological Faults.- 12. Removal of Technological Faults.- 13. Structural Testing Methods.- 14. Design for Testability.- 15. Error Detecting and Correcting Codes.- 16. On-Line Testing.- 17. Fail-Safe Systems.- 18. Fault-Tolerant Systems.- 19. Conclusions.- Appendix A. Error Detecting and Correcting Codes.- Appendix B. Reliability Block Diagrams.- Appendix C. Testing Features of a Microprocessor.- Appendix D. Study of a Software Product.- Appendix E. Answer to the Exercises.- References.