Fault prediction involves adopting various models to predict the potential faults. The prediction models use various statistical techniques to predict the fault in a particular component, based on factors such as lines-of-code (LOC), maturity of technology, depth-of-inheritance (DIT), programming language, and other parameters. These models can be supplemented by historical data analysis of project data from internal repositories, to predict the fault probabilities for a given module or component, and major areas of fault occurrence. This provides input to the fault prevention and fault detection phases.
Fault prevention is a proactive strategy to identify all potential areas where a fault can occur and to close those gaps.
During the requirements phase, the business rules and requirements that are incomplete or ambiguous will give rise to a heap of defects during development. This can be avoided in two main ways:
• Document requirements in structured, unambiguous ways, and quantify them with numbers wherever possible
• Provide intersecting views of requirements by presenting the requirements in multiple views. For instance, a combination of use case and prototype view is more effective than capturing requirements only through business rules.
During the design phase, potential faults can be prevented by adopting proof-of-concept (PoC)-based design validation, feasibility analysis and adopting open standards for designing components. During the development phase, coding guidelines, coding checklists, continuous and automated code reviews, and unit test cases for providing high coverage would all serve the purpose of fault prevention. Another technique of fault prevention is to adopt the time-tested and proven industry and technology best practices.
Fault detection can be achieved through various validation techniques. This includes devising comprehensive test cases, continuous integration and testing, cross-verification using traceability matrix, automated testing, and so on. Continuous and iterative integration and testing is an effective way to catch the faults early. A robust monitoring and notification infrastructure also helps in early detection of faults.
Fault tolerance can be achieved at various levels. A software application can prevent total loss of functionality by graceful degradation functionality alternatives. Core and business-critical functionalities should be available in spite of unavailability of supporting functionalities.
If you found this answer helpful, please upvote and share with other students in your network.