What Software Evolution and Biological Evolution Don't Have in Common
Understanding software change as an evolutionary process analogous to biological evolution is an increasingly popular approach to software evolvability but requires some caution. Issues of evolvability make sense not only for biological and evolutionary computation systems, but also in the realms of artifacts, culture, and software systems. Persistence through time with variation (while possibly spreading) is an analogue to variation (with heritability). Thus discrete individual replicators are not strictly necessary for an evolutionary dynamic to take place. Studying identified properties that give biological and artifact evolution the capacity to produce complex adaptive variation could shed light on how to enhance the evolvability of software systems in general and of evolutionary computation in particular. Evolution and evolvability can be compared in different domains. But the evolution of software systems is also very unlike that of biological entities whose existence, persistence, development, and integrity as single individuals is actively maintained by the activity of the entities themselves over a long evolutionary history. Integrity of software systems – i.e. the assumption that they are well-defined, coherent individuals that develop – is presupposed by nearly all software process approaches and limits their effectiveness. Understanding the long-term evolvability of software systems as they undergo “descent with modification” thus requires much more than a traditional Darwinian approach. We compile and discuss differences and similarities between software evolution and other instances evolution toward this end.