Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
A refactoring tool for Smalltalk
Theory and Practice of Object Systems - Special issue object-oriented software evolution and re-engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Detection Strategies: Metrics-Based Rules for Detecting Design Flaws
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Extreme Programming Explained: Embrace Change (2nd Edition)
Extreme Programming Explained: Embrace Change (2nd Edition)
How Are Java Software Developers Using the Eclipse IDE?
IEEE Software
Refactoring Practice: How it is and How it Should be Supported - An Eclipse Case Study
ICSM '06 Proceedings of the 22nd IEEE International Conference on Software Maintenance
Improving Usability of Software Refactoring Tools
ASWEC '07 Proceedings of the 2007 Australian Software Engineering Conference
Automated testing of refactoring engines
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Breaking the barriers to successful refactoring: observations and tools for extract method
Proceedings of the 30th international conference on Software engineering
A catalogue of lightweight visualizations to support code smell inspection
Proceedings of the 4th ACM symposium on Software visualization
Sound and extensible renaming for java
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Refactoring sequential Java code for concurrency via concurrent libraries
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
From Public to Private to Absent: Refactoring Java Programs under Constrained Accessibility
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
A few billion lines of code later: using static analysis to find bugs in the real world
Communications of the ACM
Inferring Method Effect Summaries for Nested Heap Regions
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
An interactive ambient visualization for code smells
Proceedings of the 5th international symposium on Software visualization
Browse and discover: social file sharing in the enterprise
Proceedings of the ACM 2011 conference on Computer supported cooperative work
Peer interaction effectively, yet infrequently, enables programmers to discover new tools
Proceedings of the ACM 2011 conference on Computer supported cooperative work
Transformation for class immutability
Proceedings of the 33rd International Conference on Software Engineering
Refactoring Java programs for flexible locking
Proceedings of the 33rd International Conference on Software Engineering
The need for richer refactoring usage data
Proceedings of the 3rd ACM SIGPLAN workshop on Evaluation and usability of programming languages and tools
How We Refactor, and How We Know It
IEEE Transactions on Software Engineering
Differential precondition checking: A lightweight, reusable analysis for refactoring tools
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Is it dangerous to use version control histories to study source code evolution?
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
A field study of refactoring challenges and benefits
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Comparing approaches to analyze refactoring activity on software repositories
Journal of Systems and Software
RefactorPad: editing source code on touchscreens
Proceedings of the 5th ACM SIGCHI symposium on Engineering interactive computing systems
Drag-and-drop refactoring: intuitive and efficient program transformation
Proceedings of the 2013 International Conference on Software Engineering
Program transformations to fix C integers
Proceedings of the 2013 International Conference on Software Engineering
Semi-automatic rename refactoring for JavaScript
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
A compositional paradigm of automating refactorings
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
A comparative study of manual and automated refactorings
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Systematic testing of refactoring engines on real software projects
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Can undergraduates script their own refactorings?
Proceedings of the 2013 ACM workshop on Workshop on refactoring tools
Hi-index | 0.00 |
Though refactoring tools have been available for more than a decade, research has shown that programmers underutilize such tools. However, little is known about why programmers do not take advantage of these tools. We have conducted a field study on programmers in their natural settings working on their code. As a result, we collected a set of interaction data from about 1268 hours of programming using our minimally intrusive data collectors. Our quantitative data show that programmers prefer lightweight methods of invoking refactorings, usually perform small changes using the refactoring tool, proceed with an automated refactoring even when it may change the behavior of the program, and rarely preview the automated refactorings. We also interviewed nine of our participants to provide deeper insight about the patterns that we observed in the behavioral data. We found that programmers use predictable automated refactorings even if they have rare bugs or change the behavior of the program. This paper reports some of the factors that affect the use of automated refactorings such as invocation method, awareness, naming, trust, and predictability and the major mismatches between programmers' expectations and automated refactorings. The results of this work contribute to producing more effective tools for refactoring complex software.