Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/2330163.2330296acmconferencesArticle/Chapter ViewAbstractPublication PagesgeccoConference Proceedingsconference-collections
research-article

Representations and operators for improving evolutionary software repair

Published: 07 July 2012 Publication History

Abstract

Evolutionary computation is a promising technique for automating time-consuming and expensive software maintenance tasks, including bug repair. The success of this approach, however, depends at least partially on the choice of representation, fitness function, and operators. Previous work on evolutionary software repair has employed different approaches, but they have not yet been evaluated in depth. This paper investigates representation and operator choices for source-level evolutionary program repair in the GenProg framework [17], focusing on: (1) representation of individual variants, (2) crossover design, (3) mutation operators, and (4) search space definition. We evaluate empirically on a dataset comprising 8 C programs totaling over 5.1 million lines of code and containing 105 reproducible, human-confirmed defects. Our results provide concrete suggestions for operator and representation design choices for evolutionary program repair. When augmented to incorporate these suggestions, GenProg repairs 5 additional bugs (60 vs. 55 out of 105), with a decrease in repair time of 17-43% for the more difficult repair searches.

References

[1]
T. Ackling, B. Alexander, and I. Grunert. Evolving patches for software repair. In Genetic and Evolutionary Computation, pages 1427--1434, 2011.
[2]
R. Al-Ekram, A. Adma, and O. Baysal. diffX: an algorithm to detect changes in multi-version XML documents. In Conference of the Centre for Advanced Studies on Collaborative research, pages 1--11. IBM Press, 2005.
[3]
E. Alba and F. Chicano. Finding safety errors with ACO. In Genetic and Evolutionary Computation Conference, pages 1066--1073, 2007.
[4]
A. Arcuri. Evolutionary repair of faulty software. Applied Soft Computing, 11(4):3494--3514, June 2011.
[5]
A. Arcuri and X. Yao. A novel co-evolutionary approach to automatic software bug fixing. In IEEE Congress on Evolutionary Computation, pages 162--168, 2008.
[6]
A. Barreto, M. de O. Barros, and C. M. Werner. Staffing a software project: a constraint satisfaction and optimization-based approach. Computers and Operations Research, 35(10):3073--3089, 2008.
[7]
V. Debroy and W. E. Wong. Using mutation to automatically suggest fixes for faulty programs. In International Conference on Software Testing, Verification, and Validation, pages 65--74, 2010.
[8]
L. Erlikh. Leveraging legacy system dollars for e-business. IT Professional, 2(3):17--23, 2000.
[9]
E. Fast, C. Le Goues, S. Forrest, and W. Weimer. Designing better fitness functions for automated program repair. In Genetic and Evolutionary Computation Conference, 2010.
[10]
S. Forrest, W. Weimer, T. Nguyen, and C. Le Goues. A genetic programming approach to automated software repair. In Genetic and Evolutionary Computation Conference, pages 947--954, 2009.
[11]
M. Harman. The current state and future of search based software engineering. In International Conference on Software Engineering, pages 342--357, 2007.
[12]
J. A. Jones and M. J. Harrold. Empirical evaluation of the Tarantula automatic fault-localization technique. In Automated Software Engineering, pages 273--282, 2005.
[13]
R. Kohavi. A study of cross-validation and bootstrap for accuracy estimation and model selection. International Joint Conference on Artificial Intelligence, 14(2):1137--1145, 1995.
[14]
W. B. Langdon and M. Harman. Evolving a CUDA kernel from an nVidia template. In Congress on Evolutionary Computation, pages 1--8, 2010.
[15]
W. B. Langdon, M. Harman, and Y. Jia. Efficient multi-objective higher order mutation testing with genetic programming. Journal of Systems and Software, 83(12):2416--2430, 2010.
[16]
C. Le Goues, M. Dewey-Vogt, S. Forrest, and W. Weimer. A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each. In International Conference on Software Engineering (to appear), 2012.
[17]
C. Le Goues, T. Nguyen, S. Forrest, and W. Weimer. GenProg: A generic method for automated software repair. Transactions on Software Engineering, 38(1):54--72, 2012.
[18]
C. C. Michael, G. McGraw, and M. A. Schatz. Generating software test data by evolution. Transactions on Software Engineering, 27(12):1085--1110, 2001.
[19]
M. Orlov and M. Sipper. Flight of the finch through the java wilderness. IEEE Transactions on Evolutionary Computation, 15(2):166--192.
[20]
M. Orlov and M. Sipper. Genetic programming in the wild: Evolving unrestricted bytecode. In Genetic and Evolutionary Computation Conference, pages 1043--1050, 2009.
[21]
J. E. Rowe and N. F. McPhee. The effects of crossover and mutation operators on variable length linear structures. In Genetic and Evolutionary Computation Conference, pages 535--542, 2001.
[22]
E. Schulte, S. Forrest, and W. Weimer. Automatic program repair through the evolution of assembly code. In Automated Software Engineering, pages 33--36, 2010.
[23]
R. C. Seacord, D. Plakosh, and G. A. Lewis. Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices. Addison-Wesley Longman Publishing Co., Inc., 2003.
[24]
O. Seng, J. Stammel, and D. Burkhart. Search-based determination of refactorings for improving the class structure of object-oriented systems. In Genetic and Evolutionary Computation Conference, pages 1909--1916, 2006.
[25]
P. Sitthi-Amorn, N. Modly, W. Weimer, and J. Lawrence. Genetic programming for shader simplification. ACM Transactions on Graphics, 30(5), 2011.
[26]
S. Wappler and J. Wegener. Evolutionary unit testing of object-oriented software using strongly-typed genetic programming. In Genetic and Evolutionary Computation Conference, pages 1925--1932, 2006.
[27]
W. Weimer. Patches as better bug reports. In Generative Programming and Component Engineering, pages 181--190, 2006.
[28]
W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. In International Conference on Software Engineering, pages 364--367, 2009.
[29]
D. R. White, A. Arcuri, and J. A. Clark. Evolutionary improvement of programs. IEEE Trans. on Evolutionary Computation, 15(4):515--538, aug. 2011.
[30]
A. Zeller. Yesterday, my program worked. Today, it does not. Why? In Foundations of Software Engineering, 1999.

