A. Arcuri. ICSE Companion '08: Companion of the 30th
international conference on Software engineering, page 1003--1006. Leipzig, Germany, ACM, (2008)Doctoral symposium session.
DOI: http://doi.acm.org/10.1145/1370175.1370223
Abstract
Software Testing can take up to half of the resources
of the development of new software. Although there has
been a lot of work on automating the testing phase,
fixing a bug after its presence has been discovered is
still a duty of the programmers. Techniques to help the
software developers for locating bugs exist though, and
they take name of Automated Debugging. However, to our
best knowledge, there has been only little attempt in
the past to completely automate the actual changing of
the software for fixing the bugs. Therefore, in this
paper we propose an evolutionary approach to automate
the task of fixing bugs. The basic idea is to evolve
the programs (e.g., by using Genetic Programming) with
a fitness function that is based on how many unit tests
they are able to pass. If a formal specification of the
buggy software is given, more sophisticated fitness
functions can be designed. Moreover, by using the
formal specification as an oracle, we can generate as
many unit tests as we want. Hence, a co-evolution
between programs and unit tests might take place to
give even better results. It is important to know that,
to fix the bugs in a program with this novel approach,
a user needs only to provide either a formal
specification or a set of unit tests. No other
information is required.
%0 Conference Paper
%1 Arcuri:2008:ICSEphd
%A Arcuri, Andrea
%B ICSE Companion '08: Companion of the 30th
international conference on Software engineering
%C Leipzig, Germany
%D 2008
%I ACM
%K algorithms, genetic programming
%P 1003--1006
%R http://doi.acm.org/10.1145/1370175.1370223
%T On the automation of fixing software bugs
%U http://delivery.acm.org/10.1145/1380000/1370223/p1003-arcuri.pdf
%X Software Testing can take up to half of the resources
of the development of new software. Although there has
been a lot of work on automating the testing phase,
fixing a bug after its presence has been discovered is
still a duty of the programmers. Techniques to help the
software developers for locating bugs exist though, and
they take name of Automated Debugging. However, to our
best knowledge, there has been only little attempt in
the past to completely automate the actual changing of
the software for fixing the bugs. Therefore, in this
paper we propose an evolutionary approach to automate
the task of fixing bugs. The basic idea is to evolve
the programs (e.g., by using Genetic Programming) with
a fitness function that is based on how many unit tests
they are able to pass. If a formal specification of the
buggy software is given, more sophisticated fitness
functions can be designed. Moreover, by using the
formal specification as an oracle, we can generate as
many unit tests as we want. Hence, a co-evolution
between programs and unit tests might take place to
give even better results. It is important to know that,
to fix the bugs in a program with this novel approach,
a user needs only to provide either a formal
specification or a set of unit tests. No other
information is required.
@inproceedings{Arcuri:2008:ICSEphd,
abstract = {Software Testing can take up to half of the resources
of the development of new software. Although there has
been a lot of work on automating the testing phase,
fixing a bug after its presence has been discovered is
still a duty of the programmers. Techniques to help the
software developers for locating bugs exist though, and
they take name of Automated Debugging. However, to our
best knowledge, there has been only little attempt in
the past to completely automate the actual changing of
the software for fixing the bugs. Therefore, in this
paper we propose an evolutionary approach to automate
the task of fixing bugs. The basic idea is to evolve
the programs (e.g., by using Genetic Programming) with
a fitness function that is based on how many unit tests
they are able to pass. If a formal specification of the
buggy software is given, more sophisticated fitness
functions can be designed. Moreover, by using the
formal specification as an oracle, we can generate as
many unit tests as we want. Hence, a co-evolution
between programs and unit tests might take place to
give even better results. It is important to know that,
to fix the bugs in a program with this novel approach,
a user needs only to provide either a formal
specification or a set of unit tests. No other
information is required.},
added-at = {2008-06-19T17:35:00.000+0200},
address = {Leipzig, Germany},
author = {Arcuri, Andrea},
biburl = {https://www.bibsonomy.org/bibtex/207a1fff4078420c895f5c768c48bf53d/brazovayeye},
booktitle = {ICSE Companion '08: Companion of the 30th
international conference on Software engineering},
doi = {http://doi.acm.org/10.1145/1370175.1370223},
interhash = {4abf94bcce22a5374ec5f4816fece6e4},
intrahash = {07a1fff4078420c895f5c768c48bf53d},
isbn13 = {978-1-60558-079-1},
keywords = {algorithms, genetic programming},
note = {Doctoral symposium session},
notes = {also known as \cite{1370223}
Doctoral Symposium of the IEEE International Conference
in Software Engineering},
pages = {1003--1006},
publisher = {ACM},
publisher_address = {New York, NY, USA},
size = {4 pages},
timestamp = {2008-06-19T17:35:51.000+0200},
title = {On the automation of fixing software bugs},
url = {http://delivery.acm.org/10.1145/1380000/1370223/p1003-arcuri.pdf},
year = 2008
}