1 research outputs found
Software Mutational Robustness
Neutral landscapes and mutational robustness are believed to be important
enablers of evolvability in biology. We apply these concepts to software,
defining mutational robustness to be the fraction of random mutations that
leave a program's behavior unchanged. Test cases are used to measure program
behavior and mutation operators are taken from genetic programming. Although
software is often viewed as brittle, with small changes leading to catastrophic
changes in behavior, our results show surprising robustness in the face of
random software mutations.
The paper describes empirical studies of the mutational robustness of 22
programs, including 14 production software projects, the Siemens benchmarks,
and 4 specially constructed programs. We find that over 30% of random mutations
are neutral with respect to their test suite. The results hold across all
classes of programs, for mutations at both the source code and assembly
instruction levels, across various programming languages, and are only weakly
related to test suite coverage. We conclude that mutational robustness is an
inherent property of software, and that neutral variants (i.e., those that pass
the test suite) often fulfill the program's original purpose or specification.
Based on these results, we conjecture that neutral mutations can be leveraged
as a mechanism for generating software diversity. We demonstrate this idea by
generating a population of neutral program variants and showing that the
variants automatically repair unknown bugs with high probability. Neutral
landscapes also provide a partial explanation for recent results that use
evolutionary computation to automatically repair software bugs