Cited By

View all
  • (2023)CirFix: Automated Hardware Repair and its Real-World ApplicationsIEEE Transactions on Software Engineering10.1109/TSE.2023.326989949:7(3736-3752)Online publication date: Jul-2023
  • (2023)Using the TypeScript compiler to fix erroneous Node.js snippets2023 IEEE 23rd International Working Conference on Source Code Analysis and Manipulation (SCAM)10.1109/SCAM59687.2023.00031(220-230)Online publication date: 2-Oct-2023
  • (2023)Leveraging Evidence Theory to Improve Fault Localization: An Exploratory Study2023 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)10.1109/ESEM56168.2023.10304791(1-12)Online publication date: 26-Oct-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
GECCO '12: Proceedings of the 14th annual conference on Genetic and evolutionary computation
July 2012
1396 pages
ISBN:9781450311779
DOI:10.1145/2330163
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 07 July 2012

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. crossover
  2. genetic programming
  3. mutation
  4. representation
  5. search-based software engineering
  6. software repair

Qualifiers

  • Research-article

Conference

GECCO '12
Sponsor:
GECCO '12: Genetic and Evolutionary Computation Conference
July 7 - 11, 2012
Pennsylvania, Philadelphia, USA

Acceptance Rates

Overall Acceptance Rate 1,669 of 4,410 submissions, 38%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)6
  • Downloads (Last 6 weeks)1
Reflects downloads up to 14 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2023)CirFix: Automated Hardware Repair and its Real-World ApplicationsIEEE Transactions on Software Engineering10.1109/TSE.2023.326989949:7(3736-3752)Online publication date: Jul-2023
  • (2023)Using the TypeScript compiler to fix erroneous Node.js snippets2023 IEEE 23rd International Working Conference on Source Code Analysis and Manipulation (SCAM)10.1109/SCAM59687.2023.00031(220-230)Online publication date: 2-Oct-2023
  • (2023)Leveraging Evidence Theory to Improve Fault Localization: An Exploratory Study2023 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)10.1109/ESEM56168.2023.10304791(1-12)Online publication date: 26-Oct-2023
  • (2023)Program transformation landscapes for automated program modification using GinEmpirical Software Engineering10.1007/s10664-023-10344-528:4Online publication date: 14-Jul-2023
  • (2022)Dissecting copy/delete/replace/swap mutationsProceedings of the Genetic and Evolutionary Computation Conference Companion10.1145/3520304.3533970(1940-1945)Online publication date: 9-Jul-2022
  • (2022)CirFix: automatically repairing defects in hardware design codeProceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3503222.3507763(990-1003)Online publication date: 28-Feb-2022
  • (2022)Quality of Automated Program Repair on Real-World DefectsIEEE Transactions on Software Engineering10.1109/TSE.2020.299878548:2(637-661)Online publication date: 1-Feb-2022
  • (2022)How do Android developers improve non-functional properties of software?Empirical Software Engineering10.1007/s10664-022-10137-227:5Online publication date: 1-Sep-2022
  • (2022)Digging into Semantics: Where Do Search-Based Software Repair Methods Search?Parallel Problem Solving from Nature – PPSN XVII10.1007/978-3-031-14721-0_1(3-18)Online publication date: 15-Aug-2022
  • (2021)Empirical Comparison of Search Heuristics for Genetic Improvement of SoftwareIEEE Transactions on Evolutionary Computation10.1109/TEVC.2021.307027125:5(1001-1011)Online publication date: Oct-2021
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media