2,987 research outputs found

    Empirical Comparison of Search Heuristics for Genetic Improvement of Software

    Get PDF
    Genetic improvement uses automated search to improve existing software. It has been successfully used to optimise various program properties, such as runtime or energy consumption, as well as for the purpose of bug fixing. Genetic improvement typically navigates a space of thousands of patches in search for the program mutation that best improves the desired software property. While genetic programming has been dominantly used as the search strategy, more recently other search strategies, such as local search, have been tried. It is, however, still unclear which strategy is the most effective and efficient. In this paper, we conduct an in-depth empirical comparison of a total of 18 search processes using a set of 8 improvement scenarios. Additionally, we also provide new genetic improvement benchmarks and we report on new software patches found. Our results show that, overall, local search approaches achieve better effectiveness and efficiency than genetic programming approaches. Moreover, improvements were found in all scenarios (between 15% and 68%). A replication package can be found online: https://github.com/bloa/tevc _2020 artefact

    Refining Fitness Functions for Search-Based Program Repair

    Get PDF
    Debugging is a time-consuming task for software engineers. Automated Program Repair (APR) has proved successful in automatically fixing bugs for many real-world applications. Search-based APR generates program variants that are then evaluated on the test suite of the original program, using a fitness function. In the vast majority of search-based APR work only the Boolean test case result is taken into account when evaluating the fitness of a program variant. We pose that more fine-grained fitness functions could lead to a more diverse fitness landscape, and thus provide better guidance for the APR search algorithms. We thus present 2Phase, a fitness function that also incorporates the output of test case failures, and compare it with ARJAe, that shares the same principles, and the standard fitness, that only takes the Boolean test case result into consideration. We conduct the comparison on 16 buggy programs from the QuixBugs benchmark using the Gin genetic improvement framework. The results show no significant difference in the performance of all three fitness functions considered. However, Gin was able to find 8 correct fixes, more than any of the APR tools in the recent QuixBugs study

    Empirical Analysis of Mutation Operator Selection Strategies for Genetic Improvement

    Get PDF
    Genetic improvement (GI) tools find improved program versions by modifying the initial program. These can be used for the purpose of automated program repair (APR). GI uses software transformations, called mutation operators, such as deletions, insertions, and replacements of code fragments. Current edit selection strategies, however, under-explore the search spaces of insertion and replacement operators. Therefore, we implement a uniform strategy based on the relative operator search space sizes. We evaluate it on the QuixBugs repair benchmark and find that the uniform strategy has the potential for improving APR tool performance. We also analyse the efficacy of the different mutation operators with regard to the type of code fragment they are applied to. We find that, for all operators, choosing expression statements as target statements is the most successful for finding program variants with improved or preserved fitness (50.03%, 33.12% and 23.85% for deletions, insertions and replacements, respectively), whereas choosing declaration statements is the least effective (3.16%, 10.82% and 3.14% for deletions, insertions and replacements)

    Diversity and evolution of phycobilisomes in marine Synechococcus spp.: a comparative genomics study

    Get PDF
    Background Marine Synechococcus owe their specific vivid color (ranging from blue-green to orange) to their large extrinsic antenna complexes called phycobilisomes, comprising a central allophycocyanin core and rods of variable phycobiliprotein composition. Three major pigment types can be defined depending on the major phycobiliprotein found in the rods (phycocyanin, phycoerythrin I or phycoerythrin II). Among strains containing both phycoerythrins I and II, four subtypes can be distinguished based on the ratio of the two chromophores bound to these phycobiliproteins. Genomes of eleven marine Synechococcus strains recently became available with one to four strains per pigment type or subtype, allowing an unprecedented comparative genomics study of genes involved in phycobilisome metabolism. Results By carefully comparing the Synechococcus genomes, we have retrieved candidate genes potentially required for the synthesis of phycobiliproteins in each pigment type. This includes linker polypeptides, phycobilin lyases and a number of novel genes of uncharacterized function. Interestingly, strains belonging to a given pigment type have similar phycobilisome gene complements and organization, independent of the core genome phylogeny (as assessed using concatenated ribosomal proteins). While phylogenetic trees based on concatenated allophycocyanin protein sequences are congruent with the latter, those based on phycocyanin and phycoerythrin notably differ and match the Synechococcus pigment types. Conclusion We conclude that the phycobilisome core has likely evolved together with the core genome, while rods must have evolved independently, possibly by lateral transfer of phycobilisome rod genes or gene clusters between Synechococcus strains, either via viruses or by natural transformation, allowing rapid adaptation to a variety of light niches

    Arbres fontaines, eau du brouillard et forĂŞts de nuages

    Get PDF
    A partir des arbres fontaines comme le Garoé (Hierro, Canaries), un reportage photographique commenté est présenté sur la captation des eaux de brouillard par la végétation. Le Garoé était un laurier dont l'eau était bue aussi bien par l'homme que par le bétail jusqu'en 1610, date à laquelle il fut déraciné par un ouragan. Actuellement, hommes et animaux puisent leurs ressources en eau dans des forêts de conifères à Hierro, où pins et genévriers sont plantés ou entretenus en mémoire du Garoé. Les progrès en matière de captation des eaux du brouillard et les recherches menées dans les forêts de nuages sont brièvement passés en revue. La captation de ces eaux se met en place au nord du Chili et au Pérou pour aider des communautés isolées. Les forêts de nuages, appartenant à la classification d'écosystème fragile de la FAO, sont en danger. Les programmes de recherche y sont généralement soutenus par l'UICN et la PHI de l'Unesco. (Résumé d'auteur

    Refining Fitness Functions for Search-Based Automated Program Repair: A Case Study with ARJA and ARJA-e

    Get PDF
    Several tools support code templates as a means to specify searches within a program’s source code. Despite their ubiquity, code templates can often prove difficult to specify, and may produce too many or too few match results. In this paper, we present a search-based approach to support developers in specifying templates. This approach uses a suite of mutation operators to recommend changes to a given template, such that it matches with a desired set of code snippets. We evaluate our approach on the problem of inferring a code template that matches all instances of a design pattern, given one instance as a starting template
    • …
    corecore