Diversity Through N-Version Programming: Current State, Challenges and Recommendations
R. Khoury, A. Hamou-Lhadj, M. Couture, Robert Charpentier, "Diversity Through N-Version Programming: Current State, Challenges and Recommendations", International Journal of Information Technology and Computer Science (IJITCS), MECS Publisher, 4(2), pp.56-64, 2012.
N-version programming is a software development paradigm that draws upon the concept of diversity to increase the reliability of software. The central idea is to independently produce multiple functionally equivalent versions of a program, and execute them in parallel. If the versions fail independently, then the probability of multiple versions producing a faulty output on any given input is very small; much lower than the failure probability of any single version. In this paper, we examine and contrast various experiments that have been performed to evaluate the benefits of this approach and draw some conclusions. We find that for diversity to be effective, it must be introduced in a targeted and informed manner and encompass several phases of the software’s development.