Use this URL to cite or link to this record in EThOS:
Title: The blind software engineer : improving the non-functional properties of software by means of genetic improvement
Author: Bruce, Bobby R.
ISNI:       0000 0004 7429 091X
Awarding Body: UCL (University College London)
Current Institution: University College London (University of London)
Date of Award: 2018
Availability of Full Text:
Access from EThOS:
Full text unavailable from EThOS. Please try the link below.
Access from Institution:
Life, even in its most basic of forms, continues to amaze mankind with the complexity of its design. When analysing this complexity it is easy to see why the idea of a grand designer has been such a prevalent idea in human history. If it is assumed intelligence is required to undertake a complex engineering feat, such as developing a modern computer system, then it is logical to assume a creature, even as basic as an earthworm, is the product of an even greater intelligence. Yet, as Darwin observed, intelligence is not a requirement for the creation of complex systems. Evolution, a phenomenon without consciousness or intellect can, over time, create systems of grand complexity and order. From this observation a question arises - is it possible to develop techniques inspired by Darwinian evolution to solve engineering problems without engineers? The first to ask such a question was Alan Turing, a person considered by many to be the father of computer science. In 1948 Turing proposed three approaches he believed could solve complex problems without the need for human intervention. The first was a purely logicdriven search. This arose a decade later in the form of general problem-solving algorithms. Though successful in solving toy problems which could be sufficiently formalised, solving real-world problems was found to be infeasible. The second approach Turing called 'cultural search'. This approach would store libraries of information to then reference and provide solutions to particular problems in accordance to this information. This is similar to what we would now refer to as an expert system. Though the first expert system is hard to date due to differences in definition, the development is normally attributed to Feigenbaum, Bachanan, Lederberg, and Sutherland for their work, originating in the 1960s, on the DENRAL system. Turing's last proposal was an iterative, evolutionary technique which he later expanded on stating: "We cannot expect to find a good child-machine at the first attempt. One must experiment with teaching one machine and see how well it learns. One can then try another and see if it is better or worse. There is an obvious connection between this process and evolution". Though a primitive proposal in comparison to modern techniques, Turing clearly identified the foundation of what we now refer to as Evolutionary Computation (EC). EC borrows principles from biological evolution and adapts them for use in computer systems. Despite EC initially appearing to be an awkward melding between the two perpendicular disciplines of biology and computer science, useful ideas from evolutionary theory can be utilised in engineering processes. Just as man dreamt of flight from watching birds, EC researchers dream of self-improving systems from observing evolutionary processes. Despite these similarities, evolutionary inspired techniques in computer science have yet to build complex software systems from scratch. Though they have been successfully utilised to solve complex problems, such as classification and clustering, there is a general acceptance that, as in nature, these evolutionary processes take vast amounts of time to create complex structures from simple starting points. Even the best computer systems cannot compete with nature's ability to evaluate many millions of variants in parallel over the course of millennia. It is for this reason research into modifying and optimising already existing software, a process known as Genetic Improvement, has blossomed. Genetic Improvement (commonly referred to as 'GI') modifies existing software using search-based techniques with respect to some objective. These search-based techniques are typically evolutionary and, if not, are based on iterative improvement which we may view as a form of evolution. GI sets out to solve the 'last mile' problems of software development; problems that arise in software engineering close to completion, such as bugs or sub-optimal performance. It is the genetic improvement of non-functional properties, such as execution time and energy consumption, which we concern ourselves with in this thesis, as we find it to be the area of research which is the most interesting, and the most exciting. It is hoped that those referencing this thesis may share the same vision: that the genetic improvement of non-functional properties has the potential to transform software development, and that the work presented here is a step towards that goal. The thesis is divided into six chapters (inclusive of this 'Introduction' chapter). In Chapter 2 we explain the background material necessary to understand the content discussed later in the following chapters. From this, in Chapter 3, we highlight our investigations into the novel nonfunctional property of energy consumption which, in part, includes a study in how energy may be reduced via the approximation of output. We then expand on this in Chapter 4 by discussing our investigations into the applicability of GI in the domain of approximate computing, which covers a study into optimising the non-functional properties of software running on novel hardware - in this case, Android tablet devices. We then show, in Chapter 5, early research into how GI may be used to specialise software for specific hardware targets; in particular, how GI may automatically modify sequential code to run on GPUs. Finally, in Chapter 6 we discuss what relevant work is currently being undertaken by using the area of genetic improvement, and provide the reader with clear and concise take-away messages from this thesis.
Supervisor: Not available Sponsor: Not available
Qualification Name: Thesis (Ph.D.) Qualification Level: Doctoral
EThOS ID:  DOI: Not available