An experimental evaluation of the assumption of independence in multiversion programming
IEEE Transactions on Software Engineering
Conceptual Modeling of Coincident Failures in Multiversion Software
IEEE Transactions on Software Engineering
Achieving Dependability Throughout the Development Process: A Distributed Software Experiment
IEEE Transactions on Software Engineering
Fault-Tolerant Software for Real-Time Applications
ACM Computing Surveys (CSUR)
Processor Assignment and Execution Sequence for Multiversion Software
IEEE Transactions on Computers
Toward a resourceful method of software fault tolerance
ACM-SE 37 Proceedings of the 37th annual Southeast regional conference (CD-ROM)
Real-World Design Diversity: A Case Study on Cost
IEEE Software
Designing a resourceful fault-tolerance system
Journal of Systems and Software
Cost of Software Design Diversity: An Empirical Evaluation
ISSRE '99 Proceedings of the 10th International Symposium on Software Reliability Engineering
Analytic methods in coverage testing of communications software
CASCON '92 Proceedings of the 1992 conference of the Centre for Advanced Studies on Collaborative research - Volume 2
A relational database model of program execution and software components
ACM-SE 38 Proceedings of the 38th annual on Southeast regional conference
A fault-tolerant approach to test control utilizing dual-redundant processors
Advances in Engineering Software
Setting checkpoints in legacy code to improve fault-tolerance
Journal of Systems and Software
Ada for the control of degradation of service
ACM SIGAda Ada Letters
Hi-index | 0.01 |
The software faults that are particularly significant in a real-time concurrent system are identified, and the use of design diversity to prevent their occurrence is examined. Two approaches to enforced diversity, recovery-block software and multiversion software, are discussed. The recovery-block scheme combines N diverse software versions arranged (conceptually, at least) in sequential order, although the versions may also be organized to execute concurrently. The multiversion-software approach excuses all N versions in parallel, taking advantage of the redundant processors likely to be available in any system that must tolerate hardware and software faults. Although different, both approaches require sufficiently diverse development environments and that faults in the specification do not lead to similar errors.