Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Semi-automatic update of applications in response to library changes
ICSM '96 Proceedings of the 1996 International Conference on Software Maintenance
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Covert Java: Techniques for Decompiling, Patching, and Reverse Engineering
Covert Java: Techniques for Decompiling, Patching, and Reverse Engineering
CatchUp!: capturing and replaying refactorings to support API evolution
Proceedings of the 27th international conference on Software engineering
Refactoring-aware version control
Proceedings of the 28th international conference on Software engineering
API-Evolution Support with Diff-CatchUp
IEEE Transactions 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
Reusable enterprise metadata with pattern-based structural expressions
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
TAIC PART'10 Proceedings of the 5th international academic and industrial conference on Testing - practice and research techniques
Study of an API migration for two XML APIs
SLE'09 Proceedings of the Second international conference on Software Language 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
Migration from deprecated API in Java
Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
Hi-index | 0.00 |
When library APIs change, client code should change in response, in order to avoid erroneous behavior, compilation failures, or warnings. Previous research has introduced techniques for generating such client refactorings. This paper improves on the previous work by proposing a novel, lightweight technique that takes advantage of information that programmers can insert in the code rather than forcing them to use a different tool to re-express it. The key idea is to replace calls to deprecated methods by their bodies, where those bodies consist of the appropriate replacement code. This approach has several benefits. It requires no change in library development practice, since programmers already adjust method bodies and/or write example code, and there are no new tools or languages to learn. It does not require distribution of new artifacts, and a tool to apply it can be lightweight. We evaluated the applicability of our approach on a number of libraries and found it to to be applicable in more than 75% of the cases.