2006 Volume 28 Issue 8 Pages 546-554
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.