The role of refactorings in API evolution

Frameworks and libraries change their APIs. Migrating an application to the new API is tedious and disrupts the development process. Although some tools and ideas have been proposed to solve the evolution of APIs, most updates are done manually. To better understand the requirements for migration tools we studied the API changes of three frameworks and one library. We discovered that the changes that break existing applications are not random, but they tend to fall into particular categories. Over 80% of these changes are refactorings. This suggests that refactoring-based migration tools should be used to update applications.

[1]  Stefan Roock,et al.  Refactoring Tags for automatic refactoring of framework dependent applications , 2002 .

[2]  Serge Demeyer,et al.  Reconstruction of successful software evolution using clone detection , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[3]  Jan Bosch,et al.  Framework integration problems, causes, solutions , 1999, CACM.

[4]  Justin O. Graver The evolution of an object‐oriented compiler framework , 1992, Softw. Pract. Exp..

[5]  David Notkin,et al.  Semi-automatic update of applications in response to library changes , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[6]  Michael Mattsson,et al.  Frameworks as Components : A Classification of Framework Evolution , 1998 .

[7]  Oscar Nierstrasz,et al.  Finding refactorings via change metrics , 2000, OOPSLA '00.

[8]  Don S. Batory,et al.  Evolving Object-Oriented Designs with Refactorings , 2004, Automated Software Engineering.

[9]  Oscar Nierstrasz,et al.  Object-oriented reengineering patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[10]  Kent L. Beck Smalltalk best practice patterns , 1996 .

[11]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[12]  MeyerBertrand,et al.  Design by Contract , 1997 .

[13]  Ned Chapin,et al.  Types of software evolution and software maintenance , 2001, J. Softw. Maintenance Res. Pract..

[14]  Michael W. Godfrey,et al.  Using origin analysis to detect merging and splitting of source code entities , 2005, IEEE Transactions on Software Engineering.

[15]  Tom Mens,et al.  Automated support for framework-based software , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[16]  Kim Mens,et al.  Vrije Universiteit Brussel Faculteit Wetenschappen Reuse Contracts: Managing the Evolution of Reusable Assets Reuse Contracts: Managing the Evolution of Reusable Assets , 2022 .

[17]  J. Henkel,et al.  CatchUp! Capturing and replaying refactorings to support API evolution , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[18]  Giuliano Antoniol,et al.  An automatic approach to identify class evolution discontinuities , 2004, Proceedings. 7th International Workshop on Principles of Software Evolution, 2004..

[19]  Urs Hölzle,et al.  Binary Component Adaptation , 1997, ECOOP.

[20]  Frank Tip,et al.  Refactoring support for class library migration , 2005, OOPSLA '05.

[21]  E HaleJoanne,et al.  Types of software evolution and software maintenance , 2001 .

[22]  Bennet P. Lientz,et al.  Software Maintenance Management: A Study of the Maintenance of Computer Application Software in 487 Data Processing Organizations , 1980 .

[23]  Stéphane Ducasse,et al.  Yesterday's Weather: guiding early reverse engineering efforts by summarizing the evolution of changes , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..