Bibliography | Borja, Manuel: Automatic software repair of C programs with genetic programming and fix patterns. University of Stuttgart, Faculty of Computer Science, Electrical Engineering, and Information Technology, Master Thesis No. 30 (2015). 57 pages, english.
|
Abstract | Between 50% and 90% of the software costs are invested in repairing errors. The nature of this activity makes difficult its partial or complete automation through software-intensive systems. Nevertheless, a vast amount of research has been made over the last years in the pursuit of novel, effective, sound and scalable solutions towards the automation of software repair. Works like GenProg, PAR, ASTOR, JAFF, which use Genetic Programming to detect and repair software errors, demonstrate this fact. However, there are still a bunch of challenges to overcome in the field of Search-Based Software Engineering (SBSE) metaheuristics, group to which Genetic Programing belongs [Le Goues et al., 2013]. One of them is to improve the low quality of the software repairs. Since the basic idea of the Genetic Algorithms in automatic software repair is to evolve systematically a set of genotypes (i.e. programs) through a series of mutation operations until an optimal fix is found, nonsensical fixes can be presented as a solution. Thus, generating meaningful and human-like repairs is an essential topic to cover in this area in order to improve the patch quality. Since human knowledge and expertise have played and play currently an important role in the bug fixing process, we must transport this intangibles to the automatic software repair process. In this work, similar to the work made by Kim [Kim et al., 2013] we extract this knowledge from different sources of information and structure them in a set of patterns which, along with the Genetic Programming operators, will transform buggy program systematically to find an optimal patch. To our knowledge, this is the first work which applies fix templates to repair C programs. At the end, we will demonstrate that the use of fix templates not only overcome other approaches to fix C programs, but the generated patches tend to be more similar that the ones made by a human.
|