Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
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
Finding refactorings via change metrics
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Evolving Object-Oriented Designs with Refactorings
Automated Software Engineering
On the Resemblance and Containment of Documents
SEQUENCES '97 Proceedings of the Compression and Complexity of Sequences 1997
Practical analysis for refactoring
Practical analysis for refactoring
Reconstruction of Successful Software Evolution Using Clone Detection
IWPSE '03 Proceedings of the 6th International Workshop on Principles of Software Evolution
Refactoring for generalization using type constraints
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Automatic detection of fragments in dynamically generated web pages
Proceedings of the 13th international conference on World Wide Web
An Automatic Approach to identify Class Evolution Discontinuities
IWPSE '04 Proceedings of the Principles of Software Evolution, 7th International Workshop
Converting Java classes to use generics
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Converting java programs to use generic libraries
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Using Origin Analysis to Detect Merging and Splitting of Source Code Entities
IEEE Transactions on Software Engineering
Detecting and Visualizing Refactorings from Software Archives
IWPC '05 Proceedings of the 13th International Workshop on Program Comprehension
CatchUp!: capturing and replaying refactorings to support API evolution
Proceedings of the 27th international conference on Software engineering
The Role of Refactorings in API Evolution
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Refactoring support for class library migration
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Redundancy elimination within large collections of files
ATEC '04 Proceedings of the annual conference on USENIX Annual Technical Conference
CP-Miner: a tool for finding copy-paste and related bugs in operating system code
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
Automated upgrading of component-based applications
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
MolhadoRef: a refactoring-aware software configuration management tool
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Automatic Inference of Structural Changes for Matching across Program Versions
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Refactoring-Aware Configuration Management for Object-Oriented Programs
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Mining a Change-Based Software Repository
MSR '07 Proceedings of the Fourth International Workshop on Mining Software Repositories
Automated detection of api refactorings in libraries
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Journal of Software Maintenance and Evolution: Research and Practice
ReBA: refactoring-aware binary adaptation of evolving libraries
Proceedings of the 30th international conference on Software engineering
Mining framework usage changes from instantiation code
Proceedings of the 30th international conference on Software engineering
Recommending adaptive changes for framework evolution
Proceedings of the 30th international conference on Software engineering
Annotation refactoring: inferring upgrade transformations for legacy applications
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Practical refactoring-based framework upgrade
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Test code differencing for test-driven refactoring automation
ACM SIGSOFT Software Engineering Notes
An Introduction to Grammar Convergence
IFM '09 Proceedings of the 7th International Conference on Integrated Formal Methods
How we refactor, and how we know it
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Gathering refactoring data: a comparison of four methods
Proceedings of the 2nd Workshop on Refactoring Tools
Proceedings of the 10th ACM/IFIP/USENIX International Conference on Middleware
Program refactoring, program synthesis, and model-driven development
CC'07 Proceedings of the 16th international conference on Compiler construction
Refactoring tools: report on the 1st workshop WRT at ECOOP 2007
ECOOP'07 Proceedings of the 2007 conference on Object-oriented technology
Using twinning to adapt programs to alternative APIs
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
AURA: a hybrid approach to identify framework evolution
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Middleware'09 Proceedings of the ACM/IFIP/USENIX 10th international conference on Middleware
Do metrics help to identify refactoring?
Proceedings of the Joint ERCIM Workshop on Software Evolution (EVOL) and International Workshop on Principles of Software Evolution (IWPSE)
A graph-based approach to API usage adaptation
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Refactoring references for library migration
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Ref-Finder: a refactoring reconstruction tool based on logic query templates
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
An exploratory study of identifier renamings
Proceedings of the 8th Working Conference on Mining Software Repositories
Comparison of similarity metrics for refactoring detection
Proceedings of the 8th Working Conference on Mining Software Repositories
An empirical investigation into the role of API-level refactorings during software evolution
Proceedings of the 33rd International Conference on Software Engineering
Non-essential changes in version histories
Proceedings of the 33rd International Conference on Software Engineering
A case study on refactoring in Haskell programs
Proceedings of the 33rd International Conference on Software Engineering
Recommending Adaptive Changes for Framework Evolution
ACM Transactions on Software Engineering and Methodology (TOSEM)
eXpress: guided path exploration for efficient regression test generation
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Historage: fine-grained version control system for Java
Proceedings of the 12th International Workshop on Principles of Software Evolution and the 7th annual ERCIM Workshop on Software Evolution
Mining evolution of object usage
Proceedings of the 25th European conference on Object-oriented programming
iDiff: Interaction-based program differencing tool
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
WitchDoctor: IDE support for real-time auto-completion of refactorings
Proceedings of the 34th International Conference on Software Engineering
A history-based matching approach to identification of framework evolution
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
An introduction to model versioning
SFM'12 Proceedings of the 12th international conference on Formal Methods for the Design of Computer, Communication, and Software Systems: formal methods for model-driven engineering
A field study of refactoring challenges and benefits
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Seeking the ground truth: a retroactive study on the evolution and migration of software libraries
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
How do developers react to API deprecation?: the case of a smalltalk ecosystem
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
A posteriori operation detection in evolving software models
Journal of Systems and Software
Identification of generalization refactoring opportunities
Automated Software Engineering
Comparing approaches to analyze refactoring activity on software repositories
Journal of Systems and Software
Search-based refactoring detection
Proceedings of the 15th annual conference companion on Genetic and evolutionary computation
Automatically repairing broken workflows for evolving GUI applications
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Inferring likely mappings between APIs
Proceedings of the 2013 International Conference on Software Engineering
Temporal code completion and navigation
Proceedings of the 2013 International Conference on Software Engineering
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
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
Is this a bug or an obsolete test?
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Invited talk on refactoring: from concurrency to mobility
Proceedings of the 2013 ACM workshop on Mobile development lifecycle
A multidimensional empirical study on refactoring activity
CASCON '13 Proceedings of the 2013 Conference of the Center for Advanced Studies on Collaborative Research
Journal of Systems and Software
Investigating the evolution of code smells in object-oriented systems
Innovations in Systems and Software Engineering
Hi-index | 0.00 |
One of the costs of reusing software components is updating applications to use the new version of the components. Updating an application can be error-prone, tedious, and disruptive of the development process. Our previous study showed that more than 80% of the disruptive changes in five different components were caused by refactorings. If the refactorings that happened between two versions of a component could be automatically detected, a refactoring tool could replay them on applications. We present an algorithm that detects refactorings performed during component evolution. Our algorithm uses a combination of a fast syntactic analysis to detect refactoring candidates and a more expensive semantic analysis to refine the results. The experiments on components ranging from 17 KLOC to 352 KLOC show that our algorithm detects refactorings in real-world components with accuracy over 85%.