Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2338965.2336775acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
Article

A human study of patch maintainability

Published: 15 July 2012 Publication History

Abstract

Identifying and fixing defects is a crucial and expensive part of the software lifecycle. Measuring the quality of bug-fixing patches is a difficult task that affects both functional correctness and the future maintainability of the code base. Recent research interest in automatic patch generation makes a systematic understanding of patch maintainability and understandability even more critical.
We present a human study involving over 150 participants, 32 real-world defects, and 40 distinct patches. In the study, humans perform tasks that demonstrate their understanding of the control flow, state, and maintainability aspects of code patches. As a baseline we use both human-written patches that were later reverted and also patches that have stood the test of time to ground our results. To address any potential lack of readability with machine-generated patches, we propose a system wherein such patches are augmented with synthesized, human-readable documentation that summarizes their effects and context. Our results show that machine-generated patches are slightly less maintainable than human-written ones, but that trend reverses when machine patches are augmented with our synthesized documentation. Finally, we examine the relationship between code features (such as the ratio of variable uses to assignments) with participants' abilities to complete the study tasks and thus explain a portion of the broad concept of patch quality.

References

[1]
K. Aggarwal, Y. Singh, and J. Chhabra. An integrated measure of software maintainability. In Reliability and Maintainability Symposium, pages 235-241, 2002.
[2]
A. Aho, R. Sethi, and J. Ullman. Compilers: Principles, Techniques and Tools. Addison Wesley, 1986. ISBN 0201100886.
[3]
J. Anvik, L. Hiew, and G. C. Murphy. Who should fix this bug? In International Conference on Software Engineering, pages 361-370, 2006. ISBN 1-59593-375-1.
[4]
B. Boehm and V. Basili. Software defect reduction. IEEE Computer Innovative Technology for Computer Professions, 34(1):135-137, January 2001.
[5]
R. P. L. Buse and W. Weimer. Automatic documentation inference for exceptions. In International Symposium on Software Testing and Analysis, pages 273-282, 2008.
[6]
R. P. L. Buse and W. Weimer. A metric for software readability. In International Symposium on Software Testing and Analysis, pages 121-130, 2008.
[7]
R. P. L. Buse and W. Weimer. Automatically documenting program changes. In Automated Software Engineering, pages 33-42, 2010.
[8]
R. P. L. Buse and W. Weimer. Synthesizing API usage examples. In International Conference on Software Engineering (to appear), 2012.
[9]
J. Cohen. Statistical power analysis for the behavioral sciences, 2nd edidtion. Routledge Academic, 1988. ISBN 0805802835.
[10]
S. C. B. de Souza, N. Anquetil, and K. M. de Oliveira. A study of the documentation essential to software maintenance. In international conference on Design of communication, pages 68-75, 2005. ISBN 1-59593-175-9.
[11]
Z. Fry and W. Weimer. A human study of fault localization accuracy. In International Conference on Software Maintenance, pages 1-10, 2010.
[12]
L. L. Giventer. Statistical Analysis in Public Administration. Jones and Bartlett Publishers, 2007.
[13]
M. Halstead. Elements of Software Science. Elsevier, New York, 1977.
[14]
I. Heitlager, T. Kuipers, and J. Visser. A practical model for measuring maintainability. In International Conference on Quality of Information and Communications Technology, pages 30-39, 2007.
[15]
P. Hooimeijer and W. Weimer. Modeling bug report quality. In Automated Software Engineering, pages 34-43, 2007.
[16]
G. Jin, L. Song, W. Zhang, S. Lu, and B. Liblit. Automated atomicity-violation fixing. In Programming Language Design and Implementation, 2011.
[17]
A. Kittur, E. H. Chi, and B. Suh. Crowdsourcing user studies with mechanical turk. In Conference on Human Factors in Computing Systems, pages 453-456, 2008.
[18]
D. Kozlov, J. Koskinen, M. Sakkinen, and J. Markkula. Assessing maintainability change over multiple software releases. J. Softw. Maint. Evol., 20:31-58, January 2008.
[19]
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.
[20]
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.
[21]
T. J. McCabe. A complexity measure. IEEE Trans. Software Eng., 2 (4):308-320, 1976.
[22]
G. C. Necula, S. McPeak, S. P. Rahul, and W. Weimer. Cil: Intermediate language and tools for analysis and transformation of c programs. In Conference on Compiler Construction, volume 2304, pages 213-228, 2002.
[23]
K. Nishizono, S. Morisaki, R. Vivanco, and K. Matsumoto. Source code comprehension strategies and metrics to predict comprehension effort in software maintenance and evolution tasks -- an empirical study with industry practitioners. In International Conference on Software Maintenance, pages 473-481, sept. 2011.
[24]
D. G. Novick and K. Ward. What users say they want in documentation. In International Conference on Design of Communication, pages 84-91, 2006.
[25]
M. Orlov and M. Sipper. Flight of the finch through the java wilderness. IEEE Transactions on Evolutionary Computation, 15(2):166-192.
[26]
J. H. Perkins, S. Kim, S. Larsen, S. Amarasinghe, J. Bachrach, M. Carbin, C. Pacheco, F. Sherwood, S. Sidiroglou, G. Sullivan, W.-F. Wong, Y. Zibin, M. D. Ernst, and M. Rinard. Automatically patching errors in deployed software. In Symposium on Operating Systems Principles, 2009.
[27]
D. R. Raymond. Reading source code. In Conference of the Centre for Advanced Studies on Collaborative Research, pages 3-16, 1991.
[28]
M. Riaz, E. Mendes, and E. Tempero. A systematic review of software maintainability prediction and metrics. In International Symposium on Empirical Software Engineering and Measurement, pages 367-377, 2009.
[29]
M. Robnik-¿ikonja and I. Kononenko. Theoretical and empirical analysis of ReliefF and RReliefF. Mach. Learn., 53:23-69, October 2003.
[30]
S. Rugaber. The use of domain knowledge in program understanding. Ann. Softw. Eng., 9(1-4):143-192, 2000.
[31]
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.
[32]
J. Sillito, G. C. Murphy, and K. De Volder. Questions programmers ask during software evolution tasks. In Foundations of Software Engineering, pages 23-34, 2006.
[33]
R. Snow, B. O'Connor, D. Jurafsky, and A. Y. Ng. Cheap and fast-- but is it good?: evaluating non-expert annotations for natural language tasks. In Empirical Methods in Natural Language Processing, 2008.
[34]
Symantec. Internet security threat report. In http: //eval.symantec.com/mktginfo/enterprise/white_ papers/ent-whitepaper_symantec_internet_security_ threat_report_x_09_2006.en-us.pdf, Sept. 2006.
[35]
Y. Wei, Y. Pei, C. A. Furia, L. S. Silva, S. Buchholz, B. Meyer, and A. Zeller. Automated fixing of programs with contracts. In International Symposium on Software Testing and Analysis, pages 61-72, 2010.
[36]
W. Weimer. Patches as better bug reports. In Generative Programming and Component Engineering, pages 181-190, 2006.
[37]
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.
[38]
K. D. Welker, P. W. Oman, and G. G. Atkinson. Development and application of an automated source code maintainability index. Journal of Software Maintenance: Research and Practice, 9(3):127-159, 1997.
[39]
Z. Yin, D. Yuan, Y. Zhou, S. Pasupathy, and L. N. Bairavasundaram. How do fixes become bugs? In Foundations of Software Engineering, pages 26-36, 2011.

Cited By

View all
  • (2024)The 13th International Workshop on Genetic Improvement(GI @ ICSE 2024)ACM SIGSOFT Software Engineering Notes10.1145/3672089.367210249:3(42-50)Online publication date: 18-Jul-2024
  • (2024)Exploring the Effects of Urgency and Reputation in Code Review: An Eye-Tracking StudyProceedings of the 32nd IEEE/ACM International Conference on Program Comprehension10.1145/3643916.3644425(202-213)Online publication date: 15-Apr-2024
  • (2024)Automated Program Repair, What Is It Good For? Not Absolutely Nothing!Proceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639095(1-13)Online publication date: 20-May-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ISSTA 2012: Proceedings of the 2012 International Symposium on Software Testing and Analysis
July 2012
341 pages
ISBN:9781450314541
DOI:10.1145/2338965
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

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 15 July 2012

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

ISSTA '12
Sponsor:

Acceptance Rates

Overall Acceptance Rate 58 of 213 submissions, 27%

Upcoming Conference

ISSTA '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)32
  • Downloads (Last 6 weeks)2
Reflects downloads up to 15 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2024)The 13th International Workshop on Genetic Improvement(GI @ ICSE 2024)ACM SIGSOFT Software Engineering Notes10.1145/3672089.367210249:3(42-50)Online publication date: 18-Jul-2024
  • (2024)Exploring the Effects of Urgency and Reputation in Code Review: An Eye-Tracking StudyProceedings of the 32nd IEEE/ACM International Conference on Program Comprehension10.1145/3643916.3644425(202-213)Online publication date: 15-Apr-2024
  • (2024)Automated Program Repair, What Is It Good For? Not Absolutely Nothing!Proceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639095(1-13)Online publication date: 20-May-2024
  • (2024)Developer Behaviors in Validating and Repairing LLM-Generated Code Using IDE and Eye Tracking2024 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)10.1109/VL/HCC60511.2024.00015(40-46)Online publication date: 2-Sep-2024
  • (2024)On the acceptance by code reviewers of candidate security patches suggested by Automated Program Repair toolsEmpirical Software Engineering10.1007/s10664-024-10506-z29:5Online publication date: 3-Aug-2024
  • (2024)Test-based patch clustering for automatically-generated patches assessmentEmpirical Software Engineering10.1007/s10664-024-10503-229:5Online publication date: 24-Jul-2024
  • (2023) Let’s Talk With Developers, Not About Developers: A Review of Automatic Program Repair Research IEEE Transactions on Software Engineering10.1109/TSE.2022.315208949:1(419-436)Online publication date: 1-Jan-2023
  • (2023)Software Testing Research Challenges: An Industrial Perspective2023 IEEE Conference on Software Testing, Verification and Validation (ICST)10.1109/ICST57152.2023.00008(1-10)Online publication date: Apr-2023
  • (2023)The Future Can’t Help Fix The Past: Assessing Program Repair In The Wild2023 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME58846.2023.00017(50-61)Online publication date: 1-Oct-2023
  • (2023)How does quality deviate in stable releases by backporting?2023 IEEE/ACM 45th International Conference on Software Engineering: New Ideas and Emerging Results (ICSE-NIER)10.1109/ICSE-NIER58687.2023.00031(140-145)Online publication date: May-2023
  • 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