An experimental evaluation of the assumption of independence in multiversion programming
IEEE Transactions on Software Engineering
Relational Information Systems
Relational Information Systems
Journal of Systems and Software
The Use of Self Checks and Voting in Software Error Detection: An Empirical Study
IEEE Transactions on Software Engineering
Analysis of Faults in an N-Version Software Experiment
IEEE Transactions on Software Engineering
Resourceful systems for fault tolerance, reliability, and safety
ACM Computing Surveys (CSUR)
An Experimental Evaluation of Software Redundancy as a Strategy for Improving Reliability
IEEE Transactions on Software Engineering
Toward a resourceful method of software fault tolerance
ACM-SE 37 Proceedings of the 37th annual Southeast regional conference (CD-ROM)
An introduction to database systems (7th ed.)
An introduction to database systems (7th ed.)
A relational model of data for large shared data banks
Communications of the ACM
Implementing Design Diversity to Achieve Fault Tolerance
IEEE Software
Theory of Relational Databases
Theory of Relational Databases
The contour model of block structured processes
ACM SIGPLAN Notices
From Schema and Model Translation to a Model Management System
BNCOD '08 Proceedings of the 25th British national conference on Databases: Sharing Data, Information and Knowledge
Hi-index | 0.00 |
Many software fault tolerance methods are based on hardware methods which replace faulty modules with redundant components. However, the relatively small number of redundant components limits the recovery options of such systems. Previously, we have proposed exploring alternative methods that allow the number of components to vary with the number of variables in the program state. Such systems must allow programmers to specify dynamically-created components, and to identify these components in an arbitrary program state. This paper describes how a relational database can be used to model a program state and its dynamically-created components. We define a relational table for each static code block, a column attribute for each scalar variable, and a tuple for each dynamic block. Changes in program state are modeled by adding and deleting tuples, and components are defined using relational operators. In particular, we discuss how components may be defined using Project and Select, and how dependencies between components can be identified using Intersection and relational constraints.