API compatibility issues in Android: Causes and effectiveness of data-driven detection techniques

Simone Scalabrino,Gabriele Bavota,Mario Linares-Vásquez,Valentina Piantadosi,Michele Lanza,Rocco Oliveto
DOI: https://doi.org/10.1007/s10664-020-09877-w
IF: 3.762
2020-10-07
Empirical Software Engineering
Abstract:Android fragmentation is a well-known issue referring to the adoption of different versions in the multitude of devices supporting such an operating system. Each Android version features a set of APIs provided to developers. These APIs are subject to changes and may cause compatibility issues. To support app developers, approaches have been proposed to automatically identify API compatibility issues. <span class="u-small-caps">CiD</span>, the state-of-the-art approach, is a data-driven solution learning how to detect those issues by analyzing the change history of Android APIs ("<i>API side</i>" learning). In this paper (extension of our MSR 2019 paper), we present an alternative data-driven approach, named <span class="u-small-caps">ACRyL</span>. <span class="u-small-caps">ACRyL</span> learns from changes implemented in apps in response to API changes ("<i>client side</i>" learning). When comparing these two solutions on 668 apps, for a total of 11,863 snapshots, we found that there is no clear winner, since the two techniques are highly complementary, and none of them provides a comprehensive support in detecting API compatibility issues: <span class="u-small-caps">ACRyL</span> achieves a precision of 7.0% (28.0%, when considering only the severe warnings), while <span class="u-small-caps">CiD</span> achieves a precision of 18.4%. This calls for more research in this field, and led us to run a second empirical study in which we manually analyze 500 pull-requests likely related to the fixing of compatibility issues, documenting the <i>root cause</i> behind the fixed issue. The most common causes are related to changes in the Android APIs (<span class="mathjax-tex">\(\sim \)</span> 87%), while about 13% of the issues are related to external causes, such as build and distribution, dependencies, and the app itself. The provided empirical knowledge can inform the building of better tools for the detection of API compatibility issues.
computer science, software engineering
What problem does this paper attempt to address?