Academia.edu no longer supports Internet Explorer.
To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to upgrade your browser.
2021, IEEE Software
…
7 pages
1 file
A key to the success of Automatic Program Repair techniques is how easily they can be used in an industrial setting. In this article, we describe a collaboration by a team from four UK-based universities with Bloomberg (London) in implementing automatic, high-quality fixes to its code base. We explain the motivation for adopting APR, the mechanics of the prototype tool that was built, and the practicalities of integrating APR into existing systems.
Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering
This paper reports on qualitative research into automatic program repair (APR) at Bloomberg. Six focus groups were conducted with a total of seventeen participants (including both developers of the APR tool and developers using the tool) to consider: the development at Bloomberg of a prototype APR tool (Fixie); developers' early experiences using the tool; and developers' perspectives on how they would like to interact with the tool in future. APR is developing rapidly and it is important to understand in greater detail developers' experiences using this emerging technology. In this paper, we provide in-depth, qualitative data from an industrial setting. We found that the development of APR at Bloomberg had become increasingly user-centered, emphasising how fixes were presented to developers, as well as particular features, such as customisability. From the focus groups with developers who had used Fixie, we found particular concern with the pragmatic aspects of APR, such as how and when fixes were presented to them. Based on our findings, we make a series of recommendations to inform future APR development, highlighting how APR tools should 'start small', be customisable, and fit with developers' workflows. We also suggest that APR tools should capitalise on the promise of repair bots and draw on advances in explainable AI.
Fundamental Approaches to Software Engineering, 2014
While most debugging techniques focus on patching implementations, there are bugs whose most appropriate corrections consist in fixing the specification to prevent invalid executions-such as to define the correct input domain of a function. In this paper, we present a fully automatic technique that fixes bugs by proposing changes to contracts (simple executable specification elements such as pre-and postconditions). The technique relies on dynamic analysis to understand the source of buggy behavior, to infer changes to the contracts that emend the bugs, and to validate the changes against general usage. We have implemented the technique in a tool called SpeciFix, which works on programs written in Eiffel, and evaluated it on 44 bugs found in standard data-structure libraries. Manual analysis by human programmers found that SpeciFix suggested repairs that are deployable for 25% of the faults; in most cases, these contract repairs were preferred over fixes for the same bugs that change the implementation.
Journal of Systems and Software, 2021
Automated Program Repair (APR) has attracted significant attention from software engineering research and practice communities in the last decade. Several teams have recorded promising performance in fixing real bugs and there is a race in the literature to fix as many bugs as possible from established benchmarks. Gradually, repair performance of APR tools in the literature has gone from being evaluated with a metric on the number of generated plausible patches to the number of correct patches. This evolution is necessary after a study highlighting the overfitting issue in test suite-based automatic patch generation. Simultaneously, some researchers are also insisting on providing time cost in the repair scenario as a metric for comparing state-of-the-art systems. In this paper, we discuss how the latest evaluation metrics of APR systems could be biased. Since design decisions (both in approach and evaluation setup) are not always fully disclosed, the impact on repair performance is unknown and computed metrics are often misleading. To reduce notable biases of design decisions in program repair approaches, we conduct a critical review on the evaluation of patch generation systems and propose eight evaluation metrics for fairly assessing the performance of APR tools. Eventually, we show with experimental data on 11 baseline program repair systems that the proposed metrics allow to highlight some caveats in the literature. We expect wide adoption of these metrics in the community to contribute to boosting the development of practical, and reliably performable program repair tools.
ArXiv, 2020
The current article is an interdisciplinary attempt to decipher automatic program repair processes. The review is done by the manner typical to human science known as diffraction. We attempt to spot a gap in the literature of self-healing and self-repair operations and further investigate the approaches that would enable us to tackle the problems we face. As a conclusion, we suggest a shift in the current approach to automatic program repair operations in order to attain our goals. The emphasis of this review is to achieve full automation. Several obstacles are shortly mentioned in the current essay but the main shortage that is covered is the overfitting obstacle, and this particular problem is investigated in the stream that is related to full automation of the repair process.
2019 IEEE 1st International Workshop on Intelligent Bug Fixing (IBF), 2019
2011
Many programmers, when they encounter an error, would like to have the benefit of automatic fix suggestions-as long as they are, most of the time, adequate. Initial research in this direction has generally limited itself to specific areas, such as data structure classes with carefully designed interfaces, and relied on simple approaches. To provide high-quality fix suggestions in a broad area of applicability, the present work relies on the presence of contracts in the code, and on the availability of static and dynamic analyses to gather evidence on the values taken by expressions derived from the code. The ideas have been built into the AutoFix-E2 automatic fix generator. Applications of AutoFix-E2 to general-purpose software, such as a library to manipulate documents, show that the approach provides an improvement over previous techniques, in particular purely model-based approaches.
2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, 2015
We present the integration of the AutoFix automated program repair technique into the EiffelStudio Development Environment. AutoFix presents itself like a recommendation system capable of automatically finding bugs and suggesting fixes in the form of source-code patches. Its performance suggests usage scenarios where it runs in the background or during work interruptions, displaying fix suggestions as they become available. This is a contribution towards the vision of semantic Integrated Development Environments, which offer powerful automated functionality within interfaces familiar to developers. A screencast highlighting the main features of AutoFix can be found at: http://youtu.be/Ff2ULiyL-80.
Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis, 2019
We revisit the performance of template-based APR to build comprehensive knowledge about the effectiveness of fix patterns, and to highlight the importance of complementary steps such as fault localization or donor code retrieval. To that end, we first investigate the literature to collect, summarize and label recurrently-used fix patterns. Based on the investigation, we build TBar, a straightforward APR tool that systematically attempts to apply these fix patterns to program bugs. We thoroughly evaluate TBar on the De-fects4J benchmark. In particular, we assess the actual qualitative and quantitative diversity of fix patterns, as well as their effectiveness in yielding plausible or correct patches. Eventually, we find that, assuming a perfect fault localization, TBar correctly/plausibly fixes 74/101 bugs. Replicating a standard and practical pipeline of APR assessment, we demonstrate that TBar correctly fixes 43 bugs from Defects4J, an unprecedented performance in the literature (including all approaches, i.e., template-based, stochastic mutation-based or synthesis-based APR). CCS CONCEPTS • Software and its engineering → Software verification and validation; Software defect analysis; Software testing and debugging.
IEEE Software, 2019
and deployed within a rich ecosystem of hardware, platforms, services, protocols, libraries, and schemas. Many assumptions about this ecosystem are informal and fail to hold over long timelines, rendering otherwise useful software prematurely obsolete when unforeseen shifts occur. For exa mple , t he emer genc e of qu a ntum computers is likely to render a vast swath of legacy asymmetric c r y p t o g r ap h i c c o d e b a s e d o n prequantum algorithms obsolete. 1 Human refactoring of these legacy systems may require programmer expertise that no longer exists, be too expensive, and involve engineering processes too error-prone to be feasible for all but the most critical applications. Cost-efficient tools that can quickly reason about such conditions and adapt software without human inter vention are therefore needed to keep software op erational beyond its humanmaintainable lifespan. The Semi-Autonomic Bytecode Repair Engine (SABRE) is a toolchain for Java Vir tual Machine (JVM) 2 languages that can autonomically repair software when faced with certain classes of evolutionary pressure, allowing the software to operate even when the assumptions under which it was originally developed no longer hold. SABRE's repair workflow is initially seeded with a small quantity of human-provided knowledge expressed using vocabulary from an ontology. 3 These knowledge artifacts capture the various implicit assumptions of the software engineering process (e.g., assertions about invariants related to deployment and the operation of the software once deployed). SABRE peers into the structure of the compiled software and monitors its behavior under testing to identify constructs that violate these assumptions. SA-BRE examines these violations and reasons about possible repair strategies, ultimately enacting a selected strategy through direct bytecode and/ or source code modification. SABRE Operation A conceptual view of SABRE's operation during a complete application repair workflow is depicted in Figure 1.
2014 IEEE Seventh International Conference on Software Testing, Verification and Validation, 2014
Automated program repair (APR) techniques fix faults by repeatedly modifying suspicious code until a program passes a set of test cases. Although generating a repair is the goal of APR, a repair can have negative consequences. The quality of a repair is reduced when the repair introduces new faults and/or degrades maintainability by adding irrelevant but functionally benign code. We used two APR approaches to repair faulty binary operators: (1) find a repair in existing code by applying a genetic algorithm to replace suspicious code with other existing code as done by GenProg, and (2) mutate suspicious operators within a genetic algorithm. Mutating operators was clearly more effective in repairing faulty operators than using existing code for a repair. We also evaluated the approaches in terms of two potential negative effects: (1) the introduction of new faults and (2) a reduction of program maintainability. We found that repair processes that use tests that satisfy branch coverage reduce the number of new faults. In contrast, repair processes using tests that satisfy statement coverage and randomly generated tests introduce numerous new faults. We also demonstrate that a mutationbased repair process produces repairs that should be more maintainable compared to those produced using existing code.
international journal of chemical sciences, 2016
F. Oncina (ed.), Palabras, conceptos e ideas. Estudios de historia conceptual, Barcelona, Herder, pp. 107-128
International Journal of Quality Engineering and Technology, 2018
Orquestrar utopias: música, associativismo e transformação social. Maria do Rosário Pestana (ed.). Lisboa: Edições Colibri, 2022, pp. 115-146.
Filosofía de la violencia. Vulnerables ante la brutalidad, 2024
International Journal of Education, Psychology and Counseling, 2018
Journal of Forecasting
Veterinary Research Communications, 2003
Abitare in Cisalpina. L’edilizia privata nelle città e nel territorio in età romana (Antichità Altoadriatiche XLIX), 2001
Revista proyecto, progreso, arquitectura, 2022
Saúde em Debate, 2022
Buletin Veteriner Udayana, 2018
Planta Daninha, 2007
Hayati Journal of Biosciences, 2024
Blucher Design Proceedings, 2018
The American Journal of Tropical Medicine and Hygiene, 2012
Dalat University Journal of Science, 2017
HAL (Le Centre pour la Communication Scientifique Directe), 2011