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

An Empirical Study of API Stability and Adoption in the Android Ecosystem
复制标题

DOI:
10.1109/icsm.2013.18
复制
发表时间:
2013-09
期刊:
2013 IEEE International Conference on Software Maintenance
影响因子:
--
通讯作者:
Tyler McDonnell;Baishakhi Ray;Miryung Kim
Tyler McDonnell;Baishakhi Ray;Miryung Kim
中科院分区:
其他
文献类型:
--
作者:
Tyler McDonnell;Baishakhi Ray;Miryung Kim

文献摘要

被引文献

相似文献

当API进化时,客户对其应用程序进行相应的更改,以利用新的或更新的API。尽管新的或更新的API受益匪浅,但开发人员通常会采用新API的速度很慢。作为了解API进化对软件生态系统的影响的第一步,我们使用GitHub中的版本历史记录数据进行了深入的案例研究,对Android API和依赖应用程序的共进化行为进行了深入研究。我们的研究证实,Android平均每月以115个API更新的速度发展。但是,客户的采用并没有赶上API进化的速度。客户端应用中约有28%的API参考的中位滞后时间为16个月。最终,过时的API使用情况中有22%升级以使用较新的API版本,但是传播时间约为14个月,比平均API释放间隔慢得多(3个月)。客户使用的快速不断发展的API比缓慢发展的API使用更多,但是对于快速发展的API来说,采用新版本所花费的时间更长。此外,API使用适应代码比没有API使用适应的api更容易发生缺陷。这可能表明开发人员避免了API不稳定性。
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.