Program evolution: processes of software change
Program evolution: processes of software change
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Finding refactorings via change metrics
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Does Code Decay? Assessing the Evidence from Change Management Data
IEEE Transactions on Software Engineering
Software Evolution Observations Based on Product Release History
ICSM '97 Proceedings of the International Conference on Software Maintenance
Detection of Logical Coupling Based on Product Release History
ICSM '98 Proceedings of the International Conference on Software Maintenance
Reconstruction of Successful Software Evolution Using Clone Detection
IWPSE '03 Proceedings of the 6th International Workshop on Principles of Software Evolution
CVS Release History Data for Detecting Logical Couplings
IWPSE '03 Proceedings of the 6th International Workshop on Principles of Software Evolution
An Automatic Approach to identify Class Evolution Discontinuities
IWPSE '04 Proceedings of the Principles of Software Evolution, 7th International Workshop
Using Origin Analysis to Detect Merging and Splitting of Source Code Entities
IEEE Transactions on Software Engineering
CatchUp!: capturing and replaying refactorings to support API evolution
Proceedings of the 27th international conference on Software engineering
Extreme Programming Explained: Embrace Change (2nd Edition)
Extreme Programming Explained: Embrace Change (2nd Edition)
The Role of Refactorings in API Evolution
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Analyzing the Evolutionary History of the Logical Design of Object-Oriented Software
IEEE Transactions on Software Engineering
When Functions Change Their Names: Automatic Detection of Origin Relationships
WCRE '05 Proceedings of the 12th Working Conference on Reverse Engineering
How do APIs evolve? A story of refactoring: Research Articles
Journal of Software Maintenance and Evolution: Research and Practice - IEEE International Conference on Software Maintenance (ICSM2005)
How Are Java Software Developers Using the Eclipse IDE?
IEEE Software
Identifying Refactorings from Source-Code Changes
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
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
Breaking the barriers to successful refactoring: observations and tools for extract method
Proceedings of the 30th international conference on Software engineering
Template-based reconstruction of complex refactorings
ICSM '10 Proceedings of the 2010 IEEE International Conference on Software Maintenance
An empirical investigation into the role of API-level refactorings during software evolution
Proceedings of the 33rd International Conference on Software Engineering
How We Refactor, and How We Know It
IEEE Transactions on Software Engineering
Automated detection of refactorings in evolving components
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Reconciling manual and automatic refactoring
Proceedings of the 34th International Conference on Software Engineering
WitchDoctor: IDE support for real-time auto-completion of refactorings
Proceedings of the 34th International Conference on Software Engineering
Use, disuse, and misuse of automated refactorings
Proceedings of the 34th International Conference on 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
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Hi-index | 0.00 |
Despite the enormous success that manual and automated refactoring has enjoyed during the last decade, we know little about the practice of refactoring. Understanding the refactoring practice is important for developers, refactoring tool builders, and researchers. Many previous approaches to study refactorings are based on comparing code snapshots, which is imprecise, incomplete, and does not allow answering research questions that involve time or compare manual and automated refactoring. We present the first extended empirical study that considers both manual and automated refactoring. This study is enabled by our algorithm, which infers refactorings from continuous changes. We implemented and applied this algorithm to the code evolution data collected from 23 developers working in their natural environment for 1,520 hours. Using a corpus of 5,371 refactorings, we reveal several new facts about manual and automated refactorings. For example, more than half of the refactorings were performed manually. The popularity of automated and manual refactorings differs. More than one third of the refactorings performed by developers are clustered in time. On average, 30% of the performed refactorings do not reach the Version Control System.