The N-version programming (NVP) approach is a kind of fault tolerant techniques and is a software system employing functionally equivalent, yet independently developed software components. It relies on the application of design diversity, i.e., program versions are independently designed to meet the same system requirements. A consistent set of inputs is supplied to all versions and all N versions are executed in parallel. A decision mechanism must gather the available results from N versions and determine the result to be delivered to the user. When constructing a large size software system with extreme high reliability, we must use much higher reliable components, however, it needs very much expense. But, such a large, highly reliable software system should be designed with as low cost as possible. Genetic algorithm (GA) is known as one of the most powerful optimizers or near-optimizers of combinatorial optimization problems. We introduce two genetic algorithms, one employs the Random-key representation, and the other employs the Binary representation for solving the N-version program design problem formulated as a 0-1 non-linear integer programming problem, respectively. Further, the efficiency of the proposed GAs will be ensured through some numerical experiments. Then the characteristics of each representation scheme are investigated and evaluated.
View full abstract