The most important part of this algorithm is the exploration of the recovery space that happens in steps #2 and #3 In step #2, when the system identifies several applicable recovery strategies, it takes care of applying them according to the execution history. If two failure recovery conditions are evaluated to true, it means that two recovery strategies are available. If the first one has already been executed and not the second one, the system selects the latter. This maximizes novelty discovery and knowledge exploration (whether the recovery is satisfying or not) The envisioned Mining specifications, Step #1 refers to the reified function failureDetected() of our above example Proceedings of the 29th Symposium on Principles of Programming Languages, 2002. ,
Basic concepts and taxonomy of dependable and secure computing, IEEE Transactions on Dependable and Secure Computing, vol.1, issue.1, pp.11-33, 2004. ,
DOI : 10.1109/TDSC.2004.2
Tardis: Affordable Time-travel Debugging in Managed Runtimes, In: SIGPLAN Not, vol.4910, pp.67-82, 2014. ,
The Oracle Problem in Software Testing: A Survey, IEEE Transactions on Software Engineering, vol.41, issue.5, pp.507-525, 2015. ,
DOI : 10.1109/TSE.2014.2372785
Automatically securing permission-based software by reducing the attack surface: an application to Android, Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, ASE 2012, pp.274-277 ,
DOI : 10.1145/2351676.2351722
URL : https://hal.archives-ouvertes.fr/hal-00700074
Static Analysis for Extracting Permission Checks of a Large Scale Framework: The Challenges and Solutions for Analyzing Android, IEEE Transactions on Software Engineering, 2014. ,
DOI : 10.1109/TSE.2014.2322867
URL : https://hal.archives-ouvertes.fr/hal-01055656
Understanding the shape of Java software, Proceedings of Object-oriented Programming Systems Languages and Applications (OOPSLA), 2006. ,
Software testing techniques, 2003. ,
Using fault injection to increase software test coverage, Proceedings of ISSRE '96: 7th International Symposium on Software Reliability Engineering, pp.166-174, 1996. ,
DOI : 10.1109/ISSRE.1996.558776
Exception Handling: A Field Study in Java and .NET, Proceedings of the European Conference on Object-Oriented Programming, pp.151-175, 2007. ,
DOI : 10.1007/978-3-540-73589-2_8
GZoltar: an eclipse plug-in for testing and debugging, Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, ASE 2012, 2012. ,
DOI : 10.1145/2351676.2351752
Angelic debugging, Proceeding of the 33rd international conference on Software engineering, ICSE '11, pp.121-130, 2011. ,
DOI : 10.1145/1985793.1985811
Finding what's not there, Proceedings of the 2007 international symposium on Software testing and analysis, ISSTA '07, 2007. ,
DOI : 10.1145/1273463.1273486
Robust model-based fault diagnosis for dynamic systems, 2012. ,
DOI : 10.1007/978-1-4615-5149-2
jSMTLIB: Tutorial, validation and adapter tools for SMT-LIBv2 " . In: NASA Formal Methods, pp.480-486, 2011. ,
Casper: Debugging Null Dereferences with Dynamic Causality Traces, 2015. ,
URL : https://hal.archives-ouvertes.fr/hal-01113988
NPEFix: Automatic Runtime Repair of Null Pointer Exceptions in Java, 2015. ,
URL : https://hal.archives-ouvertes.fr/hal-01251960
Exception handling analysis and transformation using fault injection: Study of resilience against unanticipated exceptions, Information and Software Technology, vol.57, pp.66-76, 2015. ,
DOI : 10.1016/j.infsof.2014.08.004
URL : https://hal.archives-ouvertes.fr/hal-01062969
DSD-Crasher, ACM Transactions on Software Engineering and Methodology, vol.17, issue.2, pp.1-37, 2008. ,
DOI : 10.1145/1348250.1348254
Framework Design Guidelines: Conventions, Idioms, and Patterns for Reuseable .NET Libraries, 2008. ,
Lightweight bug localization with AMPLE, Proceedings of the Sixth sixth international symposium on Automated analysis-driven debugging , AADEBUG'05, pp.99-104, 2005. ,
DOI : 10.1145/1085130.1085143
Using Mutation to Automatically Suggest Fixes for Faulty Programs, 2010 Third International Conference on Software Testing, Verification and Validation, pp.65-74, 2010. ,
DOI : 10.1109/ICST.2010.66
Automatic repair of buggy if conditions and missing preconditions with SMT, Proceedings of the 6th International Workshop on Constraints in Software Testing, Verification, and Analysis, CSTVA 2014, 2014. ,
DOI : 10.1145/2593735.2593740
URL : https://hal.archives-ouvertes.fr/hal-00977798
Automatic Repair of Real Bugs: An Experience Report on the Defects4J Dataset, 2015. ,
URL : https://hal.archives-ouvertes.fr/hal-01162221
Bugs as deviant behavior: A general approach to inferring errors in systems code, Proceedings of Symposium on Operating Systems Principles (SOSP, 2001. ,
RacerX, ACM SIGOPS Operating Systems Review, vol.37, issue.5, pp.237-252, 2003. ,
DOI : 10.1145/1165389.945468
Dynamically Discovering Likely Program Invariants to Support Program Evolution, IEEE Transactions on Software Engineering, vol.272, pp.99-123, 2001. ,
DOI : 10.1145/302405.302467
Dynamically discovering likely program invariants to support program evolution, IEEE Transactions on Software Engineering, vol.272, pp.99-123, 2001. ,
Fine-grained and accurate source code differencing, Proceedings of the 29th ACM/IEEE international conference on Automated software engineering, ASE '14, pp.313-324 ,
DOI : 10.1145/2642937.2642982
URL : https://hal.archives-ouvertes.fr/hal-01054552
Compiler-directed program-fault coverage for highly available Java internet services, 2003 International Conference on Dependable Systems and Networks, 2003. Proceedings. ,
DOI : 10.1109/DSN.2003.1209969
Bytecode fault injection for Java software, Journal of Systems and Software, vol.81, issue.11, pp.2034-2043, 2008. ,
DOI : 10.1016/j.jss.2008.02.047
When App Stores Listen to the Crowd to Fight Bugs in the Wild, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, 2015. ,
DOI : 10.1109/ICSE.2015.195
URL : https://hal.archives-ouvertes.fr/hal-01105173
Exception handling: issues and a proposed notation, Communications of the ACM, vol.18, issue.12, pp.683-696, 1975. ,
DOI : 10.1145/361227.361230
Java Language Specification, 2005. ,
GenProg: A Generic Method for Automatic Software Repair, IEEE Transactions on Software Engineering, vol.38, issue.1, pp.54-72, 2012. ,
DOI : 10.1109/TSE.2011.104
Dimensions in program synthesis, Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming, PPDP '10, pp.13-24, 2010. ,
DOI : 10.1145/1836089.1836091
Synthesis of loop-free programs, In: ACM SIGPLAN Notices, vol.466, pp.62-73, 2011. ,
Readings in model-based diagnosis, 1992. ,
Tracking down software bugs using automatic anomaly detection, Proceedings of the 24th international conference on Software engineering , ICSE '02, pp.291-301, 2002. ,
DOI : 10.1145/581376.581377
A practical flow-sensitive and context-sensitive C and C++ memory leak detector, In: ACM SIGPLAN Notices, vol.385, pp.168-181, 2003. ,
A program structure for error detection and recovery, 1974. ,
Theoretical and Empirical Studies of Program Testing, IEEE Transactions on Software Engineering SE-4, pp.293-298, 1978. ,
DOI : 10.1109/TSE.1978.231514
Fault localization using value replacement, Proceedings of the 2008 international symposium on Software testing and analysis, ISSTA '08, pp.167-178, 2008. ,
DOI : 10.1145/1390630.1390652
Oracle-guided component-based program synthesis, Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, ICSE '10, pp.215-224, 2010. ,
DOI : 10.1145/1806799.1806833
Towards Automatic Debugging of Programs, Proceedings of the International Conference on Reliable Software, pp.143-155, 1975. ,
Automatic Patch Generation Learned From Human-Written Patches Predicting Faults From Cached History, Proceedings of the 29th International Conference on Software Engineering, pp.489-498, 2007. ,
Preliminary guidelines for empirical research in software engineering, IEEE Transactions on Software Engineering, vol.28, issue.8, pp.721-734, 2002. ,
DOI : 10.1109/TSE.2002.1027796
From Dependability to Resilience, Proceedings of the International Conference on Dependable Systems and Networks, 2008. ,
A Systematic Study of Automated Program Repair: Fixing 55 Out of 105 Bugs for $8 Each, Proceedings of the International Conference on Software Engineering. 2012, pp.3-13 ,
Exploiting Open-Endedness to Solve Problems Through the Search for Novelty, In: ALIFE, pp.329-336, 2008. ,
PR-Miner: Automatically Extracting Implicit Programming Rules and Detecting Violations in Large Software Code, Proc. of the 10th European Software Engineering Conference Held Jointly with 13th International Symposium on Foundations of Software Engineering, pp.306-315, 2005. ,
DynaMine: Finding Common Error Patterns by Mining Software Revision Histories, Proceedings of the European Software Engineering Conference Held Jointly with International Symposium on Foundations of Software Engineering, 2005. ,
Automatic Runtime Error Repair and Containment via Recovery Shepherding, ACM SIGPLAN Conference on Programming Language Design and Implementation, 2014. ,
Automatic Repair of Infinite Loops, 2015. ,
URL : https://hal.archives-ouvertes.fr/hal-01144026
ASTOR: Evolutionary Automatic Software Repair for Java, 2014. ,
URL : https://hal.archives-ouvertes.fr/hal-01075976
Mining software repair models for reasoning on the search space of automated program fixing, Empirical Software Engineering, vol.31, issue.6, pp.176-205, 2013. ,
DOI : 10.1007/s10664-013-9282-8
URL : https://hal.archives-ouvertes.fr/hal-00903804
Do the fix ingredients already exist? an empirical inquiry into the redundancy assumptions of program repair approaches, Companion Proceedings of the 36th International Conference on Software Engineering, ICSE Companion 2014, 2014. ,
DOI : 10.1145/2591062.2591114
URL : https://hal.archives-ouvertes.fr/hal-00965410
A Complexity Measure, IEEE Transactions on Software Engineering, vol.2, issue.4, pp.308-320, 1976. ,
DOI : 10.1109/TSE.1976.233837
DirectFix: Looking for Simple Program Repairs, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, 2015. ,
DOI : 10.1109/ICSE.2015.63
Empirical evidence of large-scale diversity in API usage of object-oriented software, 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM), 2013. ,
DOI : 10.1109/SCAM.2013.6648183
URL : https://hal.archives-ouvertes.fr/hal-00844753
Applying 'design by contract', Computer, vol.25, issue.10, pp.40-51, 1992. ,
DOI : 10.1109/2.161279
A Critical Review ofAutomatic Patch Generation Learned from Human- Written Patches": Essay on the Problem Statement and the Evaluation of Automatic Software Repair, Proceedings of the International Conference on Software Engineering. 2014, pp.234-242 ,
Automatic Software Repair: a Bibliography, 2015. ,
URL : https://hal.archives-ouvertes.fr/hal-01206501
Two Flavors in Automated Software Repair: Rigid Repair and Plastic Repair, Dagstuhl Preprint, 2013. ,
URL : https://hal.archives-ouvertes.fr/hal-00844735
Detecting Missing Method Calls in Object-Oriented Software, Proceedings of the 24th European Conference on Object-Oriented Programming, 2010. ,
DOI : 10.1007/978-3-642-14107-2_2
What should developers be aware of? An empirical study on the directives of API documentation, Empirical Software Engineering, vol.26, issue.6, pp.703-737, 2012. ,
DOI : 10.1007/s10664-011-9186-4
URL : https://hal.archives-ouvertes.fr/hal-00702183
Challenging Analytical Knowledge On Exception-Handling: An Empirical Study of 32 Java Software Packages, 2014. ,
URL : https://hal.archives-ouvertes.fr/hal-01093908
Detecting missing method calls as violations of the majority rule, ACM Transactions on Software Engineering and Methodology, vol.22, issue.1, pp.1-25, 2013. ,
DOI : 10.1145/2430536.2430541
URL : https://hal.archives-ouvertes.fr/hal-00702196
Z3: An Efficient SMT Solver, Proceedings of Tools and Algorithms for the Construction and Analysis of Systems, pp.337-340, 2008. ,
DOI : 10.1007/978-3-540-78800-3_24
A model for spectra-based software diagnosis, ACM Transactions on Software Engineering and Methodology, vol.20, issue.3, p.11, 2011. ,
DOI : 10.1145/2000791.2000795
SemFix: Program repair via semantic analysis, 2013 35th International Conference on Software Engineering (ICSE), 2013. ,
DOI : 10.1109/ICSE.2013.6606623
Graphbased mining of multiple object usage patterns, Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering, pp.383-392, 2009. ,
Recurring bug fixes in object-oriented programs, Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, ICSE '10, pp.315-324, 2010. ,
DOI : 10.1145/1806799.1806847
Toward an understanding of bug fix patterns, Empirical Software Engineering, vol.31, issue.6, pp.286-315, 2009. ,
DOI : 10.1007/s10664-008-9077-5
: A library for implementing analyses and transformations of Java source code, Software: Practice and Experience, 2015. ,
DOI : 10.1002/spe.2346
Automated Fixing of Programs with Contracts, IEEE Transactions on Software Engineering, vol.40, issue.5, pp.427-449, 2014. ,
DOI : 10.1109/TSE.2014.2312918
Rethinking the library OS from the top down, In: ACM SIGPLAN Notices, vol.463, pp.291-304, 2011. ,
The strength of random search on automated program repair, Proceedings of the 36th International Conference on Software Engineering, ICSE 2014, pp.254-265, 2014. ,
DOI : 10.1145/2568225.2568254
An analysis of patch plausibility and correctness for generate-and-validate patch generation systems, Proceedings of the 2015 International Symposium on Software Testing and Analysis, ISSTA 2015 ,
DOI : 10.1145/2771783.2771791
Detecting Anomaly and Failure in Web Applications, IEEE Multimedia, vol.13, issue.2, pp.44-51, 2006. ,
DOI : 10.1109/MMUL.2006.26
Acceptability-oriented Computing, In: ACM SIGPLAN Notices, vol.3812, pp.57-75, 2003. ,
Extending Modula-2 to Build Large, Integrated Systems, IEEE Software, vol.3, issue.6, pp.46-57, 1986. ,
DOI : 10.1109/MS.1986.229476
JAVA An Introduction to Problem Solving and Programming, 2012. ,
A Survey of Fault Localization Techniques in Computer Networks, Science of Computer Programming, vol.532, pp.165-194, 2004. ,
Analysis and testing of programs with exception handling constructs, IEEE Transactions on Software Engineering, vol.26, issue.9, pp.849-871, 2000. ,
DOI : 10.1109/32.877846
Automated support for development, maintenance, and testing in the presence of implicit flow control, Proceedings. 26th International Conference on Software Engineering, pp.336-345, 2004. ,
DOI : 10.1109/ICSE.2004.1317456
Programs, tests, and oracles, Proceeding of the 33rd international conference on Software engineering, ICSE '11, pp.391-400, 2011. ,
DOI : 10.1145/1985793.1985847
Resilience in computer systems and networks, Proceedings of the 2009 International Conference on Computer-Aided Design, ICCAD '09, pp.74-77, 2009. ,
DOI : 10.1145/1687399.1687415
Soot-a Java bytecode optimization framework, Proceedings of the Conference of the Centre for Advanced Studies on Collaborative Research (CASCON). IBM Press, p.13, 1999. ,
Detecting object usage anomalies, Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering , ESEC-FSE '07, pp.35-44, 2007. ,
DOI : 10.1145/1287624.1287632
Leveraging program equivalence for adaptive program repair: Models and first results, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp.356-366, 2013. ,
DOI : 10.1109/ASE.2013.6693094
Automatic mining of source code repositories to improve bug finding techniques, IEEE Transactions on Software Engineering, vol.31, issue.6, pp.466-480, 2005. ,
DOI : 10.1109/TSE.2005.63
Dynamic Analysis can be Improved with Automatic Test Suite Refactoring, 2015. ,
URL : https://hal.archives-ouvertes.fr/hal-01162220
Nopol: Automatic Repair of Conditional Statement Bugs in Large-Scale Object- Oriented Programs, Underreview at IEEE Transactions on Software Engineering ,
Learning to Combine Multiple Ranking Metrics for Fault Localization, 2014 IEEE International Conference on Software Maintenance and Evolution, 2014. ,
DOI : 10.1109/ICSME.2014.41
URL : https://hal.archives-ouvertes.fr/hal-01018935
Test case purification for improving fault localization, Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2014, 2014. ,
DOI : 10.1145/2635868.2635906
URL : https://hal.archives-ouvertes.fr/hal-01061911
Crash reproduction via test case mutation: let existing test cases help, Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, ESEC/FSE 2015, 2015. ,
DOI : 10.1145/2786805.2803206
URL : https://hal.archives-ouvertes.fr/hal-01172102
Perracotta, Proceeding of the 28th international conference on Software engineering , ICSE '06, 2006. ,
DOI : 10.1145/1134285.1134325
Amplifying tests to validate exception handling code, Proceedings of the International Conference on Software Engineering, pp.595-605, 2012. ,
Locating faults through automated predicate switching, Proceeding of the 28th international conference on Software engineering , ICSE '06, pp.272-281, 2006. ,
DOI : 10.1145/1134285.1134324