Standard

fine-GRAPE : Fine-grained APi usage extractor – an approach and dataset to investigate API usage. / Sawant, Anand Ashok; Bacchelli, Alberto.

In: Empirical Software Engineering, 2016, p. 1-24.

Research output: Scientific - peer-reviewArticle

Harvard

APA

Vancouver

Author

Sawant, Anand Ashok; Bacchelli, Alberto / fine-GRAPE : Fine-grained APi usage extractor – an approach and dataset to investigate API usage.

In: Empirical Software Engineering, 2016, p. 1-24.

Research output: Scientific - peer-reviewArticle

BibTeX

@article{615c351661e44f19bae46f34b2af776c,
title = "fine-GRAPE: Fine-grained APi usage extractor – an approach and dataset to investigate API usage",
keywords = "API popularity, API usage, Application programming interface, Dataset",
author = "Sawant, {Anand Ashok} and Alberto Bacchelli",
year = "2016",
doi = "10.1007/s10664-016-9444-6",
pages = "1--24",
journal = "Empirical Software Engineering",
issn = "1382-3256",
publisher = "Springer Netherlands",

}

RIS

TY - JOUR

T1 - fine-GRAPE

T2 - Empirical Software Engineering

AU - Sawant,Anand Ashok

AU - Bacchelli,Alberto

PY - 2016

Y1 - 2016

N2 - An Application Programming Interface (API) provides a set of functionalities to a developer with the aim of enabling reuse. APIs have been investigated from different angles such as popularity usage and evolution to get a better understanding of their various characteristics. For such studies, software repositories are mined for API usage examples. However, many of the mining algorithms used for such purposes do not take type information into account. Thus making the results unreliable. In this paper, we aim to rectify this by introducing fine-GRAPE, an approach that produces fine-grained API usage information by taking advantage of type information while mining API method invocations and annotation. By means of fine-GRAPE, we investigate API usages from Java projects hosted on GitHub. We select five of the most popular APIs across GitHub Java projects and collect historical API usage information by mining both the release history of these APIs and the code history of every project that uses them. We perform two case studies on the resulting dataset. The first measures the lag time of each client. The second investigates the percentage of used API features. In the first case we find that for APIs that release more frequently clients are far less likely to upgrade to a more recent version of the API as opposed to clients of APIs that release infrequently. The second case study shows us that for most APIs there is a small number of features that is actually used and most of these features relate to those that have been introduced early in the APIs lifecycle.

AB - An Application Programming Interface (API) provides a set of functionalities to a developer with the aim of enabling reuse. APIs have been investigated from different angles such as popularity usage and evolution to get a better understanding of their various characteristics. For such studies, software repositories are mined for API usage examples. However, many of the mining algorithms used for such purposes do not take type information into account. Thus making the results unreliable. In this paper, we aim to rectify this by introducing fine-GRAPE, an approach that produces fine-grained API usage information by taking advantage of type information while mining API method invocations and annotation. By means of fine-GRAPE, we investigate API usages from Java projects hosted on GitHub. We select five of the most popular APIs across GitHub Java projects and collect historical API usage information by mining both the release history of these APIs and the code history of every project that uses them. We perform two case studies on the resulting dataset. The first measures the lag time of each client. The second investigates the percentage of used API features. In the first case we find that for APIs that release more frequently clients are far less likely to upgrade to a more recent version of the API as opposed to clients of APIs that release infrequently. The second case study shows us that for most APIs there is a small number of features that is actually used and most of these features relate to those that have been introduced early in the APIs lifecycle.

KW - API popularity

KW - API usage

KW - Application programming interface

KW - Dataset

UR - http://resolver.tudelft.nl/uuid://c3516-61e4-4f19-bae4-6f34b2af776c

UR - http://www.scopus.com/inward/record.url?scp=84982947678&partnerID=8YFLogxK

U2 - 10.1007/s10664-016-9444-6

DO - 10.1007/s10664-016-9444-6

M3 - Article

SP - 1

EP - 24

JO - Empirical Software Engineering

JF - Empirical Software Engineering

SN - 1382-3256

ER -

ID: 9303071