Nversion programming closely parallels nway redundancy in the hardware fault tolerance paradigm. Multiobjective algorithm for solving nversion program. Principal requirements for the implementation of nversion software. Citeseerx assuring design diversity in nversion software. Twentyfifth international symposium on faulttolerant computing, 1995, highlights from twentyfive years. To tolerate faults, both of these techniques rely on design diversity, the availability of multiple implementations of a specification. A decision example applied on railway signalization is also given. In general, faulttolerant approaches can be classified into faultremoval and. In this technique, n program versions are executed in parallel on identical input. A uniform approach to software and hardware fault tolerance. This paper describes a software fault tolerance scheme, called t n 1variant programming or t n 1vp, which is based on a particular system diagnosis technique used in hardware and thereby has some special advantages involving a simplified adjudication mechanism and enhanced capability of tolerating faults. Principal requirements for the implementation of nversion software are summarized and the dedix. The tn1vp approach to faulttolerant software eprints.
Nversion programming nvp is used for providing faulttolerance in software. In concept, the nvp scheme is similar to the nmodular redundancy scheme used to provide tolerance against hardware faults. Fault tolerant software has the ability to satisfy requirements despite failures. Avizienis uses the combined effort of n independent designs and implementations to produce fault tolerant code. N version programming nvp, also known as multiversion programming or multiple version dissimilar software, is a method or process in software engineering where multiple functionally equivalent programs are independently generated from the same initial specifications. Nversion programming method of software fault tolerance. The nversion approach to faulttolerant software abstract. Software fault tolerance carnegie mellon university. Multiobjective genetic algorithm for solving n version. The nversion approach to faulttolerant software article pdf available in ieee transactions on software engineering se1112. Nversion programming nvp is a programming approach for constructing fault tolerant software systems. It would be very difficult to sum it up in one article since there are multiple ways to achieve fault tolerance in software.
Software variants are organized in rb in a manner similar to the standby sparing techniques dynamic redundancy used in hardware and may be executed serially on a single processor. These principles deal with desktop, server applications andor soa. The conclusion from this experiment is that n version programming must be used with care and that analysis of its reliability must include the effect of dependent errors. In an n version software system, each module is formed of up to n different implementations. Following the definition of ddmtv graphs, we present several examples of hybrid nvpat schemes, as instances of fault tolerant software based on our componentbased approach, and quantify the resulting reliability improvements. A singleversion scheme of fault tolerant computing. Nversion programming nvp, also known as multiversion programming or multipleversion dissimilar software, is a method. The regions of the input space that cause failure for certain experimental programs are discussed, and data reexpression. Citeseerx document details isaac councill, lee giles, pradeep teregowda. To maximize the effectiveness of the nvp approach, the probability of similar errors that coincide at the nvs decision points should be reduced to the lowest possible value. Principal requirements for the implementation of n version software are summarized and the dedix distribu.
Nversion programming, recovery block, and consensus recovery block. Introduction r esearchers have proposed various methods for building fault tolerant software in an effort to provide substantial improvements in the reliability of software for crucial applications. In such a model, while the number of versions included in the obtained solution is. N version programming nvp is a direct application of the hardware n modular redundancy approach nmr to software. Development of n version software samples for an experiment in software fault tolerance l.
Generally, an optimization model utilized in nvp selects the optimal set of versions for each module to maximize the system reliability and to constrain the total cost to remain within a given budget. Principal requirements for the implementation of n version software are summarized and the dedix distributed supervisor and testbed for the execution of n version software is described. The concept of n version programming was introduced in 1977 by liming chen and algirdas avizienis with the central conjecture. We can overcome this problem by identifying critical configurations that play a vital role, then provide a suitable fault tolerant candidate to each critical configuration. Main concept of n version programming is to develop ndifferent programs. Detailed reports are attached on preliminary report on consensus voting in the presence of failure correlation, and on modeling execution time of multistage n version fault tolerant software. An nversion software nvs unit is a fault tolerant software unit that depends on ageneric decision algorithm to determine a consensus result from the results delivered bytwo or more member. The nversion approach to faulttolerant software ieee journals. Principal requirements for the implementation of nversion soft. Sep 01, 2006 n version programming nvp is a programming approach for constructing fault tolerant software systems. Recovery blocks, are modeled after what randell discovered was the current ad hoc method being employed in safety critical software. They are unnecessary in the case of a single program. Principal requirements for the implementation of n version software are summarized and the dedix. The model finds the optimal number of program versions to achieve minimum system cost of the faulttolerant software techniques.
For example, two similar errors will outweigh one good result in the threeversion case, anda set ofthree similar errors will prevail overaset oftwosimilar good results wheni n 5. The nversion programming nvp approach achieves faulttolerant software units, called nversion software nvs units, through the development and use of software diversity. Faulttolerant software assures system reliability by using protective redundancy at the software level. N version approach to fault tolerant software bers the set of good similar results at a decision point, then the decision algorithm will arrrive at an erroneous decision result. The aim of nvp is to improve the reliability of software operation by building in fault tolerance or redundancy. Fernandez department of computer science and engineering, florida atlantic university, boca raton, florida in recent years, various attempts have been made to combine software and hardware fault tolerance in critical computer systems. This cited by count includes citations to the following articles in scholar. Lauterbach software research and development center for digital systems research research triangle institute research triangle park, north carolina 27709 contract nas117964 task assignment no. Nversion approach to faulttolerant software bers the set of good similar results at a decision point, then the decision algorithm will arrrive at an erroneous decision result. Software engi neers assume that the different implementations use different. Leveson abstractwe have identified a difficulty in the implementation of nversion programming.
Most of the ordinary systems lack fault tolerant software fix. The effectiveness of the entire approach depends on the validity of this conjecture, therefore it is critically important to keep the initial of to of to of of of the of zi. Fault tolerant software architecture stack overflow. We first implement the support using an object library approach and then redesign it using a reflective one. N version approach to fault tolerant software ieee transactions on. This report describes the results obtained in the period september 1, 1989 to march 31, 1990. In this article we have proposed an algorithm that identifies optimal fault tolerant candidate for every critical configuration of a software system. Also there are multiple methodologies, few of which we already follow without knowing. Multi version programming, n version programming, software reliability, fault tolerant software, design diversity. Principal requirements for the implementation of nversion software are summarized and the dedix distribu.
The n version programming nvp approach achieves faulttolerant software units, called n version software nvs units, through the development and use of software diversity. Development of nversion software samples for an experiment. Generally, an optimization model utilized in nvp selects the optimal set of versions for. Approach to componentbased synthesis of faulttolerant software. Performability and reliability modeling of n version fault. Twentyfifth international symposium on faulttolerant computing, 1995. Nversion programming for railway interlocking systems. Jul, 2016 conclusion n version programming and recovery blocks are two different approaches to designing fault tolerant software architectures in nvp, the same specification is implemented in a number of different versions by different teams during development the design teams are kept separate and do not share their designs nor do they discuss the. Work in 45 aims to treat software fault tolerance as a robust supervisory control rsc problem and propose a rsc approach to software fault tolerance.
The n version programming nvp approach achieves fault tolerant software units, called n version software nvs units, through the development and use of software diversity. A paper describing n version programming written by the original creator of the concept. Avizeinis, the n version approach to fault tolerant software, ieee transactions of software engineering, vol. In this approach the software component under consideration is treated as a controlled object that is modeled as a generalized kripke structure or finitestate concurrent system 44,45. Software fault tolerance is mostly based on traditional hardware fault tolerance.
There are two basic techniques for obtaining faulttolerant software. Data diversity is described, and the results of a pilot study are presented. Software fault tolerance is the ability of computer software to continue its normal operation despite the presence of system or hardware faults. Both schemes are based on software redundancy assuming that the events of coincidental software failures are rare. N version programming uses replicated software and the multiple computation method for the tolerance of design and implementation faults. To maximize the effectiveness of the nvp approach, the probability of similar errors that coincide at the nvs decision points should be reduced to the lowest possible. Performability and reliability modeling of n version fault tolerant software in real time systems katerina go. Pdf the nversion approach to faulttolerant software.
Another methodology for increased reliability is n version programming 2. The nversion approach to faulttolerant software ieee. Basic fault tolerant software techniques geeksforgeeks. The transfer of the concepts of fault tolerance to. A number of fault tolerance techniques aimed at minimizing the effect of software faults are being investigated. Fault tolerant software systems using software configurations. A good in depth discussion of the concept and how to apply it. Performability and reliability modeling of n version fault tolerant software in real time systems katerina goseva popstojanova, aksenti grnarov faculty of electrical engineering, department of computer science p. Principal requirements for the implementation of nversion software are summarized and the dedix distributed supervisor and testbed for the execution of nversion software is described. Approach to component based synthesis of fault tolerant. Nversion programming, also known as multiversion programming or multipleversion dissimilar software, is a method or process in software engineering where multiple functionally equivalent programs are independently generated from the same initial specifications.
707 1322 135 1438 692 722 506 596 1505 527 1222 547 44 1185 1452 833 164 869 1189 1339 1451 781 1021 84 680 199 577 245 744 1127 1359 781 148 142 1002 126 740 655 997 673 1389 100 403 1211 903 456