An empirical study of the reliability of UNIX utilities
Communications of the ACM
Genetic programming: on the programming of computers by means of natural selection
Genetic programming: on the programming of computers by means of natural selection
Advances in Software Engineering
Computer
Yesterday, my program worked. Today, it does not. Why?
ESEC/FSE-7 Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering
Bugs as deviant behavior: a general approach to inferring errors in systems code
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
Prioritizing Test Cases For Regression Testing
IEEE Transactions on Software Engineering
Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices
Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices
From symptom to cause: localizing errors in counterexample traces
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 5th International Conference on Genetic Algorithms
Proceedings of the 5th International Conference on Genetic Algorithms
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Bug isolation via remote program sampling
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Introduction to Evolutionary Computing
Introduction to Evolutionary Computing
Problem Difficulty and Code Growth in Genetic Programming
Genetic Programming and Evolvable Machines
Explaining abstract counterexamples
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
diffX: an algorithm to detect changes in multi-version XML documents
CASCON '05 Proceedings of the 2005 conference of the Centre for Advanced Studies on Collaborative research
Coping with an open bug repository
eclipse '05 Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange
Proceedings of the 28th international conference on Software engineering
Proceedings of the 8th annual conference on Genetic and evolutionary computation
Evolutionary unit testing of object-oriented software using strongly-typed genetic programming
Proceedings of the 8th annual conference on Genetic and evolutionary computation
TimeAware test suite prioritization
Proceedings of the 2006 international symposium on Software testing and analysis
Inference and enforcement of data structure consistency specifications
Proceedings of the 2006 international symposium on Software testing and analysis
Proceedings of the 5th international conference on Generative programming and component engineering
Enhancing server availability and security through failure-oblivious computing
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
The Current State and Future of Search Based Software Engineering
FOSE '07 2007 Future of Software Engineering
Finding safety errors with ACO
Proceedings of the 9th annual conference on Genetic and evolutionary computation
Staffing a software project: A constraint satisfaction and optimization-based approach
Computers and Operations Research
On the automation of fixing software bugs
Companion of the 30th international conference on Software engineering
Making the Most of BMC Counterexamples
Electronic Notes in Theoretical Computer Science (ENTCS)
A genetic programming approach to automated software repair
Proceedings of the 11th Annual conference on Genetic and evolutionary computation
Debugging debugging: acm sigsoft impact paper award keynote
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Automatic program repair with evolutionary computation
Communications of the ACM
Improving impact of self-adaptation and self-management research through evaluation methodology
Proceedings of the 2010 ICSE Workshop on Software Engineering for Adaptive and Self-Managing Systems
Designing better fitness functions for automated program repair
Proceedings of the 12th annual conference on Genetic and evolutionary computation
Human-competitive results produced by genetic programming
Genetic Programming and Evolvable Machines
Open issues in genetic programming
Genetic Programming and Evolvable Machines
Automated fixing of programs with contracts
Proceedings of the 19th international symposium on Software testing and analysis
On test repair using symbolic execution
Proceedings of the 19th international symposium on Software testing and analysis
Dimensions in program synthesis
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Automatically documenting program changes
Proceedings of the IEEE/ACM international conference on Automated software engineering
Automated program repair through the evolution of assembly code
Proceedings of the IEEE/ACM international conference on Automated software engineering
Solving string constraints lazily
Proceedings of the IEEE/ACM international conference on Automated software engineering
The relationship between search based software engineering and predictive modeling
Proceedings of the 6th International Conference on Predictive Models in Software Engineering
Efficient multi-objective higher order mutation testing with genetic programming
Journal of Systems and Software
A study of the uniqueness of source code
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
Automatic workarounds for web applications
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
Speculative analysis: exploring future development states of software
Proceedings of the FSE/SDP workshop on Future of software engineering research
The case for software evolution
Proceedings of the FSE/SDP workshop on Future of software engineering research
Does testing help to reduce the number of potentially faulty statements in debugging?
TAIC PART'10 Proceedings of the 5th international academic and industrial conference on Testing - practice and research techniques
Automatic error correction of java programs
FMICS'10 Proceedings of the 15th international conference on Formal methods for industrial critical systems
An aspect-oriented approach for implementing evolutionary computation applications
Proceedings of the tenth international conference on Aspect-oriented software development
Evolutionary repair of faulty software
Applied Soft Computing
Proceedings of the 33rd International Conference on Software Engineering
Specification-based program repair using SAT
TACAS'11/ETAPS'11 Proceedings of the 17th international conference on Tools and algorithms for the construction and analysis of systems: part of the joint European conferences on theory and practice of software
Macho: programming with man pages
HotOS'13 Proceedings of the 13th USENIX conference on Hot topics in operating systems
Synthesizing geometry constructions
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Systematic editing: generating program transformations from an example
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Evolving patches for software repair
Proceedings of the 13th annual conference on Genetic and evolutionary computation
Genetic programming for shader simplification
Proceedings of the 2011 SIGGRAPH Asia Conference
Using feature locality: can we leverage history to avoid failures during reconfiguration?
Proceedings of the 8th workshop on Assurances for self-adaptive systems
Understanding failures through facts
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Detecting and escaping infinite loops with jolt
Proceedings of the 25th European conference on Object-oriented programming
Exploiting decomposability using recombination in genetic algorithms: an exploratory discussion
SSBSE'11 Proceedings of the Third international conference on Search based software engineering
Why the virtual nature of software makes it ideal for search based optimization
FASE'10 Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering
Code mutation in verification and automatic code correction
TACAS'10 Proceedings of the 16th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Evolving high-level imperative program trees with strongly formed genetic programming
EuroGP'12 Proceedings of the 15th European conference on Genetic Programming
Genetic programming needs better benchmarks
Proceedings of the 14th annual conference on Genetic and evolutionary computation
Representations and operators for improving evolutionary software repair
Proceedings of the 14th annual conference on Genetic and evolutionary computation
A human study of patch maintainability
Proceedings of the 2012 International Symposium on Software Testing and Analysis
A systematic study of automated program repair: fixing 55 out of 105 bugs for $8 each
Proceedings of the 34th International Conference on Software Engineering
Automated repair of HTML generation errors in PHP applications using string constraint solving
Proceedings of the 34th International Conference on Software Engineering
Proceedings of the 34th International Conference on Software Engineering
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Dynamic adaptive search based software engineering
Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurement
AI for the win: improving spectrum-based fault localization
ACM SIGSOFT Software Engineering Notes
Modular and verified automatic program repair
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Bolt: on-demand infinite loop escape in unmodified binaries
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Reusing debugging knowledge via trace-based bug search
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Automating presentation changes in dynamic web applications via collaborative hybrid analysis
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Understanding myths and realities of test-suite evolution
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Katana: Towards Patching as a Runtime Part of the Compiler-Linker-Loader Toolchain
International Journal of Secure Software Engineering
Better GP benchmarks: community survey results and proposals
Genetic Programming and Evolvable Machines
Automated repair of binary and assembly programs for cooperating embedded devices
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
Toward automated refactoring of crosscutting concerns into aspects
Journal of Systems and Software
Combining slicing and constraint solving for better debugging: the CONBAS approach
Advances in Software Engineering
LASE: locating and applying systematic edits by learning from examples
Proceedings of the 2013 International Conference on Software Engineering
SemFix: program repair via semantic analysis
Proceedings of the 2013 International Conference on Software Engineering
Automatic recovery from runtime failures
Proceedings of the 2013 International Conference on Software Engineering
Automatic patch generation learned from human-written patches
Proceedings of the 2013 International Conference on Software Engineering
Current challenges in automatic software repair
Software Quality Control
Injecting mechanical faults to localize developer faults for evolving software
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Cloud engineering is Search Based Software Engineering too
Journal of Systems and Software
Is this a bug or an obsolete test?
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Post-compiler software optimization for reducing energy
Proceedings of the 19th international conference on Architectural support for programming languages and operating systems
Automated runtime recovery for QoS-based service composition
Proceedings of the 23rd international conference on World wide web
Combining mutation and fault localization for automated program debugging
Journal of Systems and Software
Hi-index | 0.02 |
Automatic program repair has been a longstanding goal in software engineering, yet debugging remains a largely manual process. We introduce a fully automated method for locating and repairing bugs in software. The approach works on off-the-shelf legacy applications and does not require formal specifications, program annotations or special coding practices. Once a program fault is discovered, an extended form of genetic programming is used to evolve program variants until one is found that both retains required functionality and also avoids the defect in question. Standard test cases are used to exercise the fault and to encode program requirements. After a successful repair has been discovered, it is minimized using structural differencing algorithms and delta debugging. We describe the proposed method and report experimental results demonstrating that it can successfully repair ten different C programs totaling 63,000 lines in under 200 seconds, on average.