ABSTRACT
Library developers who have to evolve a library to accommodate changing requirements often face a dilemma: Either they implement a clean, efficient solution but risk breaking client code, or they maintain compatibility with client code, but pay with increased design complexity and thus higher maintenance costs over time.We address this dilemma by presenting a lightweight approach for evolving application programming interfaces (APIs), which does not depend on version control or configuration management systems. Instead, we capture API refactoring actions as a developer evolves an API. Users of the API can then replay the refactorings to bring their client software components up to date.We present catchup!, an implementation of our approach that captures and replays refactoring actions within an integrated development environment semi-automatically. Our experiments suggest that our approach could be valuable in practice.
- K. Chow and D. Notkin. Semi-automatic update of applications in response to library changes. In ICSM, pages 359--. IEEE Computer Society, 1996. Google ScholarDigital Library
- M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999. ISBN 0-201-48567-2.Google ScholarDigital Library
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patters. Addison-Wesley, 1995.Google ScholarDigital Library
- R. Keller and U. Hölzle. Binary component adaptation. In ECOOP'98 - Object-Oriented Programming: 12th European Conference, Brussels, Belgium, July 1998. Google ScholarDigital Library
- J. Kerievsky. Refactoring to Patterns. Addison-Wesley, 2004. Google ScholarDigital Library
- B. S. Lerner. A model for compound type changes encountered in schema evolution. ACM Trans. Database Syst., 25(1):83--127, 2000. Google ScholarDigital Library
- T. Mens and T. Tourwe. A survey of software refactoring. IEEE Transactions on Software Engineering, 30(2):126--139, Feb. 2004. Google ScholarDigital Library
- W. F. Opdyke. Refactoring Object-Oriented Frameworks. PhD thesis, University of Illinois at Urbana-Champaign, 1992. Google ScholarDigital Library
Index Terms
- CatchUp!: capturing and replaying refactorings to support API evolution
Recommendations
An empirical study on the impact of refactoring activities on evolving client-used APIs
ContextRefactoring is recognized as an effective practice to maintain evolving software systems. For software libraries, we study how library developers refactor their Application Programming Interfaces (APIs), especially when it impacts client users by ...
Refactoring-aware version control
ICSE '06: Proceedings of the 28th international conference on Software engineeringToday, refactorings are supported in some integrated development environments (IDEs). The refactoring operations can only work correctly if all source code that needs to be changed is available to the IDE. However, this precondition neither holds for ...
Design patterns for annotation-based APIs
SugarLoafPLoP '16: Proceedings of the 11th Latin-American Conference on Pattern Languages of ProgrammingWith the introduction of code annotations in popular languages like Java and C#, several frameworks and platforms adopted a metadata-based API (Application Programming Interface). By using this approach, instead of extending classes, implementing ...
Comments