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

skip to main content
10.1145/3338906.3341184acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

PyGGI 2.0: language independent genetic improvement framework

Published: 12 August 2019 Publication History

Abstract

PyGGI is a research tool for Genetic Improvement (GI), that is designed to be versatile and easy to use. We present version 2.0 of PyGGI, the main feature of which is an XML-based intermediate program representation. It allows users to easily define GI operators and algorithms that can be reused with multiple target languages. Using the new version of PyGGI, we present two case studies. First, we conduct an Automated Program Repair (APR) experiment with the QuixBugs benchmark, one that contains defective programs in both Python and Java. Second, we replicate an existing work on runtime improvement through program specialisation for the MiniSAT satisfiability solver. PyGGI 2.0 was able to generate a patch for a bug not previously fixed by any APR tool. It was also able to achieve 14% runtime improvement in the case of MiniSAT. The presented results show the applicability and the expressiveness of the new version of PyGGI. A video of the tool demo is at: https://youtu.be/PxRUdlRDS40.

References

[1]
Gabin An, Jinhan Kim, Seongmin Lee, and Shin Yoo. 2017. PyGGI: Python General framework for Genetic Improvement. In Proceedings of Korea Software Congress (KSC 2017).
[2]
Gabin An, Jinhan Kim, and Shin Yoo. 2018. Comparing Line and AST Granularity Level for Program Repair using PyGGI. In Proceedings of the 4th Genetic Improvement Workshop (GI@ICSE 2018). 19–26.
[3]
Gabriele Bavota and Barbara Russo. 2016. A Large-scale Empirical Study on Self-admitted Technical Debt. In Proceedings of the 13th International Conference on Mining Software Repositories (MSR ’16). ACM, New York, NY, USA, 315–326.
[4]
Dave Binkley, Nicolas Gold, Syed Islam, Jens Krinke, and Shin Yoo. 2017. Tree-Oriented vs. Line-Oriented Observation-Based Slicing. In 2017 IEEE 17th International Working Conference on Source Code Analysis and Manipulation (SCAM). 21–30.
[5]
David Binkley, Nicolas Gold, Syed Islam, Jens Krinke, and Shin Yoo. 2018. A Comparison of Tree- and Line-Oriented Observational Slicing. Empirical Software Engineering to appear (2018).
[6]
Alexander E.I. Brownlee, Justyna Petke, Brad Alexander, Earl T. Barr, Markus Wagner, and David R. White. 2019. Gin: Genetic Improvement Research Made Easy. In Proceedings of the 2019 Annual Conference on Genetic and Evolutionary Computation (GECCO ’19). ACM, 8.
[7]
Bobby R. Bruce, Justyna Petke, and Mark Harman. 2015. Reducing Energy Consumption Using Genetic Improvement. In Proceedings of the 2015 Annual Conference on Genetic and Evolutionary Computation (GECCO ’15). ACM, New York, NY, USA, 1327–1334.
[8]
Niklas Eén and Niklas Sörensson. 2003. An Extensible SAT-solver. In Proceedings of the 6th International Conference on Theory and Applications of Satisfiability Testing (SAT 2003) (Lecture Notes in Computer Science), Vol. 2919. Springer, 502– 518.
[9]
Stephanie Forrest, ThanhVu Nguyen, Westley Weimer, and Claire Le Goues. 2009. A Genetic Programming Approach to Automated Software Repair. In Proceedings of the 11th Annual Conference on Genetic and Evolutionary Computation (GECCO ’09). ACM, New York, NY, USA, 947–954.
[10]
Daniel M. German, Bram Adams, and Kate Stewart. 2019. cregit: Token-level blame information in git version control repositories. Empirical Software Engineering (2019).
[11]
Claire Le Goues, Michael Dewey-Vogt, Stephanie Forrest, and Westley Weimer. 2012. A Systematic Study of Automated Program Repair: Fixing 55 out of 105 bugs for $8 Each. In Proceedings of the 34th International Conference on Software Engineering. 3–13.
[12]
Saemundur O. Haraldsson, John R. Woodward, Alexander E. I. Brownlee, and Kristin Siggeirsdottir. 2017. Fixing bugs in your sleep: how genetic improvement became an overnight success. In Genetic and Evolutionary Computation Conference, Berlin, Germany, July 15-19, 2017, Companion Material Proceedings, Peter A. N. Bosman (Ed.). ACM, 1513–1520.
[13]
W.B. Langdon and M. Harman. 2015. Optimizing Existing Software With Genetic Programming. Transactions on Evolutionary Computation 19, 1 (2015), 118–135.
[14]
William B. Langdon, Brian Yee Hong Lam, Justyna Petke, and Mark Harman. 2015. Improving CUDA DNA Analysis Software with Genetic Programming. In Proceedings of the Genetic and Evolutionary Computation Conference, GECCO 2015, Madrid, Spain, July 11-15, 2015, Sara Silva and Anna Isabel Esparcia-Alcázar (Eds.). ACM, 1063–1070.
[15]
Derrick Lin, James Koppel, Angela Chen, and Armando Solar-Lezama. 2017. QuixBugs: A Multi-lingual Program Repair Benchmark Set Based on the Quixey Challenge. In Proceedings Companion of the 2017 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity (SPLASH Companion 2017). ACM, New York, NY, USA, 55–56.
[16]
Alexandru Marginean, EarlT. Barr, Mark Harman, and Yue Jia. 2015. Automated Transplantation of Call Graph and Layout Features into Kate. In Search-Based Software Engineering, Márcio Barros and Yvan Labiche (Eds.). Lecture Notes in Computer Science, Vol. 9275. Springer International Publishing, 262–268.
[17]
Matias Martinez and Martin Monperrus. 2016. ASTOR: A Program Repair Library for Java. In Proceedings of ISSTA.
[18]
J. Petke, S. Haraldsson, M. Harman, w. langdon, D. White, and J. Woodward. 2017. Genetic Improvement of Software: a Comprehensive Survey. IEEE Transactions on Evolutionary Computation PP, 99 (2017), 1–1. 2017.2693219
[19]
Justyna Petke, Mark Harman, William B. Langdon, and Westley Weimer. 2014. Using Genetic Improvement and Code Transplants to Specialise a C++ Program to a Problem Class. In Genetic Programming, Miguel Nicolau, Krzysztof Krawiec, Malcolm I. Heywood, Mauro Castelli, Pablo García-Sánchez, Juan J. Merelo, Victor M. Rivas Santos, and Kevin Sim (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 137–149.
[20]
Justyna Petke, Mark Harman, William B. Langdon, and Westley Weimer. 2014. Using Genetic Improvement and Code Transplants to Specialise a C++ Program to a Problem Class. In 17th European Conference on Genetic Programming (LNCS), Miguel Nicolau, Krzysztof Krawiec, Malcolm I. Heywood, Mauro Castelli, Pablo Garcia-Sanchez, Juan J. Merelo, Victor M. Rivas Santos, and Kevin Sim (Eds.), Vol. 8599. Springer, 137–149.
[21]
Justyna Petke, Mark Harman, William B. Langdon, and Westley Weimer. 2018. Specialising Software for Different Downstream Applications Using Genetic Improvement and Code Transplantation. IEEE Transactions on Software Engineering 44, 6 (2018), 574–594.
[22]
Westley Weimer, ThanhVu Nguyen, Claire Le Goues, and Stephanie Forrest. 2009. Automatically Finding Patches Using Genetic Programming. In Proceedings of the 31st IEEE International Conference on Software Engineering (ICSE ’09). IEEE, Vancouver, Canada, 364–374.
[23]
Ming Wen, Junjie Chen, Rongxin Wu, Dan Hao, and Shing-Chi Cheung. 2018. Context-aware Patch Generation for Better Automated Program Repair. In Proceedings of the 40th International Conference on Software Engineering (ICSE ’18). ACM, New York, NY, USA, 1–11.
[24]
David R White. 2017. GI in no time. In Proceedings of the Genetic and Evolutionary Computation Conference Companion. ACM, 1549–1550.
[25]
He Ye, Matias Martinez, Thomas Durieux, and Martin Monperrus. 2019. A comprehensive study of automatic program repair on the QuixBugs benchmark. In 2019 IEEE 1st International Workshop on Intelligent Bug Fixing (IBF). IEEE, 1–10.

Cited By

View all

Index Terms

  1. PyGGI 2.0: language independent genetic improvement framework

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ESEC/FSE 2019: Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
    August 2019
    1264 pages
    ISBN:9781450355728
    DOI:10.1145/3338906
    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: 12 August 2019

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Genetic Improvement
    2. Search-based Software Engineering

    Qualifiers

    • Research-article

    Funding Sources

    • EPSRC
    • NRF

    Conference

    ESEC/FSE '19
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 112 of 543 submissions, 21%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)43
    • Downloads (Last 6 weeks)2
    Reflects downloads up to 14 Dec 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Speeding Up Genetic Improvement via Regression Test SelectionACM Transactions on Software Engineering and Methodology10.1145/368046633:8(1-31)Online publication date: 23-Jul-2024
    • (2024)Deep imperative mutations have less impactAutomated Software Engineering10.1007/s10515-024-00475-432:1Online publication date: 3-Dec-2024
    • (2024)Multi-objective improvement of Android applicationsAutomated Software Engineering10.1007/s10515-024-00472-732:1Online publication date: 4-Nov-2024
    • (2024)Enhancing Large Language Models-Based Code Generation by Leveraging Genetic ImprovementGenetic Programming10.1007/978-3-031-56957-9_7(108-124)Online publication date: 28-Mar-2024
    • (2023)Genetic Improvement of OLC and H3 with Magpie2023 IEEE/ACM International Workshop on Genetic Improvement (GI)10.1109/GI59320.2023.00011(9-16)Online publication date: May-2023
    • (2022)Keeping Secrets: Multi-objective Genetic Improvement for Detecting and Reducing Information LeakageProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3556947(1-12)Online publication date: 10-Oct-2022
    • (2022)Py2CyProceedings of the Genetic and Evolutionary Computation Conference Companion10.1145/3520304.3534037(1950-1955)Online publication date: 9-Jul-2022
    • (2022)AmaruProceedings of the Genetic and Evolutionary Computation Conference Companion10.1145/3520304.3534016(1930-1937)Online publication date: 9-Jul-2022
    • (2022)Evaluation of genetic improvement tools for improvement of non-functional properties of softwareProceedings of the Genetic and Evolutionary Computation Conference Companion10.1145/3520304.3534004(1956-1965)Online publication date: 9-Jul-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

    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