Abstract
Automated program repair has made major strides showing its exciting potential, but all efforts to turn the techniques into practical tools usable by software developers hit a crucial blocking factor: the timing issue. Today’s techniques are slow. Too slow by an order of magnitude at least. The long response time implies that the currently available techniques cannot suit the actual needs of developers in the field. What developers want is a tool that can instantaneously propose a fix for a detected failure. A technique that can propose a patch instantaneously (or near-instantaneously) would provide the breakthrough that is required to turn automated program repair from an attractive research topic into a practical software engineering tool. Indeed, researchers have started to tackle this speed issue. In this paper, we survey recent approaches that were shown to be effective in speeding up automated program repair. In particular, we view automated program repair as a search problem—the ultimate goal of automated program repair is the search for a patch which is often preceded by other related searches such as a search for suspicious program locations, and a search for the specification for a patch. We describe how the problem of automated program repair has been decomposed into a series of search problems, and explain how these individual search problems have been solved. We expect that our paper would provide insight into how to speed up automated program repair by further optimizing the search for a patch.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
- 2.
- 3.
More technically, a partial MaxMST solver built on top of Z3 is used.
- 4.
Depending on the type of a suspicious program location, SPR also directly generates a patch candidate without searching for a specification. We ignore those cases in this discussion.
References
De Moura L, Bjørner N (2008) Z3: an efficient SMT solver. In: International conference on tools and algorithms for the construction and analysis of systems. Springer, Heidelberg, pp 337–340
D’Antoni L, Samanta R, Singh R (2016) Qlose: program repair with quantitative objectives. In: International conference on computer aided verification. Springer, Heidelberg, pp 383–401
Harman M, O’Hearn P (2018) From start-ups to scale-ups: opportunities and open problems for static and dynamic program analysis. In: SCAM
Hua J, Zhang M, Wang K, Khurshid S (2018) Towards practical program repair with on-demand candidate generation. In: ICSE, pp 12–23
Jha S, Gulwani S, Seshia SA, Tiwari A (2010) Oracle-guided component-based program synthesis. In: Proceedings of the 32nd ACM/IEEE international conference on software engineering, vol 1. ACM, pp 215–224
Kim D, Nam J, Song J, Kim S (2013) Automatic patch generation learned from human-written patches. In: Proceedings of the 2013 international conference on software engineering (ICSE). IEEE Press, pp 802–811
Le XBD, Chu DH, Lo D, Le Goues C, Visser W (2017) S3: syntax-and semantic-guided repair synthesis via programming by examples. In: ESEC/FSE, pp 593–604
Le XD, Lo D, Le Goues C (2016) History driven program repair. In: SANER, pp 213–224
Le XD, Thung F, Lo D, Le Goues C (2018) Overfitting in semantics-based automated program repair. Empir Softw Eng 23(5):3007–3033
Le Goues C, Dewey-Vogt M, Forrest S, Weimer W (2012) A systematic study of automated program repair: fixing 55 out of 105 bugs for \$8 each. In: ICSE. IEEE, pp 3–13
Long F, Rinard M (2015) Staged program repair with condition synthesis. In: ESEC/FSE, pp 166–178
Long F, Rinard MC (2016) An analysis of the search spaces for generate and validate patch generation systems. In: Proceedings of the 38th international conference on software engineering (ICSE), pp 702–713
Mechtaev S, Gao X, Tan SH, Roychoudhury A (2018) Test-equivalence analysis for automatic patch generation. ACM Trans Softw Eng Methodol (TOSEM) 27(4):15
Mechtaev S, Griggio A, Cimatti A, Roychoudhury A (2018) Symbolic execution with existential second-order constraints. In: ACM joint meeting on European software engineering conference and symposium on the foundations of software engineering (FSE). ACM, pp 389–399
Mechtaev S, Yi J, Roychoudhury A (2015) DirectFix: looking for simple program repairs. In: ICSE, pp 448–458
Mechtaev S, Yi J, Roychoudhury A (2016) Angelix: scalable multiline program patch synthesis via symbolic analysis. In: ICSE, pp 691–701
Nguyen HDT, Qi D, Roychoudhury A, Chandra S (2013) SemFix: program repair via semantic analysis. In: International conference on software engineering (ICSE). IEEE, pp 772–781
Pei Y, Furia CA, Nordio M, Wei Y, Meyer B, Zeller A (2014) Automated fixing of programs with contracts. IEEE Trans Softw Eng (TSE) 40(5):427–449
Qi Y, Mao X, Lei Y, Dai Z, Wang C (2014) The strength of random search on automated program repair. In: Proceedings of the 36th international conference on software engineering (ICSE). ACM, pp. 254–265
Qi Z, Long F, Achour S, Rinard MC (2015) An analysis of patch plausibility and correctness for generate-and-validate patch generation systems. In: Proceedings of the 2015 international symposium on software testing and analysis (ISSTA), pp 24–36
Smith EK, Barr ET, Le Goues C, Brun Y (2015) Is the cure worse than the disease? Overfitting in automated program repair. In: Proceedings of the 2015 10th joint meeting on foundations of software engineering (FSE). ACM, pp 532–543
Tan SH, Yoshida H, Prasad MR, Roychoudhury A (2016) Anti-patterns in search-based program repair. In: Proceedings of the 2016 24th ACM SIGSOFT international symposium on foundations of software engineering. ACM, pp 727–738
Weimer W, Fry ZP, Forrest S (2013) Leveraging program equivalence for adaptive program repair: models and first results. In: Automated software engineering (ASE). IEEE, pp 356–366
Weimer W, Nguyen T, Le Goues C, Forrest S (2009) Automatically finding patches using genetic programming. In: ICSE, pp 364–374
Xiong Y, Liu X, Zeng M, Zhang L, Huang G (2018) Identifying patch correctness in test-based program repair. In: Proceedings of the 40th international conference on software engineering. ACM, pp 789–799
Xuan J, Martinez M, Demarco F, Clement M, Marcote SL, Durieux T, Le Berre D, Monperrus M (2017) Nopol: automatic repair of conditional statement bugs in Java programs. IEEE Trans Softw Eng (TSE) 43(1):34–55
Yi J, Tan SH, Mechtaev S, Böhme M, Roychoudhury A (2018) A correlation study between automated program repair and test-suite metrics. Empir Softw Eng 23(5):2948–2979
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Yi, J. (2020). On the Time Performance of Automated Fixes. In: Ciancarini, P., Mazzara, M., Messina, A., Sillitti, A., Succi, G. (eds) Proceedings of 6th International Conference in Software Engineering for Defence Applications. SEDA 2018. Advances in Intelligent Systems and Computing, vol 925. Springer, Cham. https://doi.org/10.1007/978-3-030-14687-0_28
Download citation
DOI: https://doi.org/10.1007/978-3-030-14687-0_28
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-14686-3
Online ISBN: 978-3-030-14687-0
eBook Packages: Intelligent Technologies and RoboticsIntelligent Technologies and Robotics (R0)