Back to 2015-proposals
Title:Evolving Software: A Fusion of the Developer and Evolutionary Algorithms
Proposer: Christopher Simons
Type: Workshop
Duration: 90 mins
Description:
The agile principle of iterative software development to deliver working software frequently
is well understood and widely practiced. Indeed, the practice of iterative software
development has led to the notion of software evolving over its lifetime, wherein software
must respond to change and continually adapt and grow. But what if software evolution
could itself be performed in software? Well, it turns out that computational evolutionary
algorithms have a long and distinguished history, and include such approaches as Genetic
Algorithms (GAs) and Genetic Programming (GP). This interactive workshop explains the
approach of evolutionary algorithms, and explores the role of the human designer in this
evolution, taking software designs as an illustrative example.
The workshop begins with an overview of how natural evolution inspires evolutionary
algorithms. For example, the 'survival of the fittest' in nature inspires the use of fitness
measures to select candidate design solutions with advantageous genes for reproduction
into the next generation.
The workshop then forms small breakout groups to consider what fitness measures might be
useful in the selection of candidate software designs in evolutionary algorithms. Findings are
shared and discussed around the workshop.
Next, the role of the human designer is explored. After all, software is not sentient and so
cannot provide the creative design insights in the same way that experienced developers
can. Thus the purpose of evolutionary algorithms is not to totally automate development,
replacing the human programmer. Rather, by emulating the evolution, a fusion of human
qualitative evaluation of candidates ('the survival of the fittest') and the evolutionary
algorithm is achieved.
For a second time, building on the ideas discussed, participants form into small breakout
groups and explore ways in which the fusion of human developers and evolutionary
algorithms can effectively be exploited in software development. Again, findings are shared
and discussed around the workshop.
Finally, the case study offers some signposts to readily available evolutionary algorithm
frameworks for developers to take away and hence advance and improve their design and
development skills.