Software fault-tolerance techniques use two common techniques to achieve fault-tolerance.
1. N-version programming :
In N-version programming technique, there are N groups or individual of developers that do not share the programming process and these independents develop N versions of software module. The idea behind this technique is that different individual will commit different mistakes and will cover all possibilities of fault.
2. Recovery blocks :
In recovery block technique, different algorithms are used for different try blocks. Try blocks are basically the redundant components. Here the redundant copies are not run simultaneously. The result in each try is block is tested by acceptance test.
Difference between N-version Programming and Recovery Blocks Techniques:
|N-VERSION PROGRAMMING||RECOVERY BLOCKS|
|N-versions of software are developed by n independent team.||Redundant copies are developed using different algorithms.|
|Redundant copies are run concurrently.||Redundant copies are run one by one.|
|Acceptance test is not performed.||Acceptance test is performed.|
|It can be applied top critical systems.||It can’t be applied to critical systems.|
|It is possible to achieve same fault for different version.||Same fault can’t be achieved by redundant copies.|
|It has statistical correlation of failure.||It is used only if task deadline is more than task computation time.|
|It can be used with task having more or less laxity.||It is used with tasks having more laxity.|
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.
- Difference between Recovery Blocks and CPR Recovery
- Difference between Functional Programming and Object Oriented Programming
- Difference Between Go and Python Programming Language
- What's the difference between Scripting and Programming Languages?
- Difference Between Programming, Scripting, and Markup Languages
- Difference between Pair Programming and Peer Reviews
- Automation tools for building blocks in Software Process
- Fault-tolerance Techniques in Computer System
- Techniques to be an awesome Agile Developer (Part -1)
- Fault Reduction Techniques in Software Engineering
- Software Engineering | Requirements Validation Techniques
- Basic fault tolerant software techniques
- Software Engineering | Project size estimation techniques
- Difference between Programmable Logic Array and Programming Array Logic
- Software Engineering | Extreme Programming (XP)
- Greedy approach vs Dynamic programming
- Comparison of Python with Other Programming Languages
- Differences Between MATLAB and R Programming Language
- Differences between Procedural and Object Oriented Programming
- Difference between OOP and POP
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.