A fault is the defect in the the program that, when executed under particular conditions causes a different result of the program operation from its requirements. It is the condition that causes the software to fail to perform its required functionality.
The following are the techniques used to reduce faults in a software:
- Fault Prevention –
Fault Prevention/Avoidance strategies identify all potential areas where a fault can occur and close the gaps. These prevention strategies address system requirements and specification, software design methods, re-usability, or formal methods. They are employed during the development phase of the software to avoid or prevent fault occurrence.
They contributes to the system dependability through rigorous specification of the system requirements, programming methods and software re-usability. But it is difficult to quantify the impact of fault avoidance strategies on system dependability. So, despite fault prevention efforts, faults are created, so fault removal is needed.
- Fault Removal –
Fault removal strategies are dependability enhancing techniques employed during verification and validation. They improve by detecting existing faults and eliminating the defected faults. They are employed after the development phase of the software to contribute to the validation of the software.
Common fault removal techniques involve testing. It follows that minimizing component size and interrelationship maximizes the accurate testing. The difficulties encountered in testing programs are often related to the prohibitive costs and exhaustive testing. Therefore, fault removal is imperfect, hence fault tolerance is needed.
- Fault Tolerance –
Fault tolerance include dependability enhancing techniques that are used during the validation of software to estimate the presence of faults. It is used to reduce system design faults and enhance reliability of the software.
Fault tolerance techniques are employed during the development phase of the software which enables the system to tolerate faults remaining in the system after its development and provide operation complying with the requirements specification in spite of faults. Therefore, when a fault occurs it prevents the system failure.
Fault prevention, fault removal and fault removal represent the successive lines of defense against the contingency of faults of software systems and their impact on system. Despite the fact, that the benefits of each of these techniques are remarkable, the law of diminishing returns advocates that they should be used in unison where each one is applied wherever it is most effective.
Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.
- Basic fault tolerant software techniques
- Fault Injection in Software Engineering
- Software Engineering | Requirements Validation Techniques
- Software Engineering | Project size estimation techniques
- Fault-tolerance Techniques in Computer System
- Difference between Software Engineering process and Conventional Engineering Processs
- Software Engineering | Requirements Engineering Process
- Software Engineering | Reverse Engineering
- Software Engineering | Introduction to Software Engineering
- Software Engineering | Re-engineering
- Software Engineering | Software Project Management Plan (SPMP)
- Software Engineering | Jelinski Moranda software reliability model
- Software Engineering | Schick-Wolverton software reliability model
- Software Engineering | Role and Responsibilities of a software Project Manager
- Software Engineering | Responsibilities of Software Project Manager
- Software Engineering | Software Project Management Complexities
- Software Engineering | Identifying Software Development Metrics
- Software Engineering | Software Project Management (SPM)
- Software Engineering | Software Quality Assurance
- Software Engineering | Software Process Framework
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.