Software engineering continues to produce some of the most complex human artefacts on the planet. Mostly software engineering has succeeded in its goal of describing in complete detail the computer systems people create, maintain and use. Nonetheless, despite extensive tools, large software systems are beyond comprehension. They cannot be fully understood by anyone no matter how clever, nor can they be understood by groups of people, not even the team of experts who may have have been working on them for years. Nonetheless they continue to yield enormous economic advantage which has lead to the world economy being addicted to software.

Genetic Improvement (GI) applies search based optimisation techniques (SBSE) such as genetic algorithms (GA), genetic programming (GP) and hill climbing to make measurable improvement in existing human written code. Although GAs and GP have been analysed for sometime, very little is known about the fitness landscape of software, we present results showing human written code (like other Human endeavours) can follow Zipf’s law, however with constants in GPU code this is modified by human knowledge of the powers of 2. Results suggest software engineering artefacts are not as fragile as is often assumed, lending support to the artificial evolution of source code.

Authors

Bill Langdon Department of Computer Sciencehttp://www.cs.ucl.ac.uk/staff/W.Langdon/

Evolutionary computation methods e-session