An Empirical Study of API Stability and Adoption in the Android Ecosystem

When APIs evolve, clients make corresponding changes to their applications to utilize new or updated APIs. Despite the benefits of new or updated APIs, developers are often slow to adopt the new APIs. As a first step toward understanding the impact of API evolution on software ecosystems, we conduct an in-depth case study of the co-evolution behavior of Android API and dependent applications using the version history data found in github. Our study confirms that Android is evolving fast at a rate of 115 API updates per month on average. Client adoption, however, is not catching up with the pace of API evolution. About 28% of API references in client applications are outdated with a median lagging time of 16 months. 22% of outdated API usages eventually upgrade to use newer API versions, but the propagation time is about 14 months, much slower than the average API release interval (3 months). Fast evolving APIs are used more by clients than slow evolving APIs but the average time taken to adopt new versions is longer for fast evolving APIs. Further, API usage adaptation code is more defect prone than the one without API usage adaptation. This may indicate that developers avoid API instability.

[1]  Miryung Kim,et al.  An empirical investigation into the role of API-level refactorings during software evolution , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[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]  Romain Robbes,et al.  How do developers react to API deprecation?: the case of a smalltalk ecosystem , 2012, SIGSOFT FSE.

[4]  Audris Mockus,et al.  Identifying reasons for software changes using historic databases , 2000, Proceedings 2000 International Conference on Software Maintenance.

[5]  Ahmed E. Hassan,et al.  Understanding reuse in the Android Market , 2012, 2012 20th IEEE International Conference on Program Comprehension (ICPC).

[6]  Robert J. Walker,et al.  Seeking the ground truth: a retroactive study on the evolution and migration of software libraries , 2012, SIGSOFT FSE.

[7]  Stas Negara,et al.  ReBA , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[8]  Sue Black,et al.  Computing ripple effect for software maintenance , 2001, J. Softw. Maintenance Res. Pract..

[9]  Mircea Lungu,et al.  Towards reverse engineering software ecosystems , 2008, 2008 IEEE International Conference on Software Maintenance.

[10]  Ying Zou,et al.  Exploring the Development of Micro-apps: A Case Study on the BlackBerry and Android Platforms , 2011, 2011 IEEE 11th International Working Conference on Source Code Analysis and Manipulation.

[11]  Yuval Elovici,et al.  Automated Static Code Analysis for Classifying Android Applications Using Machine Learning , 2010, 2010 International Conference on Computational Intelligence and Security.

[12]  Ralph E. Johnson,et al.  Refactoring-Aware Configuration Management for Object-Oriented Programs , 2007, 29th International Conference on Software Engineering (ICSE'07).

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

[14]  Daqing Hou,et al.  Exploring the Intent behind API Evolution: A Case Study , 2011, 2011 18th Working Conference on Reverse Engineering.

[15]  Torbjörn Ekman,et al.  Refactoring-aware versioning in Eclipse , 2004, Electron. Notes Theor. Comput. Sci..

[16]  Miryung Kim,et al.  Automatic Inference of Structural Changes for Matching across Program Versions , 2007, 29th International Conference on Software Engineering (ICSE'07).

[17]  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.

[18]  Stephan Diehl,et al.  Are refactorings less error-prone than other changes? , 2006, MSR '06.

[19]  Ming Zhang,et al.  Bootstrapping energy debugging on smartphones: a first look at energy bugs in mobile devices , 2011, HotNets-X.

[20]  Ralph E. Johnson,et al.  The role of refactorings in API evolution , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[21]  Igor Santos,et al.  On the automatic categorisation of android applications , 2012, 2012 IEEE Consumer Communications and Networking Conference (CCNC).

[22]  Stephen S. Yau,et al.  Ripple effect analysis of software maintenance , 1978, COMPSAC.

[23]  J. H. Zar,et al.  Significance Testing of the Spearman Rank Correlation Coefficient , 1972 .