Abstract: Software fault-tolerance schemes often employ multiple software versions developed to meet the same specification. If the versions fail independently of each other, they can be combined to give high levels of reliability. Although design diversity is a means to develop these versions, it has been questioned because it increases development costs and because reliability gains are limited by common-mode failures. The use of genetic programming is proposed to generate multiple software versions by varying parameters of the genetic programming algorithm. An environment is developed to generate programs for a controller in an aircraft arrestment system. Eighty programs have been developed and tested on 10 000 test cases. The experimental data show that failure diversity is achieved, but for the top performing programs its levels are limited. One approach to software Fault tolerance employs multiple versions of the same software to mask the effect of faults when a minority of versions fails [l]. Design diversity, i.e. several diverse development efforts, has been proposed as a technique for generating these redundant versions. The difference in the programs, which is generated by the different design methods, is called software diversity. The hope is that the diversity in the programs will make them exhibit different failure behaviour: they should not fail for the same input and, if they do, they should not fail in the same manner. There are two main drawbacks with the design-diversity approach: it is not obvious if and how we can guarantee that the programs fail independently, and the life-cycle cost of the software will probably increase. The original idea of N-version programming (NVP) opted for the software specification to be given to different development teams [ 11. The teams should independently develop a solution, and this independence between the teams should manifest itself in independent Failure behaviour. However, software-development personnel have similar education and training and use similar thinking, methods and tools. This can lead to 0 IEE. 1998 IEE Proceedings online no. 19982444 Paper received 21 st July 1998 The author IS with the Department of Computer Engineering, Chalmers University of Technology, Horsalsv. 11, S-412 96, Sweden common-mode failures, i.e. several versions failing for the same input, and limit the diversity thst can be achieved. Experimental research has shown 1 hat there are systems for which the independence assumption is not valid [2]. The strength of using design diversity has thus been questioned. In [3] , the term random diversity was proposed to denote the above scenario: generation of diversity is left to chance and arises from differences in ihe background and capabilities of the personnel in the development teams. In contrast to this, they introduced the notion of enforced diversity. By listing the krown possible sources of diversity and varying them between the different development teams, the software versions can be forced to differ. In [4], Littlewood and Miller showed that the probability that two versions developed with different methodologies would fail on the same input is determined by the correlatiorl between the methodologies. The correlation is a theoretical measure of diversity defined over all possible programs and all possible inputs. The Littlewood and Miller calculations set the goal for studies into achieving software diversity: find methodologies with a small or negative correlation. .4 problem in using design diversity is that life-cycle costs can increase. Obviously, the development cost will increase: we have to develop N versions instead of one. In addition to this, maintenance costs increise. Each change or extension to the specifications of the software must be implemented, and possibly even redesigned, in each of the diverse versions. The astual cost increases have been estimated to be near N-fold [5]. This paper introduces a novel approach for developing multiple diverse software versions to the s,ime specification, which addresses both the development cost and non-independence problems of design diversity. The proposed approach uses genetic programming (GP), which, according to [6] , is a technique for searching spaces of computer programs for indiviiual programs that are highly 'fit' for solving (or appr 3ximately solving) a problem. G P evolves programs from specified atomic parts that adhere to a basic specified structure. Genetic algorithms model evolutionary processes in nature and are studied under the subject of evolutionary computation (see, for example, [7]). By varying a number of parameters affecting the development of programs, we can force them to differ. Genetic algorithms mimic the evolutionary process in nature to find solutions to problems. Genetic programming is a special form of genetic algorithm in which the solution is expressed as a computer progr,im. It is IEE
Feldt applied algorithmic techniques to N-version programming REF .
Generating diverse software versions with genetic programming: an experimental study
IEE Proceedings - Software
IEE Proceedings - Software
Computer Science Engineering