Application of majority voting and consensus voting algorithms in N-version software

N-version programming is one of the most common techniques which is used to improve the reliability of software by building in fault tolerance, redundancy and decreasing common cause failures. N different equivalent software versions are developed by N different and isolated workgroups by considering the same software specifications. The versions solve the same task and return results that have to be compared to determine the correct result. Decisions of N different versions are evaluated by a voting algorithm or the so-called voter. In this paper, two of the most commonly used software voting algorithms such as the majority voting algorithm and the consensus voting algorithm are studied. The distinctive features of Nversion programming with majority voting and N-version programming with consensus voting are described. These two algorithms make a decision about the correct result on the base of the agreement matrix. However, if the equivalence relation on the agreement matrix is not satisfied it is impossible to make a decision. It is shown that the agreement matrix can be transformed into an appropriate form by using the Boolean compositions when the equivalence relation is satisfied.

[1]  B. Parhami Voting algorithms , 1994 .

[2]  David F. McAllister,et al.  Reliability of voting in fault-tolerant software systems for small output-spaces , 1990 .

[3]  Nancy G. Leveson,et al.  The Consistent Comparison Problem in N-Version Software , 1989, IEEE Trans. Software Eng..

[4]  Sherif M. Yacoub Analyzing the behavior and reliability of voting systems comprising tri-state units using enumerated simulation , 2003, Reliab. Eng. Syst. Saf..

[5]  Minge Xie,et al.  Modeling the reliability of threshold weighted voting systems , 2005, Reliab. Eng. Syst. Saf..

[6]  Nuno Neves,et al.  Fuzzing Wi-Fi Drivers to Locate Security Vulnerabilities , 2007 .

[7]  Gregory Levitin,et al.  Reliability optimization for weighted voting system , 2001, Reliab. Eng. Syst. Saf..

[8]  Elena Dubrova,et al.  Fault-Tolerant Design , 2013 .

[9]  Douglas M. Blough,et al.  A comparison of voting strategies for fault-tolerant distributed systems , 1990, Proceedings Ninth Symposium on Reliable Distributed Systems.

[10]  Gregory Levitin Analysis and optimization of weighted voting systems consisting of voting units with limited availability , 2001, Reliab. Eng. Syst. Saf..

[11]  Mostafa H. Ammar,et al.  Performance Characterization of Quorum-Consensus Algorithms for Replicated Data , 1989, IEEE Trans. Software Eng..

[12]  Akhil Kumar,et al.  Voting mechanisms in distributed systems , 1991 .

[13]  Ching Y. Suen,et al.  Application of majority voting to pattern recognition: an analysis of its behavior and performance , 1997, IEEE Trans. Syst. Man Cybern. Part A.

[14]  D. McAllister,et al.  Fault-tolerant software voters based on fuzzy equivalence relations , 1998, 1998 IEEE Aerospace Conference Proceedings (Cat. No.98TH8339).

[15]  Robert P. W. Duin,et al.  Limits on the majority vote accuracy in classifier fusion , 2003, Pattern Analysis & Applications.

[16]  Roman Yu. Tsarev,et al.  N-version Software Module Requirements to Grant the Software Execution Fault-Tolerance , 2017 .