|
EPSRC Network on Evolvability in Biology & Software SystemsSoftware Evolution and Evolutionary Computation Symposium Abstracts
University of Hertfordshire, Hatfield, U.K.
|
CHRYSTOPHER L. NEHANIV
Adaptive Systems Research Group
University of Hertfordshire
College Lane
Hatfield, Herts AL10 9AB, U.K.
We aim to explore the connections between software evolution and evolutionary computation. Both share obvious common features in Darwin's characterization of evolution as ``descent with modification", but less obvious analogies and parallels also occur.
These include notions such as modularity, sensitivity to changing requirements,
issues of context and control of and types of variability that have for the most part been studied independently by
workers in software engineering, evolutionary computation,
and evolutionary biology.
There is growing awareness from academia, industry, and research communities of the importance of evolvability, tentatively defined as, the capacity to vary robustly and adaptively over time or generations in digital and natural systems. A dialogue is beginning to emerge between various workers in areas that might benefit from a possible common framework addressing software engineering as well as evolutionary computation concerns.
Darwinian evolution characterized by heritable variation and selection is not by itself sufficient to account for the capacity to vary and inherent phenotypic expressions of fitness. Rigidity of genotype-phenotype mappings, as often used in evolutionary computation, constrains the dynamics of evolution to a small space of possible biological or artificial systems. Open-ended evolution is not possible under such constraints. Evolution, by itself, cannot fully explain the advant of genetic systems, the flexible genotype-phenotype mappings, heritable fitness. This presents a challenge both to biologists seeking to understand the capacity of life to evolve and to computer scientists who seek to harness biological-like robustness and openness in the evolution of artificial systems.
Evolvability has been variously defined as the ``ability to produce adaptive variants when acted on by the genetic system" (Wagner & Altenberg, 1996), as the ``capacity to generate heritable phenotypic variation" (Kirschner & Gerhart, 1998); and as characterized by `evolutionary watersheds' opening the ``floodgates to future evolution", such as segmentation and body plans (Dawkins, 1987). On the other hand, unconstrained or an inappropriately constrained variability and change can lead to lack of stability, ``cancer", nonheritability of fitness, lack of evolutionary power, and so on. Since at least the work of Parnas (1972) and Dijkstra (1968) in software engineering, related issues have been identified in the design of software systems (e.g. structural decomposition, information hiding, modularity, requirements change).
We have come a long way since Friedberg (1959) documented the difficulty of introducing random variation into conventional computer code. It is now possible to evolve programs to carry out some simple tasks (and some not-so-simple ones) by introducing appropriate variability and robustness in the face of it (e.g. Koza 1992). Software evolution and maintenance present quite different modes of variability and of descent with modification than in biological or evolutionary computation. In this realm, robustness to change in context of use (e.g. Goguen 1994) and inertia of legacy-driven concepts of ``the system'' (Loomes & Nehaniv 2001) are key concerns. Similar ideas such as (appropriate) modularity, duplication and diversion (cf. Ohno 1970), redundancy, phenotypic plasticity, trade-offs between freedom at different levels (e.g. Michod & Roze 1999), and forbidding undesirable variability while allowing useful variability are common threads in evolvability issues across domains.
We discuss these similarities and differences between these domains, and address in what sense it is possible to transcend these disciplines in the study and application of evolvability.