Skip to main content

2000 | Buch

Automatic Re-engineering of Software Using Genetic Programming

verfasst von: Conor Ryan

Verlag: Springer US

Buchreihe : Genetic Programming

insite
SUCHEN

Über dieses Buch

Automatic Re-engineering of Software Using Genetic Programming describes the application of Genetic Programming to a real world application area - software re-engineering in general and automatic parallelization specifically. Unlike most uses of Genetic Programming, this book evolves sequences of provable transformations rather than actual programs. It demonstrates that the benefits of this approach are twofold: first, the time required for evaluating a population is drastically reduced, and second, the transformations can subsequently be used to prove that the new program is functionally equivalent to the original.
Automatic Re-engineering of Software Using Genetic Programming shows that there are applications where it is more practical to use GP to assist with software engineering rather than to entirely replace it. It also demonstrates how the author isolated aspects of a problem that were particularly suited to GP, and used traditional software engineering techniques in those areas for which they were adequate.
Automatic Re-engineering of Software Using Genetic Programming is an excellent resource for researchers in this exciting new field.

Inhaltsverzeichnis

Frontmatter
1. Introduction
Abstract
This book is about applying Genetic Programming to a Software Re-Engineering problem, the automatic parallelization of serial code. It describes the approaches taken and some of the problems that were encountered with this task. The problems and obstacles we encountered are likely to confound other projects involving GP, and the book presents generalised approaches to reducing or avoiding these problems.
Conor Ryan
2. Genetic Programming
Abstract
Evolutionary Algorithms are computer algorithms which use artificial evolution to solve problems. This chapter introduces evolution and gives a brief overview of the Genetic Algorithm, one of the most common Evolutionary Algorithm, before concentrating on Genetic Programming.
Conor Ryan
3. Software Re-Engineering
Abstract
Software maintenance is a highly important, yet often neglected, part of the software life cycle, and has been widely recognised as one of the more serious contributors to the current demand for programmers. Few systems remain static after delivery, as most are often subject to numerous calls for change, for everything from changing customer needs to porting the system to different operating systems or even different versions of the same operating system.
Conor Ryan
4. Multi-Objective Problems
Abstract
Many of the problems in the world of software re-engineering are reasonably conducive to the use of evolutionary methods. There is often only vague or even inaccurate information available on how one should approach particular problems. To further complicate matters, there are often several — possibly even conflicting — criteria by which the product is judged. EAs pride themselves on being able to pick their way through the minefield of misleading information and dead ends that is to be expected in the real world, but good performance often hinges on a good measure of the fitness. When there is imperfect information about a system, it is difficult to define the fitness function. For example, although we are interested in evolving individuals who are both parallel and correct, it isn’t clear how to balance these two issues during evolution.
Conor Ryan
5. Paragen I
Abstract
One of the most attractive things about GP is the simplicity with which one can apply it to all manner of problems with only the most casual of background knowledge. The same system that can solve symbolic regression problems, can show artificial ants how to negotiate their way around Santa Fe, can lay out electrical circuits and can control satellites. It can even identify potential risks to insurance companies.
Conor Ryan
6. Practical Considerations
Abstract
This is where we take GP into the “real world”, and begin examining issues that are of no great concern to most GP experiments, but which are crucial to software re-engineering, and to people sceptical or even suspicious of GP. The previous chapter ended on a rather high note, GP had been successfully applied to a difficult, real world problem with a large degree of success, and with only a modicum of tweaking.
Conor Ryan
7. Paragen II
Abstract
In the wake of the previous chapter, a different approach to auto-parallelization is developed. Rather than evolving programs which require evaluation for fitness measurement, we now evolve sequences of standard transformations, which, when applied to a serial program generate a functionally equivalent parallel version. Moreover, it can be proved using the transformations that the parallel version of the program has not been functionally modified.
Conor Ryan
8. Conclusions
Abstract
Software re-engineering is concerned with improving the performance of code. Often the changes to the code can be implemented by applying certain semantics preserving transformations. However, there are often a large number of transformations which can be applied, and the order of application can affected the quality of the output. An alternative to transforming a program is to disassemble it, and attempt to reassemble it in a form that improves its performance.
Conor Ryan
Backmatter
Metadaten
Titel
Automatic Re-engineering of Software Using Genetic Programming
verfasst von
Conor Ryan
Copyright-Jahr
2000
Verlag
Springer US
Electronic ISBN
978-1-4615-4631-3
Print ISBN
978-1-4613-7094-9
DOI
https://doi.org/10.1007/978-1-4615-4631-3