User Tools

Site Tools


2015:evolving_software_-_a_fusion_of_the_developer_and_evolutionary_algorithms

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.




2015/evolving_software_-_a_fusion_of_the_developer_and_evolutionary_algorithms.txt · Last modified: 2016/06/11 14:05 by 127.0.0.1