Evolutionary software engineering, a review

In this paper, we review the work applying computational evolutionary methods in software engineering, especially in software testing. Testing is both technically and economically vital for high quality software production. About half of the expenses in software production has been estimated to be d...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Applied soft computing 2005-03, Vol.5 (3), p.315-331
Hauptverfasser: Mantere, Timo, Alander, Jarmo T.
Format: Artikel
Sprache:eng
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Beschreibung
Zusammenfassung:In this paper, we review the work applying computational evolutionary methods in software engineering, especially in software testing. Testing is both technically and economically vital for high quality software production. About half of the expenses in software production has been estimated to be due to testing. Much of the testing is done manually or using other labor-intensive methods. To develop efficient, cost effective, and automatic means and tools for software testing is thus highly tempting for software industry. Searching software errors by using evolution based methods like genetic algorithms is one attempt towards these goals. Software testing is a field, where the gap between the means and needs is exceptionally wide. Despite the great advances in computing during the last 30 years the software development and the testing process in most companies is still very immature, meanwhile the complexity and criticality of the software has increased tremendously. When testing software, by using any optimization method as a test data generator, we are optimizing the given input according to a selected software metric encoded as a fitness function. The success of genetic algorithms in optimization is based on the so called building block hypothesis. Basically, the genetic algorithms do not find any solitary bug at any higher probability than pure random search. However, evolutionary algorithms adapt to the given problem, in practice this means that a genetic algorithm-based tester generates several parameter combinations that reveal minor bugs and based on this information constructs sequences that will reveal, on the average, more bugs than pure random testing.
ISSN:1568-4946
DOI:10.1016/j.asoc.2004.08.004