ABSTRACT

N-version programming n. A means of achieving high availability in software, in which N pieces of software, all of which are designed to meet the very same requirements, are developed by separate development teams. Abbreviated NVP. Run in parallel and combined with a voting algorithm of some sort, the decisions of each of the N pieces of software can be weighed to make the final decision. Although having multiple teams implement the same spec might result in fewer bugs in the final decision, there is a big flaw in N-version programming: an error in the spec can be replicated in all N implementations! For that reason (and the high cost), the technique is little used.