Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3639478.3639783acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
short-paper
Open access

Aiding Developer Understanding of Software Changes via Symbolic Execution-based Semantic Differencing

Published: 23 May 2024 Publication History
  • Get Citation Alerts
  • Abstract

    According to a recent observational study, developers spend an average of 48% of their development time on debugging tasks. Approaches such as equivalence checking and fault localization support developers during debugging tasks by providing information that enables developers to more quickly identify and deal with unintended changes in program behavior. The accuracy and runtime performance of these approaches have seen continuous improvements throughout the years. However, the outputs of existing tools are often difficult to understand for developers due to a lack of context information and result explanations. Our goal is to improve upon this issue by developing a new equivalence checking approach that (i) is at least as accurate as existing approaches but (ii) provides more detailed descriptions of identified behavioral / semantic differences and (iii) presents these results in a way that is useful for developers, thus aiding developer understanding of equivalence checking results and corresponding software changes.

    References

    [1]
    William C. Adams. 2015. Conducting Semi-Structured Interviews. John Wiley & Sons, Inc., Chapter 19, 492--505.
    [2]
    Abdulaziz Alaboudi and Thomas D. LaToza. 2021. Edit - Run Behavior in Programming and Debugging. In Proceedings of the 2021 Symposium on Visual Languages and Human-Centric Computing. IEEE, 1--10.
    [3]
    Abdulaziz Alaboudi and Thomas D. LaToza. 2021. An Exploratory Study of Debugging Episodes. arXiv:2105.02162 [cs.SE]
    [4]
    Sahar Badihi, Faridah Akinotcho, Yi Li, and Julia Rubin. 2020. ARDiff: Scaling Program Equivalence Checking via Iterative Abstraction and Refinement of Common Code. In Proceedings of the 28th Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. ACM, 13--24.
    [5]
    Roberto Baldoni, Emilio Coppa, Daniele C. D'Elia, Camil Demetrescu, and Irene Finocchi. 2018. A Survey of Symbolic Execution Techniques. Comput. Surveys 51, 3 (2018), 50:1--50:39.
    [6]
    Moritz Beller, Niels Spruit, Diomidis Spinellis, and Andy Zaidman. 2018. On the Dichotomy of Debugging Behavior Among Programmers. In Proceedings of the 40th International Conference on Software Engineering. ACM, 572--583.
    [7]
    Marcel Böhme, Bruno C. D. S. Oliveira, and Abhik Roychoudhury. 2013. Partition-based Regression Verification. In Proceedings of the 35th International Conference on Software Engineering. IEEE, 302--311.
    [8]
    Jean-Rémy Falleri, Floréal Morandat, Xavier Blanc, Matias Martinez, and Martin Monperrus. 2014. Fine-Grained and Accurate Source Code Differencing. In Proceedings of the 29th International Conference on Automated Software Engineering. ACM, 313--324.
    [9]
    Veit Frick, Thomas Grassauer, Fabian Beck, and Martin Pinzger. 2018. Generating Accurate and Compact Edit Scripts Using Tree Differencing. In Proceedings of the 2018 International Conference on Software Maintenance and Evolution. IEEE, 264--274.
    [10]
    Harald C. Gall, Beat Fluri, and Martin Pinzger. 2009. Change Analysis with Evolizer and ChangeDistiller. IEEE Software 26, 1 (2009), 26--33.
    [11]
    Johann Glock, Josef Pichler, and Martin Pinzger. 2023. PASDA: A Partition-based Semantic Differencing Approach with Best Effort Classification of Undecided Cases. arXiv:2311.08071 [cs.SE]
    [12]
    Johann Glock, Josef Pichler, and Martin Pinzger. 2023. Replication Package for: "PASDA: A Partition-based Semantic Differencing Approach with Best Effort Classification of Undecided Cases".
    [13]
    Jane Hoffswell, Arvind Satyanarayan, and Jeffrey Heer. 2018. Augmenting Code with In Situ Visualizations to Aid Program Understanding. In Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems. ACM.
    [14]
    Marie-Christine Jakobs. 2021. PEQcheck: Localized and Context-Aware Checking of Functional Equivalence. In Proceedings of the 9th International Conference on Formal Methods in Software Engineering. IEEE, 130--140.
    [15]
    James C. King. 1976. Symbolic Execution and Program Testing. Commun. ACM 19, 7 (1976), 385--394.
    [16]
    Pavneet Singh Kochhar, Xin Xia, David Lo, and Shanping Li. 2016. Practitioners' Expectations on Automated Fault Localization. In Proceedings of the 25th International Symposium on Software Testing and Analysis. ACM, 165--176.
    [17]
    Lucas Layman, Madeline Diep, Meiyappan Nagappan, Janice Singer, Robert DeLine, and Gina Venolia. 2013. Debugging Revisited: Toward Understanding the Debugging Needs of Contemporary Software Developers. In Proceedings of the 2013 International Symposium on Empirical Software Engineering and Measurement. IEEE, 383--392.
    [18]
    Claire Le Goues, Michael Pradel, and Abhik Roychoudhury. 2019. Automated Program Repair. Commun. ACM 62, 12 (2019), 56--65.
    [19]
    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. ACM, 691--701.
    [20]
    Martin Monperrus. 2018. Automatic Software Repair: A Bibliography. Comput. Surveys 51, 1 (2018), 17:1--17:24.
    [21]
    Yannic Noller, Ridwan Shariffdeen, Xiang Gao, and Abhik Roychoudhury. 2022. Trust Enhancement Issues in Program Repair. In Proceedings of the 44th International Conference on Software Engineering. ACM, 2228--2240.
    [22]
    Chris Parnin and Alessandro Orso. 2011. Are Automated Debugging Techniques Actually Helping Programmers?. In Proceedings of the 2011 International Symposium on Software Testing and Analysis. ACM, 199--209.
    [23]
    Suzette Person, Matthew B. Dwyer, Sebastian Elbaum, and Corina S. Pásáreanu. 2008. Differential Symbolic Execution. In Proceedings of the 16th International Symposium on Foundations of Software Engineering. ACM, 226--237.
    [24]
    Matúš Sulír, Michaela Bačíková, Sergej Chodarev, and Jaroslav Porubän. 2018. Visual Augmentation of Source Code Editors: A Systematic Mapping Study. Journal of Visual Languages & Computing 49 (2018), 46--59.
    [25]
    M. W. van Someren, Y. F. Barnard, and J. A. C. Sandberg. 1994. The Think Aloud Method: A Practical Approach to Modelling Cognitive Processes. Academic Press. https://dare.uva.nl/search?identifier=7fef37d5-8ead-44c6-af62-0feeea18d445
    [26]
    Emily Winter, David Bowes, Steve Counsell, Tracy Hall, Saemundur O. Haraldsson, Vesna Nowack, and John R. Woodward. 2023. How do Developers Really Feel About Bug Fixing? Directions for Automatic Program Repair. IEEE Transactions on Software Engineering 49, 4 (2023), 1823--1841.
    [27]
    W. Eric Wong, Ruizhi Gao, Yihao Li, Rui Abreu, and Franz Wotawa. 2016. A Survey on Software Fault Localization. IEEE Transactions on Software Engineering 40, 8 (2016), 707--740.
    [28]
    Jifeng Xuan, Matias Martinez, Favio Demarco, Maxime Clement, Sebastian R. Lamelas Marcote, Thomas Durieux, Daniel Le Berre, and Martin Monperrus. 2017. Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs. IEEE Transactions on Software Engineering 43, 1 (2017), 34--55.

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ICSE-Companion '24: Proceedings of the 2024 IEEE/ACM 46th International Conference on Software Engineering: Companion Proceedings
    April 2024
    531 pages
    ISBN:9798400705021
    DOI:10.1145/3639478
    This work is licensed under a Creative Commons Attribution International 4.0 License.

    Sponsors

    In-Cooperation

    • Faculty of Engineering of University of Porto

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 23 May 2024

    Check for updates

    Author Tags

    1. program comprehension
    2. semantic differencing
    3. equivalence checking
    4. symbolic execution

    Qualifiers

    • Short-paper

    Conference

    ICSE-Companion '24
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 276 of 1,856 submissions, 15%

    Upcoming Conference

    ICSE 2025

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 45
      Total Downloads
    • Downloads (Last 12 months)45
    • Downloads (Last 6 weeks)16
    Reflects downloads up to 11 Aug 2024

    Other Metrics

    Citations

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media