Exploring the Intent behind API Evolution: A Case Study

Reuse has significantly improved software productivity and quality. An application interacts with a reused system through its Application Programming Interfaces (API). To make the life of the application developer easier, it is desirable for the API to be both sufficiently powerful and stable. Unfortunately, in reality APIs inevitably change, to be more powerful or to remove design flaws. This may create additional work for the application developer to adapt to the changed API. Thus, to counter the negative impacts of API evolution, we need to study how and why APIs are evolved. To that end, we performed a detailed analysis of the evolution of a production API. In particular, we categorized the changes to the API according to its domain semantics and design intent. We discussed the implications of our findings for both API designers and application developers.

[1]  Miryung Kim,et al.  A graph-based approach to API usage adaptation , 2010, OOPSLA.

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

[3]  Victor R. Basili,et al.  How reuse influences productivity in object-oriented systems , 1996, CACM.

[4]  Lerina Aversano,et al.  An empirical study on the evolution of design patterns , 2007, ESEC-FSE '07.

[5]  E. Burton Swanson,et al.  Characteristics of application software maintenance , 1978, CACM.

[6]  Reidar Conradi,et al.  An empirical investigation of software reuse benefits in a large telecom product , 2008, TSEM.

[7]  Jeff H. Perkins,et al.  Automatically generating refactorings to support API evolution , 2005, PASTE '05.

[8]  David W. Binkley,et al.  Syntactic Identifier Conciseness and Consistency , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[9]  Zhenchang Xing,et al.  Refactoring Practice: How it is and How it Should be Supported - An Eclipse Case Study , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[10]  Eleni Stroulia,et al.  API-Evolution Support with Diff-CatchUp , 2007, IEEE Transactions on Software Engineering.

[11]  Daqing Hou,et al.  Studying the evolution of the Eclipse Java editor , 2007, eclipse '07.

[12]  Markus Pizka,et al.  Concise and consistent naming , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[13]  Ralph E. Johnson,et al.  How do APIs evolve? A story of refactoring , 2006, J. Softw. Maintenance Res. Pract..

[14]  Richard W. Selby,et al.  Enabling reuse-based software development of large-scale systems , 2005, IEEE Transactions on Software Engineering.

[15]  Thomas Zimmermann,et al.  How documentation evolves over time , 2007, IWPSE '07.

[16]  Tao Xie,et al.  An Empirical Study on Evolution of API Documentation , 2011, FASE.

[17]  Wei Wu,et al.  AURA: a hybrid approach to identify framework evolution , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.