An experimental evaluation of the assumption of independence in multiversion programming
IEEE Transactions on Software Engineering
Design & analysis of fault tolerant digital systems
Design & analysis of fault tolerant digital systems
Analysis of Faults in an N-Version Software Experiment
IEEE Transactions on Software Engineering
Fault-tolerant software reliability engineering
Handbook of software reliability engineering
Software Testability: The New Verification
IEEE Software
Automatic test data generation
Automatic test data generation
From MC/DC to RC/DC: formalization and analysis of control-flow testing criteria
Formal methods and testing
Hi-index | 0.00 |
Multi-version programming is employed in fault-tolerant computer systems in order to provide protection against common-mode failure in software. Multi-version programming involves building diverse software implementations of critical functions. The premise of building diverse versions is that the likelihood of a programming error in one version causing a failure in an identical manner as an error in another version is reduced. Skeptics of multi-version programming have correctly pointed out that common-mode failures between redundant diverse versions can reduce the return on investment in creating diverse versions.To date, other than using historical data from other projects, there has been no way to estimate the potential for a given multi-version programming system to suffer a common-mode failure. This paper presents an algorithm and software analysis prototype to reduce the uncertainty of whether software flaws in diverse versions can result in common-mode failure. The analysis uses software fault-injection techniques to subject one or more versions to anomalous behavior. From this, we can predict how the software will behave if real faults exist in the multiple versions.