skip to main content
survey

Automatic Software Repair: A Bibliography

Published:23 January 2018Publication History
Skip Abstract Section

Abstract

This article presents a survey on automatic software repair. Automatic software repair consists of automatically finding a solution to software bugs without human intervention. This article considers all kinds of repairs. First, it discusses behavioral repair where test suites, contracts, models, and crashing inputs are taken as oracle. Second, it discusses state repair, also known as runtime repair or runtime recovery, with techniques such as checkpoint and restart, reconfiguration, and invariant restoration. The uniqueness of this article is that it spans the research communities that contribute to this body of knowledge: software engineering, dependability, operating systems, programming languages, and security. It provides a novel and structured overview of the diversity of bug oracles and repair operators used in the literature.

References

  1. Robin Abraham and Martin Erwig. 2005. Goal-directed debugging of spreadsheets. In Proceedings of the 2005 IEEE Symposium on Visual Languages and Human-Centric Computing. 37--44. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Edward Aftandilian, Raluca Sauciuc, Siddharth Priya, and Sundaresan Krishnan. 2012. Building useful program analysis tools using an extensible java compiler. In Proceedings of the International Working Conference on Source Code Analysis and Manipulation (SCAM’12). 14--23. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Paul E. Ammann and John C. Knight. 1988. Data diversity: An approach to software fault tolerance. IEEE Trans. Comput. 37, 4 (1988), 418--425. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Jesper Andersen and Julia L. Lawall. 2010. Generic patch inference. Automat. Softw. Eng. 17, 2 (2010), 119--148. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Andrea Arcuri. 2009. Automatic Software Generation and Improvement Through Search Based Techniques. Ph.D. Dissertation. The University of Birmingham.Google ScholarGoogle Scholar
  6. Andrea Arcuri. 2011. Evolutionary repair of faulty software. Appl. Soft Comput. 11, 4 (2011), 3494--3514. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Andrea Arcuri and Xin Yao. 2008. A novel co-evolutionary approach to automatic software bug fixing. In Proceedings of the IEEE Congress on Evolutionary Computation. 162--168.Google ScholarGoogle ScholarCross RefCross Ref
  8. Algirdas Avizienis. 1985. The N-version approach to fault-tolerant software. IEEE Trans. Softw. Eng. 11, 12 (1985), 1491--1501. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Algirdas Avizienis, J.-C. Laprie, Brian Randell, and Carl Landwehr. 2004. Basic concepts and taxonomy of dependable and secure computing. IEEE Trans. Depend. Sec. Comput. 1, 1 (2004), 11--33. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Tanzirul Azim, Iulian Neamtiu, and Lisa Marvel. 2014. Towards self-healing smartphone software via automated patching. In Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering. 623--628. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. E. T. Barr, M. Harman, P. McMinn, M. Shahbaz, and S. Yoo. 2015. The oracle problem in software testing: A survey. IEEE Trans. Soft. Eng. 41, 5 (2015), 507--525.Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Earl T. Barr, Yuriy Brun, Premkumar T. Devanbu, Mark Harman, and Federica Sarro. 2014. The plastic surgery hypothesis. In Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering. 306--317. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Emery D. Berger and Benjamin G. Zorn. 2006. DieHard: Probabilistic memory safety for unsafe languages. ACM SIGPLAN Not. 41, 6 (2006), 158--168. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Rastislav Bodik and Barbara Jobstmann. 2013. Algorithmic program synthesis: Introduction. Int. J. Softw. Tools Technol. Transf. 15, 5 (2013), 397--411.Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. M. Brodie, S. Ma, G. Lohman, L. Mignet, M. Wilding, J. Champlin, and P. Sohn. 2005. Quickly finding known software problems via automated symptom matching. In Proceedings of the International Conference on Autonomic Computing. 101--110. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Yuriy Brun, Earl Barr, Ming Xiao, Claire Le Goues, and Prem Devanbu. 2013. Evolution Vs. Intelligent Design in Program Patching. Technical Report. UC Davis.Google ScholarGoogle Scholar
  17. Yan Cai and Lingwei Cao. 2016. Fixing deadlocks via lock pre-acquisitions. In Proceedings of the 38th International Conference on Software Engineering. ACM, 1109--1120. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. G. Candea and A. Fox. 2001. Recursive restartability: Turning the reboot sledgehammer into a scalpel. In Proceedings of the 8th Workshop on Hot Topics in Operating Systems. 125--130. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. G. Candea and A. Fox. 2003. Crash-only software. In Proceedings of the 9th Conference on Hot Topics in Operating Systems. 12--12. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. George Candea, Shinichi Kawamoto, Yuichi Fujiki, Greg Friedman, and Armando Fox. 2004. Microreboot: A technique for cheap recovery. In Proceedings of the 6th Conference on Symposium on Operating Systems Design 8 Implementation. 3--3. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. G. Candea, E. Kiciman, S. Zhang, P. Keyani, and A. Fox. 2003. JAGR: An autonomous self-recovering application server. In Proceedings of the Workshop on Active Middleware Services. 168--177.Google ScholarGoogle Scholar
  22. Michael Carbin, Sasa Misailovic, Michael Kling, and Martin C. Rinard. 2011. Detecting and escaping infinite loops with jolt. In Procceedings of the European Conference on Object-Oriented Programming (ECOOP’11). 609--633. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Antonio Carzaniga, Alessandra Gorla, Andrea Mattavelli, Nicolò Perino, and Mauro Pezzè. 2013. Automatic recovery from runtime failures. In Proceedings of the International Conference on Software Engineering. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Antonio Carzaniga, Alessandra Gorla, Nicolò Perino, and Mauro Pezzè. 2010. Automatic workarounds for web applications. In Proceedings of the Foundations of Software Engineering Conference. 237--246. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Satish Chandra, Emina Torlak, Shaon Barman, and Rastislav Bodik. 2011. Angelic debugging. In Proceeding of the International Conference on Software Engineering. 121--130. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Shang-Wen Cheng, David Garlan, Bradley R. Schmerl, João Pedro Sousa, Bridget Spitnagel, and Peter Steenkiste. 2002. Using architectural style as a basis for system self-repair. In Proceedings of the IFIP 17th World Computer Congress/3rd IEEE/IFIP Conference on Software Architecture: System Design, Development and Maintenance. 45--59. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Zack Coker and Munawar Hafiz. 2013. Program transformations to fix C integers. In Proceedings of the International Conference on Software Engineering. 792--801. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Benoit Cornu, Lionel Seinturier, and Martin Monperrus. 2015. Exception handling analysis and transformation using fault injection: Study of resilience against unanticipated exceptions. Inf. Softw. Technol. 57 (Jan. 2015), 66--76.Google ScholarGoogle Scholar
  29. Manuel Costa, Jon Crowcroft, Miguel Castro, Antony Rowstron, Lidong Zhou, Lintao Zhang, and Paul Barham. 2005. Vigilante: End-to-end containment of internet worms. In ACM SIGOPS Operating Systems Review, Vol. 39. 133--147. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Marcos Aurélio Almeida da Silva, Alix Mougenot, Xavier Blanc, and Reda Bendraou. 2010. Towards automated inconsistency handling in design models. In Proceedings of the 22nd International Conference on Advanced Information Systems Engineering. 348--362. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Valentin Dallmeier, Andreas Zeller, and Bertrand Meyer. 2009. Generating fixes from object behavior anomalies. In Proceedings of the International Conference on Automated Software Engineering. 5. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Brett Daniel, Vilas Jagannath, Danny Dig, and Darko Marinov. 2009. ReAssert: Suggesting repairs for broken unit tests. In Proceedings of the 24th IEEE/ACM International Conference on Automated Software Engineering. 433--444. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. V. Debroy and W. E. Wong. 2010. Using mutation to automatically suggest fixes for faulty programs. In Proceedings of the International Conference on Software Testing, Verification and Validation. 65--74. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Favio Demarco, Jifeng Xuan, Daniel Le Berre, and Martin Monperrus. 2014. Automatic repair of buggy if conditions and missing preconditions with SMT. In Proceedings of the 6th International Workshop on Constraints in Software Testing, Verification, and Analysis (CSTVA’14). Hyderabad, India. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Brian Demsky and Alokika Dash. 2008. Bristlecone: A language for robust software systems. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP’08). 490--515. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. B. Demsky and M. Rinard. 2003. Automatic detection and repair of errors in data structures. ACM SIGPLAN Not. 38, 11 (2003), 78--95. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Giovanni Denaro, Mauro Pezzè, and Davide Tosi. 2009. Ensuring interoperable service-oriented systems through engineered self-healing. In Proceedings of the 7th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. 253--262. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Louise A. Dennis, Raul Monroy, and Pablo Nogueira. 2006. Proof-directed debugging and repair. In Proceedings of the 7th Symposium on Trends in Functional Programming. 131--140.Google ScholarGoogle Scholar
  39. Aritra Dhar, Rahul Purandare, Mohan Dhawan, and Suresh Rangaswamy. 2015. CLOTHO: Saving programs from malformed strings and incorrect string-handling. In Foundations of Software Engineering. ACM, 555--566. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Kinga Dobolyi and Westley Weimer. 2008. Changing java’s semantics for handling null pointer exceptions. In Proceedings of the 19th International Symposium on Software Reliability Engineering. 47--56. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. J. A. Duraes and H. S. Madeira. 2006. Emulation of software faults: A field data study and a practical approach. IEEE Trans. Softw. Eng. 32, 11 (2006), 849--867. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Loris D’Antoni, Roopsha Samanta, and Rishabh Singh. 2016. Qlose: Program repair with quantitative objectives. In International Conference on Computer Aided Verification. Springer, 383--401.Google ScholarGoogle ScholarCross RefCross Ref
  43. Marc Eisenstadt. 1997. My hairiest bug war stories. Commun. ACM 40, 4 (1997), 30--37. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. B. Elkarablieh, I. Garcia, Y. L. Suen, and S. Khurshid. 2007. Assertion-based repair of complex data structures. In Proceedings of the 22nd IEEE/ACM International Conference on Automated Software Engineering. 64--73. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. H. ETO and K. Yoda. 2001. Propolice: Improved stacksmashing attack detection. IPSJ SIG Not2 75 (2001), 181--188.Google ScholarGoogle Scholar
  46. S. Forrest, T. V. Nguyen, W. Weimer, and C. Le Goues. 2009. A genetic programming approach to automated software repair. In Proceedings of the 11th Annual Conference on Genetic and Evolutionary Computation. 947--954. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Gerhard Friedrich, Mariagrazia Fugini, Enrico Mussi, Barbara Pernici, and Gaston Tagni. 2010. Exception handling for repair in service-based processes. IEEE Trans. Softw. Eng. 36, 2 (2010), 198--215. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Zachary P. Fry, Bryan Landau, and Westley Weimer. 2012. A human study of patch maintainability. In Proceedings of the International Symposium on Software Testing and Analysis. 177--187. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Richard P. Gabriel and Ron Goldman. 2006. Conscientious software. In ACM SIGPLAN Notices, Vol. 41. 433--450. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Qing Gao, Yingfei Xiong, Yaqing Mi, Lu Zhang, Weikun Yang, Zhaoping Zhou, Bing Xie, and Hong Mei. 2015. Safe memory-leak fixing for C programs. In Proceedings of the 37th International Conference on Software Engineering. 459--470. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Qing Gao, Hansheng Zhang, Jie Wang, Yingfei Xiong, Lu Zhang, and Hong Mei. 2015. Fixing recurring crash bugs via analyzing Q&A sites. In Proceedings of the 30th IEEE/ACM International Conference on Automated Software Engineering. ACM.Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Z. Gao, Z. Chen, Y. Zou, and A. Memon. 2015. SITAR: GUI test script repair. IEEE Trans. Softw. Eng. 42, 2 (2015), 170--186. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. David Garlan, Shang-Wen Cheng, and Bradley Schmerl. 2003. Increasing system dependability through architecture-based self-repair. In Architecting Dependable Systems. 61--89. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Brady J. Garvin, Myra B. Cohen, and Matthew B. Dwyer. 2011. Using feature locality: Can we leverage history to avoid failures during reconfiguration? In Proceedings of the 8th Workshop on Assurances for Self-Adaptive Systems. 24--33. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Selvin George, David Evans, and Steven Marchette. 2013. A biological programming model for self-healing. In Proceedings of the 2003 ACM Workshop on Survivable and Self-Regenerative Systems (SSRS). Fairfax, VA, 72--81. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Debanjan Ghosh, Raj Sharman, H. Raghav Rao, and Shambhu Upadhyaya. 2007. Self-healing systems survey and synthesis. Decis. Support Syst. 42, 4 (2007), 2164--2185. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Divya Gopinath, Sarfraz Khurshid, Diptikalyan Saha, and Satish Chandra. 2014. Data-guided repair of selection statements. In Proceedings of the 36th International Conference on Software Engineering. 243--253. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Divya Gopinath, Muhammad Zubair Malik, and Sarfraz Khurshid. 2011. Specification-based program repair using SAT. In Proceedings of the International Conference on Tools and Algorithms for the Construction and Analysis of Systems. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Andreas Griesmayer, Roderick Bloem, and Byron Cook. 2006. Repair of boolean programs with an application to C. In Computer Aided Verification. 358--371. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Rahul Gupta, Soham Pal, Aditya Kanade, and Shirish Shevade. 2017. DeepFix: Fixing common C language errors by deep learning. In Proceedings of the AAAI Conference on Artificial Intelligence.Google ScholarGoogle Scholar
  61. Björn Hartmann, Daniel MacDougall, Joel Brandt, and Scott R. Klemmer. 2010. What would other programmers do: Suggesting solutions to error messages. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. 1019--1028. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Haifeng He and Neelam Gupta. 2004. Automated debugging using path-based weakest preconditions. In Proceedings of the 7th International Conference on Fundamental Approaches to Software Engineering (FASE’04). 267--280.Google ScholarGoogle ScholarCross RefCross Ref
  63. Petr Hosek and Cristian Cadar. 2013. Safe software updates via multi-version execution. In Proceedings of the International Conference on Software Engineering. 612--621. Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. David Hovemeyer and William Pugh. 2004. Finding bugs is easy. ACM SIGPLAN Not. 39, 12 (2004). Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. Y. Huang, C. Kintala, N. Kolettis, and N. D. Fulton. 1995. Software rejuvenation: Analysis, module and applications. In Proceedings of the International Symposium on Fault-Tolerant Computing. 381--390. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Daniel Jackson and Mandana Vaziri. 2000. Finding bugs with a constraint solver. In Proceedings of the 2000 ACM SIGSOFT International Symposium on Software Testing and Analysis. 14--25. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Dennis Jeffrey, Min Feng, Neelam Gupta, and Rajiv Gupta. 2009. BugFix: A learning-based tool to assist developers in fixing bugs. In Proceedings of the International Conference on Program Comprehension (ICPC’09). 70--79.Google ScholarGoogle ScholarCross RefCross Ref
  68. Dennis Jeffrey, Neelam Gupta, and Rajiv Gupta. 2008. Fault localization using value replacement. In Proceedings of the International Symposium on Software Testing and Analysis. 167--178. Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. Susmit Jha, Sumit Gulwani, Sanjit A Seshia, and Ashish Tiwari. 2010. Oracle-guided component-based program synthesis. In Proceedings of the International Conference on Software Engineering, Vol. 1. 215--224. Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Mingyue Jiang, Tsong Yueh Chen, Fei-Ching Kuo, Dave Towey, and Zuohua Ding. 2016. A metamorphic testing approach for supporting program repair without the need for a test oracle. J. Syst. Softw. (2016).Google ScholarGoogle Scholar
  71. G. Jin, L. Song, W. Zhang, S. Lu, and B. Liblit. 2011. Automated atomicity-violation fixing. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation 46, 6 (2011), 389--400. Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. Barbara Jobstmann, Andreas Griesmayer, and Roderick Bloem. 2005. Program repair as a game. In Computer Aided Verification. 226--238. Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. H. Jula, D. Tralamazza, C. Zamfir, and G. Candea. 2008. Deadlock immunity: Enabling systems to defend against deadlocks. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation. 295--308. Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. Shalini Kaleeswaran, Varun Tulsian, Aditya Kanade, and Alessandro Orso. 2014. Minthint: Automated synthesis of repair hints. In Proceedings of the International Conference on Software Engineering. 266--276. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Sara Kalvala and Richard Warburton. 2011. A formal approach to fixing bugs. In Formal Methods, Foundations and Applications. 172--187. Google ScholarGoogle ScholarDigital LibraryDigital Library
  76. Aditya Kalyanpur, Bijan Parsia, Evren Sirin, and Bernardo Cuenca-Grau. 2006. Repairing unsatisfiable concepts in OWL ontologies. In The Semantic Web: Research and Applications. Vol. 4011. 170--184. Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. M. Kasbekar, C. Narayanan, and C. R. Das. 1999. Selective checkpointing and rollbacks in multi-threaded object-oriented environment. IEEE Trans. Reliabil. 48, 4 (1999), 325--337.Google ScholarGoogle ScholarCross RefCross Ref
  78. Yalin Ke, Kathryn T. Stolee, Claire Le Goues, and Yuriy Brun. 2015. Repairing programs with semantic code search. In Proceedings of the International Conference on Automated Software Engineering.Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. Christian Kern and Javier Esparza. 2010. Automatic error correction of java programs. In Formal Methods for Industrial Critical Systems. 67--81. Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. Dongsun Kim, Jaechang Nam, Jaewoo Song, and Sunghun Kim. 2013. Automatic patch generation learned from human-written patches. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE’13). Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Etienne Kneuss, Manos Koukoutos, and Viktor Kuncak. 2015. Deductive program repair. In International Conference on Computer Aided Verification. Springer, 217--233.Google ScholarGoogle ScholarCross RefCross Ref
  82. Donald E. Knuth. 1989. The errors of TEX. Softw. Pract. Exper. 19, 7 (1989), 607--685. Google ScholarGoogle ScholarDigital LibraryDigital Library
  83. Xianglong Kong, Lingming Zhang, W. Eric Wong, and Bixin Li. 2015. Experience report: How do techniques, programs, and tests impact automated program repair? In Proceedings of the International Symposium on Software Reliability Engineering. IEEE, 194--204. Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. Robert Könighofer and Roderick Bloem. 2011. Automated error localization and correction for imperative programs. In Proceedings of the Formal Methods in Computer-Aided Design (FMCAD’11), 2011. 91--100. Google ScholarGoogle ScholarDigital LibraryDigital Library
  85. Robert Könighofer and Roderick Bloem. 2013. Repair with on-the-fly program analysis. In Hardware and Software: Verification and Testing. 56--71. Google ScholarGoogle ScholarDigital LibraryDigital Library
  86. R. Koo and S. Toueg. 1987. Checkpointing and rollback-recovery for distributed systems. IEEE Trans. Softw. Eng. 1 (1987), 23--31. Google ScholarGoogle ScholarDigital LibraryDigital Library
  87. Matt Lake. 2010. Epic Failures: 11 Infamous Software Bugs. Retrieved from http://www.computerworld.com/article/2515483/enterprise-applications/epic-failures--11-infamous-software-bugs.html.Google ScholarGoogle Scholar
  88. Sebastian Lamelas-Marcote and Martin Monperrus. 2015. Automatic Repair of Infinite Loops. Technical Report hal-01144026. University of Lille. https://arxiv.org/pdf/1504.05078.pdf.Google ScholarGoogle Scholar
  89. Julia L. Lawall, Julien Brunel, Nicolas Palix, René Rydhof Hansen, Henrik Stuart, and Gilles Muller. 2009. WYSIWIB: A declarative approach to finding API protocols and bugs in linux code. In International Conference on Dependable Systems 8 Networks. 43--52.Google ScholarGoogle ScholarCross RefCross Ref
  90. N. Lazaar, A. Gotlieb, and Y. Lebbah. 2011. A framework for the automatic correction of constraint programs. In Proceedings of the International Conference on Software Testing, Verification and Validation. 319--326. Google ScholarGoogle ScholarDigital LibraryDigital Library
  91. X. B. D. Le, D. Lo, and C. L. Goues. 2016. History driven program repair. In Proceedings of the 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER’16). 213--224.Google ScholarGoogle Scholar
  92. C. Le Goues, M. Dewey-Vogt, S. Forrest, and W. Weimer. 2012. A systematic study of automated program repair: fixing 55 out of 105 bugs for $8 each. In Proceedings of the International Conference on Software Engineering. 3--13. Google ScholarGoogle ScholarDigital LibraryDigital Library
  93. Claire Le Goues, Stephanie Forrest, and Westley Weimer. 2013. Current challenges in automatic software repair. Softw. Qual. J. 21, 3 (2013), 421--443. Google ScholarGoogle ScholarDigital LibraryDigital Library
  94. Claire Le Goues, Neal Holtschulte, Edward K. Smith, Yuriy Brun, Premkumar Devanbu, Stephanie Forrest, and Westley Weimer. 2015. The ManyBugs and IntroClass benchmarks for automated repair of C programs. (unpublished).Google ScholarGoogle Scholar
  95. Claire Le Goues, ThanhVu Nguyen, Stephanie Forrest, and Westley Weimer. 2012. GenProg: A generic method for automatic software repair. IEEE Trans. Softw. Eng. 38 (2012), 54--72. Google ScholarGoogle ScholarDigital LibraryDigital Library
  96. Maurizio Leotta, Diego Clerissi, Filippo Ricca, and Cristiano Spadaro. 2013. Repairing selenium test cases: An industrial case study about web page element localization. In International Conference on Software Testing, Verification and Validation. IEEE, 487--488. Google ScholarGoogle ScholarDigital LibraryDigital Library
  97. R. Levinson. 2005. Unified planning and execution for autonomous software repair. In Workshop on Plan Execution: A Reality Check.Google ScholarGoogle Scholar
  98. Chris Lewis and Jim Whitehead. 2010. Runtime repair of software faults using event-driven monitoring. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE’10), vol. 2. 275. Google ScholarGoogle ScholarDigital LibraryDigital Library
  99. Z. Liang and R. Sekar. 2005. Fast and automated generation of attack signatures: A basis for building self-protecting servers. In Proceedings of the 12th ACM Conference on Computer and Communications Security. 213--222. Google ScholarGoogle ScholarDigital LibraryDigital Library
  100. Yiyan Lin and Sandeep Kulkarni. 2014. Automatic repair for multi-threaded programs with deadlock/livelock using maximum satisfiability. In Proceedings of the 2014 International Symposium on Software Testing and Analysis. ACM, 237--247. Google ScholarGoogle ScholarDigital LibraryDigital Library
  101. Z. Lin, X. Jiang, D. Xu, B. Mao, and L. Xie. 2007. AutoPaG: Towards automated software patch generation with source code root cause identification and repair. In Proceedings of the 2nd ACM Symposium on Information, Computer and Communications Security. 329--340. Google ScholarGoogle ScholarDigital LibraryDigital Library
  102. Chen Liu, Jinqiu Yang, Lin Tan, and Munawar Hafiz. 2013. R2Fix: Automatically generating bug fixes from bug reports. In Proceedings of the International Conference on Software Testing, Verification and Validation (ICST’13). 282--291. Google ScholarGoogle ScholarDigital LibraryDigital Library
  103. Haopeng Liu, Yuxi Chen, and Shan Lu. 2016. Understanding and generating high quality patches for concurrency bugs. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering. ACM, 715--726. Google ScholarGoogle ScholarDigital LibraryDigital Library
  104. Peng Liu and Charles Zhang. 2012. Axis: Automatically fixing atomicity violations through solving control constraints. In Proceedings of the 2012 International Conference on Software Engineering. 299--309. Google ScholarGoogle ScholarDigital LibraryDigital Library
  105. Michael E. Locasto, Stelios Sidiroglou, and Angelos D. Keromytis. 2006. Software self-healing using collaborative application communities. In Proceedings of the Network and Distributed System Security Symposium.Google ScholarGoogle Scholar
  106. Francesco Logozzo and Tom Ball. 2012. Modular and verified automatic program repair. In Proceedings of the 27th ACM International Conference on Object Oriented Programming Systems Languages and Applications. Google ScholarGoogle ScholarDigital LibraryDigital Library
  107. Francesco Logozzo and Matthieu Martel. 2013. Automatic repair of overflowing expressions with abstract interpretation. In Semantics, Abstract Interpretation, and Reasoning About Programs: Essays Dedicated to David A. Schmidt on the Occasion of His Sixtieth Birthday, Vol. 129. 341--357.Google ScholarGoogle Scholar
  108. Fan Long, Vijay Ganesh, Michael Carbin, Stelios Sidiroglou, and Martin Rinard. 2012. Automatic input rectification. In Proceedings of Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE’12). Google ScholarGoogle ScholarDigital LibraryDigital Library
  109. Fan Long and Martin C. Rinard. 2015. Staged program repair with condition synthesis. In Proceedings of ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE’15). Google ScholarGoogle ScholarDigital LibraryDigital Library
  110. Fan Long and Martin C. Rinard. 2016. Prophet: Automatic patch generation via learning from successful patches. In Proceedings of the Symposium on Principles of Programming Languages.Google ScholarGoogle Scholar
  111. Fan Long, Stelios Sidiroglou-Douskos, Deokhwan Kim, and Martin Rinard. 2014. Sound input filter generation for integer overflow errors. ACM SIGPLAN Not. 49, 1 (2014), 439--452. Google ScholarGoogle ScholarDigital LibraryDigital Library
  112. Fan Long, Stelios Sidiroglou-Douskos, and Martin C. Rinard. 2014. Automatic runtime error repair and containment via recovery shepherding. In ACM SIGPLAN Conference on Programming Language Design and Implementation. Google ScholarGoogle ScholarDigital LibraryDigital Library
  113. M. Z. Malik, J. H. Siddiqi, and S. Khurshid. 2011. Constraint-based program debugging using data structure repair. In International Conference on Software Testing, Verification and Validation (ICST’11). 190--199. Google ScholarGoogle ScholarDigital LibraryDigital Library
  114. Matias Martinez, Thomas Durieux, Romain Sommerard, Jifeng Xuan, and Martin Monperrus. 2017. Automatic repair of real bugs in java: A large-scale experiment on the defects4j dataset. In Proceedings of the 11th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. PADERBORN, Germany. Google ScholarGoogle ScholarDigital LibraryDigital Library
  115. Matias Martinez and Martin Monperrus. 2015. Mining software repair models for reasoning on the search space of automated program fixing. Empir. Softw. Eng. 20, 1 (2015), 176--205. Google ScholarGoogle ScholarDigital LibraryDigital Library
  116. Matias Martinez, Westley Weimer, and Martin Monperrus. 2014. Do the fix ingredients already exist? An empirical inquiry into the redundancy assumptions of program repair approaches. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE’14). Hyderabad, India. Google ScholarGoogle ScholarDigital LibraryDigital Library
  117. Sergey Mechtaev, Jooyong Yi, and Abhik Roychoudhury. 2015. DirectFix: Looking for simple program repairs. In Proceedings of the 37th International Conference on Software Engineering. Google ScholarGoogle ScholarDigital LibraryDigital Library
  118. Sergey Mechtaev, Jooyong Yi, and Abhik Roychoudhury. 2016. Angelix: Scalable multiline program patch synthesis via symbolic analysis. In Proceedings of the 38th International Conference on Software Engineering. 691--701. Google ScholarGoogle ScholarDigital LibraryDigital Library
  119. Ibéria Medeiros, Nuno F. Neves, and Miguel Correia. 2014. Automatic detection and correction of web application vulnerabilities using data mining to predict false positives. In Proceedings of the 23rd International Conference on World Wide Web. ACM, 63--74. Google ScholarGoogle ScholarDigital LibraryDigital Library
  120. Atif M. Memon. 2008. Automatically repairing event sequence-based GUI test suites for regression testing. ACM Trans. Softw. Eng. Methodol. 18, 2 (2008), 4. Google ScholarGoogle ScholarDigital LibraryDigital Library
  121. Na Meng, Miryung Kim, and Kathryn S. McKinley. 2011. Systematic editing: Generating program transformations from an example. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation. 329--342. Google ScholarGoogle ScholarDigital LibraryDigital Library
  122. Na Meng, Miryung Kim, and Kathryn S. McKinley. 2013. LASE: Locating and applying systematic edits by learning from examples. In Proceedings of the International Conference on Software Engineering. 502--511. Google ScholarGoogle ScholarDigital LibraryDigital Library
  123. Michael G. Merideth. 2003. Enhancing survivability with proactive fault-containment. In Proceedings of the 2003 International Conference on Dependable Systems and Networks.Google ScholarGoogle Scholar
  124. B. Meyer. 1992. Applying “design by contract.” Computer 25, 10 (1992), 40--51. Google ScholarGoogle ScholarDigital LibraryDigital Library
  125. Martin Monperrus. 2014. A critical review of ”automatic patch generation learned from human-written patches”: Essay on the problem statement and the evaluation of automatic software repair. In Procedings of the International Conference on Software Engineering. 234--242. Google ScholarGoogle ScholarDigital LibraryDigital Library
  126. Martin Monperrus. 2017. Principles of antifragile software. In Proceedings of the Salon des Refusés 2017. Brussels, Belgium. Google ScholarGoogle ScholarDigital LibraryDigital Library
  127. P. Muntean, V. K. Kommanapalli, A. Ibing, and C. Eckert. 2015. Automated generation of buffer overflows quick fixes using symbolic execution and SMT. In International Conference on Computer Safety, Reliability 8 Security (SAFECOMP’15). Google ScholarGoogle ScholarDigital LibraryDigital Library
  128. Christian Nentwich, Wolfgang Emmerich, and Anthony Finkelstein. 2003. Consistency management with repair actions. In Proceedings of the 25th International Conference on Software Engineering. 455--464. Google ScholarGoogle ScholarDigital LibraryDigital Library
  129. Hoang Duong Thien Nguyen, Dawei Qi, Abhik Roychoudhury, and Satish Chandra. 2013. SemFix: Program repair via semantic analysis. In Proceedings of the International Conference on Software Engineering. Google ScholarGoogle ScholarDigital LibraryDigital Library
  130. Huu Hai Nguyen and Martin Rinard. 2007. Detecting and eliminating memory leaks using cyclic memory allocation. In Proceedings of the 6th International Symposium on Memory Management. 15--30. Google ScholarGoogle ScholarDigital LibraryDigital Library
  131. Mihai Nica, Simona Nica, and Franz Wotawa. 2013. On the use of mutations and testing for debugging. Softw. Pract. Exper. 43, 9 (2013), 1121--1142.Google ScholarGoogle ScholarCross RefCross Ref
  132. G. Novark, E. D. Berger, and B. G. Zorn. 2007. Exterminator: Automatically correcting memory errors with high probability. ACM SIGPLAN Not. 42, 6 (2007), 1--11. Google ScholarGoogle ScholarDigital LibraryDigital Library
  133. Vinicius Oliveira, Eduardo Souza, Claire Le Goues, and Celso G. Camilo. 2016. Improved crossover operators for genetic programming for program repair. In Proceedings of the 8th International Symposium on Search Based Software Engineering.Google ScholarGoogle Scholar
  134. Y. Padioleau, J. Lawall, R. R. Hansen, and G. Muller. 2008. Documenting and automating collateral evolutions in linux device drivers. ACM SIGOPS Operat. Syst. Rev. 42, 4 (2008), 247--260. Google ScholarGoogle ScholarDigital LibraryDigital Library
  135. Jeff H. Perkins, Greg Sullivan, Weng-Fai Wong, Yoav Zibin, Michael D. Ernst, Martin Rinard, Sunghun Kim, Sam Larsen, Saman Amarasinghe, Jonathan Bachrach, Michael Carbin, Carlos Pacheco, Frank Sherwood, and Stelios Sidiroglou. 2009. Automatically patching errors in deployed software. Proceedings of the Symposium on Operating Systems Principles (2009), 87. Google ScholarGoogle ScholarDigital LibraryDigital Library
  136. Barbara Pernici and Anna Maria Rosati. 2007. Automatic learning of repair strategies for web services. In Proceedings of the 5th European Conference on Web Services. 119--128. Google ScholarGoogle ScholarDigital LibraryDigital Library
  137. Mauro Pezzè, Martin C. Rinard, Westley Weimer, and Andreas Zeller. 2011. Self-Repairing Programs, Report From Dagstuhl Seminar. Technical Report 11062. Schloss Dagstuhl—Leibniz-Zentrum für Informatik.Google ScholarGoogle Scholar
  138. Yuhua Qi, Xiaoguang Mao, and Yan Lei. 2009. Program repair as sound optimization of broken programs. In International Symposium on Theoretical Aspects of Software Engineering. Google ScholarGoogle ScholarDigital LibraryDigital Library
  139. Y. Qi, X. Mao, and Y. Lei. 2013. Efficient automated program repair through fault-recorded testing prioritization. In Proceedings of the 2013 IEEE International Conference on Software Maintenance (ICSM’13). Google ScholarGoogle ScholarDigital LibraryDigital Library
  140. Yuhua Qi, Xiaoguang Mao, Yan Lei, Ziying Dai, and Chengsong Wang. 2014. The strength of random search on automated program repair. In Proceedings of the 36th International Conference on Software Engineering. 254--265. Google ScholarGoogle ScholarDigital LibraryDigital Library
  141. Zichao Qi, Fan Long, Sara Achour, and Martin Rinard. 2015. An analysis of patch plausibility and correctness for generate-and-validate patch generation systems. In Proceedings of ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA’15). Google ScholarGoogle ScholarDigital LibraryDigital Library
  142. F. Qin, J. Tucek, J. Sundaresan, and Y. Zhou. 2005. Rx: Treating bugs as allergies—A safe method to survive software failures. ACM SIGOPS Operat. Syst. Rev. 39, 5 (2005), 235--248. Google ScholarGoogle ScholarDigital LibraryDigital Library
  143. Brian Randell. 1975. System structure for software fault tolerance. IEEE Trans. Softw. Eng. 2 (1975), 220--232. Google ScholarGoogle ScholarDigital LibraryDigital Library
  144. Martin Rinard. 2003. Acceptability-oriented computing. ACM SIGPLAN Not. 38, 12 (2003), 57--75. Google ScholarGoogle ScholarDigital LibraryDigital Library
  145. M. Rinard, C. Cadar, D. Dumitran, D. M. Roy, T. Leu, and W. S. Beebee Jr. 2004. Enhancing server availability and security through failure-oblivious computing. In Proceedings of the 6th Conference on Symposium on Operating Systems, Design 8 Implementation. 21--21. Google ScholarGoogle ScholarDigital LibraryDigital Library
  146. Martin Rinard, Cristian Cadar, Daniel Dumitran, Daniel M. Roy, and Tudor Leu. 2004. A dynamic technique for eliminating buffer overflow vulnerabilities (and other memory errors). In Proceedings of the 20th Annual Computer Security Applications Conference. 82--90. Google ScholarGoogle ScholarDigital LibraryDigital Library
  147. M. Rinard, M. Ernst, and J. Perkins. 2011. Collaborative Learning for Security and Repair in Application Communities. Technical Report. Massachusetts Institute of Technology.Google ScholarGoogle Scholar
  148. Martin C. Rinard. 2006. Survival Techniques for Computer Programs. Technical Report. MIT.Google ScholarGoogle Scholar
  149. J. A. Rohr. 1973. STAREX self-repair routines: Software recovery in the JPL-STAR computer. In Proceedings of the International Conference on Fault-Tolerant Computing (FTCS’73).Google ScholarGoogle Scholar
  150. Roopsha Samanta, Oswaldo Olivo, and E. Allen Emerson. 2014. Cost-aware automatic program repair. In International Static Analysis Symposium. Springer, 268--284.Google ScholarGoogle Scholar
  151. Hesam Samimi, Max Schäfer, Shay Artzi, Todd D. Millstein, Frank Tip, and Laurie J. Hendren. 2012. Automated repair of HTML generation errors in PHP applications using string constraint solving. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE’12). 277--287. Google ScholarGoogle ScholarDigital LibraryDigital Library
  152. E. Schulte, S. Forrest, and W. Weimer. 2010. Automated program repair through the evolution of assembly code. In Proceedings of the IEEE/ACM International Conference on Automated Software Engineering. 313--316. Google ScholarGoogle ScholarDigital LibraryDigital Library
  153. A. S. Sethi and others. 2004. A survey of fault localization techniques in computer networks. Sci. Comput. Program. 53, 2 (2004), 165--194.Google ScholarGoogle ScholarCross RefCross Ref
  154. Alex Shaw, Dusten Doggett, and Munawar Hafiz. 2014. Automatically fixing C buffer overflows using program transformations. In International Conference on Dependable Systems and Networks. 124--135. Google ScholarGoogle ScholarDigital LibraryDigital Library
  155. Mary Shaw. 2002. Self-healing: Softening precision to avoid brittleness. In Proceedings of the 1st Workshop on Self-healing Systems. 111--114. Google ScholarGoogle ScholarDigital LibraryDigital Library
  156. Sylvain Sicard, Fabienne Boyer, and Noel De Palma. 2008. Using components for architecture-based management: The self-repair case. In Proceedings of the 30th International Conference on Software Engineering. 101--110. Google ScholarGoogle ScholarDigital LibraryDigital Library
  157. S. Sidiroglou and A. D. Keromytis. 2005. Countering network worms through automatic patch generation. Secur. Priv. 3, 6 (2005), 41--49. Google ScholarGoogle ScholarDigital LibraryDigital Library
  158. S. Sidiroglou, O. Laadan, C. Perez, N. Viennot, J. Nieh, and A. D. Keromytis. 2009. Assure: Automatic software self-healing using rescue points. ACM Sigplan Not. 44, 3 (2009), 37--48. Google ScholarGoogle ScholarDigital LibraryDigital Library
  159. S. Sidiroglou, M. E. Locasto, S. W. Boyd, and A. D. Keromytis. 2005. Building a reactive immune system for software services. In Proceedings of the USENIX Annual Technical Conference, Vol. 161. Google ScholarGoogle ScholarDigital LibraryDigital Library
  160. Stelios Sidiroglou-Douskos, Eric Lahtinen, Fan Long, and Martin Rinard. 2015. Automatic error elimination by horizontal code transfer across multiple applications. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation. 43--54. Google ScholarGoogle ScholarDigital LibraryDigital Library
  161. Stelios Sidiroglou-Douskos, Sasa Misailovic, Henry Hoffmann, and Martin Rinard. 2011. Managing performance vs. accuracy trade-offs with loop perforation. In Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering. 124--134. Google ScholarGoogle ScholarDigital LibraryDigital Library
  162. Josep Silva. 2011. A survey on algorithmic debugging strategies. Adv. Eng. Softw. 42, 11 (2011), 976--991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  163. Rishabh Singh, Sumit Gulwani, and Armando Solar-Lezama. 2013. Automated feedback generation for introductory programming assignments. In ACM SIGPLAN Not. 48, 15--26. Google ScholarGoogle ScholarDigital LibraryDigital Library
  164. A. Smirnov and T. Chiueh. 2005. DIRA: Automatic detection, identification, and repair of control-hijacking attacks. In Proceedings of the 12th Annual Network and Distributed System Security Symposium.Google ScholarGoogle Scholar
  165. Edward K. Smith, Earl Barr, Claire Le Goues, and Yuriy Brun. 2015. Is the cure worse than the disease? Overfitting in automated program repair. In Proceedings of the 10th Joint Meeting of the European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE’15). Google ScholarGoogle ScholarDigital LibraryDigital Library
  166. A. Somayaji, S. Hofmeyr, and S. Forrest. 1998. Principles of a computer immune system. In Proceedings of the 1997 Workshop on New Security Paradigms. 75--82. Google ScholarGoogle ScholarDigital LibraryDigital Library
  167. Sooel Son, Kathryn S. McKinley, and Vitaly Shmatikov. 2013. Fix me up: Repairing access-control bugs in web applications. In Proceedings of the Network and Distributed System Security Symposium.Google ScholarGoogle Scholar
  168. H. Sözer, B. Tekinerdoğan, and M. Akşit. 2009. FLORA: A framework for decomposing software architecture to introduce local recovery. Softw. Prac. Exper. 39, 10 (2009), 869--889. Google ScholarGoogle ScholarDigital LibraryDigital Library
  169. Matt Staats, Michael W. Whalen, and Mats Per Erik Heimdahl. 2011. Programs, tests, and oracles: The foundations of testing revisited. In Proceedings of the International Conference on Software Engineering. 391--400. Google ScholarGoogle ScholarDigital LibraryDigital Library
  170. M. Stumptner and F. Wotawa. 1996. A model-based approach to software debugging. In Proceedings on the 7th International Workshop on Principles of Diagnosis.Google ScholarGoogle Scholar
  171. B. Sun, R. Y. Chang, X. Chen, and A. Podgurski. 2008. Automated support for propagating bug fixes. In Proceedings of the International Symposium on Software Reliability Engineering. 187--196. Google ScholarGoogle ScholarDigital LibraryDigital Library
  172. B. Sun, G. Shu, A. Podgurski, S. Li, S. Zhang, and J. Yang. 2010. Propagating bug fixes with fast subgraph matching. In Proceedings of the International Symposium on Software Reliability Engineering. 21--30. Google ScholarGoogle ScholarDigital LibraryDigital Library
  173. Gerald Jay Sussman. 2007. Building Robust Systems An Essay. (2007). https://groups.csail.mit.edu/mac/users/gjs/6.945/readings/robust-systems.pdf.Google ScholarGoogle Scholar
  174. Sriraman Tallam, Chen Tian, Rajiv Gupta, and Xiangyu Zhang. 2008. Avoiding program failures through safe execution perturbations. In International Conference on Computer Software and Applications. Google ScholarGoogle ScholarDigital LibraryDigital Library
  175. Shin Hwei Tan and Abhik Roychoudhury. 2015. Relifix: Automated repair of software regressions. In Proceedings of Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE’15). Google ScholarGoogle ScholarDigital LibraryDigital Library
  176. Yida Tao, Jindae Kim, Sunghun Kim, and Chang Xu. 2014. Automatically generated patches as debugging aids: A human study. In Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering. 64--74. Google ScholarGoogle ScholarDigital LibraryDigital Library
  177. S. Thomas and L. Williams. 2007. Using automated fix generation to secure SQL statements. In Proceedings of the 3rd International Workshop on Software Engineering for Secure Systems. 9. Google ScholarGoogle ScholarDigital LibraryDigital Library
  178. Wilfredo Torres-Pomales and others. 2000. Software Fault Tolerance: A Tutorial. Technical Report NASA-2000-tm210616. NASA. Google ScholarGoogle Scholar
  179. J. B. Tran, M. W. Godfrey, E. H. S. Lee, and R. C. Holt. 2000. Architectural repair of open source software. In Proceedings of the International Workshop on Program Comprehension. 48--59. Google ScholarGoogle ScholarDigital LibraryDigital Library
  180. K. Tsipenyuk, B. Chess, and Gary McGraw. 2005. Seven pernicious kingdoms: A taxonomy of software security errors. Secur. Priv. 3, 6 (2005), 81--84. Google ScholarGoogle ScholarDigital LibraryDigital Library
  181. Farn Wang and Chih-Hong Cheng. 2008. Program repair suggestions from graphical state-transition specifications. In Proceedings of the 28th IFIP WG 6.1 International Conference on Formal Techniques for Networked and Distributed Systems (FORTE’08). Google ScholarGoogle ScholarDigital LibraryDigital Library
  182. Tielei Wang, Chengyu Song, and Wenke Lee. 2014. Diagnosis and emergency patch generation for integer overflow exploits. In Detection of Intrusions and Malware, and Vulnerability Assessment. 255--275.Google ScholarGoogle Scholar
  183. Xiaoyin Wang, Lu Zhang, Tao Xie, Yingfei Xiong, and Hong Mei. 2012. Automating presentation changes in dynamic web applications via collaborative hybrid analysis. In Proceedings of the ACM SIGSOFT International Symposium on the Foundations of Software Engineering. ACM, 16. Google ScholarGoogle ScholarDigital LibraryDigital Library
  184. Y. M. Wang, Y. Huang, and C. Kintala. 1997. Progressive retry for software failure recovery in message-passing applications. IEEE Trans. Comput. 46, 10 (1997), 1137--1141. Google ScholarGoogle ScholarDigital LibraryDigital Library
  185. Yi Wei, Yu Pei, Carlo A. Furia, Lucas S. Silva, Stefan Buchholz, Bertrand Meyer, and Andreas Zeller. 2010. Automated fixing of programs with contracts. In Proceedings of the International Symposium on Software Testing and Analysis. 12. Google ScholarGoogle ScholarDigital LibraryDigital Library
  186. Westley Weimer. 2006. Patches as better bug reports. In Proceedings of the International Conference on Generative Programming and Component Engineering. Google ScholarGoogle ScholarDigital LibraryDigital Library
  187. Westley Weimer, Stephanie Forrest, Claire Le Goues, and ThanhVu Nguyen. 2010. Automatic program repair with evolutionary computation. Commun. ACM 53, 5 (2010), 109. Google ScholarGoogle ScholarDigital LibraryDigital Library
  188. Westley Weimer, Zachary P. Fry, and Stephanie Forrest. 2013. Leveraging program equivalence for adaptive program repair: Models and first results. In International Conference on Automated Software Engineering. 356--366. Google ScholarGoogle ScholarDigital LibraryDigital Library
  189. W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. 2009. Automatically finding patches using genetic programming. In Proceedings of the International Conference on Software Engineering. Google ScholarGoogle ScholarDigital LibraryDigital Library
  190. W. E. Wong and V. Debroy. 2009. A survey on software fault localization. University of Texas at Dallas, Tech. Rep. UTDCS-45-09 (2009).Google ScholarGoogle Scholar
  191. Yingfei Xiong, Zhenjiang Hu, Haiyan Zhao, Hui Song, Masato Takeichi, and Hong Mei. 2009. Supporting automatic model inconsistency fixing. In Proceedings of the 7th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on The Foundations of Software Engineering. ACM, 315--324. Google ScholarGoogle ScholarDigital LibraryDigital Library
  192. Yingfei Xiong, Hansheng Zhang, Arnaud Hubaux, Steven She, Jie Wang, and Krzysztof Czarnecki. 2015. Range fixes: Interactive error resolution for software configuration. IEEE Trans. Softw. Eng. 41, 6 (2015), 603--619.Google ScholarGoogle ScholarDigital LibraryDigital Library
  193. Andreas Zeller, Yi Wei, Bertrand Meyer, Martin Nordio, Carlo A. Furia, and Yu Pei. 2014. Automated fixing of programs with contracts. IEEE Trans. Softw. Eng. 40, 5 (2014), 427--449. Google ScholarGoogle ScholarDigital LibraryDigital Library
  194. Xiangyu Zhang, Neelam Gupta, and Rajiv Gupta. 2006. Locating faults through automated predicate switching. In Proceedings of the 28th International Conference on Software Engineering. 272--281. Google ScholarGoogle ScholarDigital LibraryDigital Library
  195. Y. Zhang and Y. Ding. 2008. CTL model update for system modifications. J. Artif. Intell. Res. 31, 1 (2008), 113--155. Google ScholarGoogle ScholarCross RefCross Ref
  196. Hao Zhong and Zhendong Su. 2015. An empirical study on real bug fixes. In Proceedings of the 37th International Conference on Software Engineering. Google ScholarGoogle ScholarDigital LibraryDigital Library
  197. F. Zhou, J. Condit, Z. Anderson, I. Bagrak, R. Ennals, M. Harren, G. Necula, and E. Brewer. 2006. SafeDrive: Safe and recoverable extensions using language-based techniques. In Proceedings of the 7th Symposium on Operating Systems Design and Implementation. 45--60. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Automatic Software Repair: A Bibliography

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      cover image ACM Computing Surveys
      ACM Computing Surveys  Volume 51, Issue 1
      January 2019
      743 pages
      ISSN:0360-0300
      EISSN:1557-7341
      DOI:10.1145/3177787
      • Editor:
      • Sartaj Sahni
      Issue’s Table of Contents

      Copyright © 2018 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 23 January 2018
      • Accepted: 1 June 2017
      • Revised: 1 March 2017
      • Received: 1 December 2015
      Published in csur Volume 51, Issue 1

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • survey
      • Research
      • Refereed

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader