Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Development and application of an automated source code maintainability index
Journal of Software Maintenance: Research and Practice
Elements of Software Science (Operating and programming systems series)
Elements of Software Science (Operating and programming systems series)
The use of domain knowledge in program understanding
Annals of Software Engineering
Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices
Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Theoretical and Empirical Analysis of ReliefF and RReliefF
Machine Learning
CASCON '91 Proceedings of the 1991 conference of the Centre for Advanced Studies on Collaborative research
A study of the documentation essential to software maintenance
Proceedings of the 23rd annual international conference on Design of communication: documenting & designing for pervasive information
Proceedings of the 28th international conference on Software engineering
What users say they want in documentation
SIGDOC '06 Proceedings of the 24th annual ACM international conference on Design of communication
Proceedings of the 5th international conference on Generative programming and component engineering
Questions programmers ask during software evolution tasks
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
A Practical Model for Measuring Maintainability
QUATIC '07 Proceedings of the 6th International Conference on Quality of Information and Communications Technology
IEEE Transactions on Software Engineering
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Assessing maintainability change over multiple software releases
Journal of Software Maintenance and Evolution: Research and Practice
Crowdsourcing user studies with Mechanical Turk
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
A metric for software readability
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Automatic documentation inference for exceptions
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Automatically finding patches using genetic programming
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Cheap and fast---but is it good?: evaluating non-expert annotations for natural language tasks
EMNLP '08 Proceedings of the Conference on Empirical Methods in Natural Language Processing
Automatically patching errors in deployed software
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
A systematic review of software maintainability prediction and metrics
ESEM '09 Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement
Automated fixing of programs with contracts
Proceedings of the 19th international symposium on Software testing and analysis
Automatically documenting program changes
Proceedings of the IEEE/ACM international conference on Automated software engineering
A human study of fault localization accuracy
ICSM '10 Proceedings of the 2010 IEEE International Conference on Software Maintenance
Automated atomicity-violation fixing
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
ICSM '11 Proceedings of the 2011 27th IEEE International Conference on Software Maintenance
GenProg: A Generic Method for Automatic Software Repair
IEEE Transactions on Software Engineering
Flight of the FINCH Through the Java Wilderness
IEEE Transactions on Evolutionary Computation
A systematic study of automated program repair: fixing 55 out of 105 bugs for $8 each
Proceedings of the 34th International Conference on Software Engineering
Synthesizing API usage examples
Proceedings of the 34th International Conference on Software Engineering
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Dynamic adaptive search based software engineering
Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurement
Using automated program repair for evaluating the effectiveness of fault localization techniques
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Automatic patch generation learned from human-written patches
Proceedings of the 2013 International Conference on Software Engineering
Current challenges in automatic software repair
Software Quality Control
Hi-index | 0.00 |
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.