Characterising deprecated Android APIs

Because of functionality evolution, or security and performance-related changes, some APIs eventually become unnecessary in a software system and thus need to be cleaned to ensure proper maintainability. Those APIs are typically marked first as deprecated APIs and, as recommended, follow through a d...

Full description

Saved in:
Bibliographic Details
Published in2018 IEEE/ACM 15th International Conference on Mining Software Repositories (MSR) pp. 254 - 264
Main Authors Li, Li, Gao, Jun, Bissyandé, Tegawendé F., Ma, Lei, Xia, Xin, Klein, Jacques
Format Conference Proceeding
LanguageEnglish
Published New York, NY, USA ACM 28.05.2018
SeriesACM Conferences
Subjects
Online AccessGet full text
ISBN9781450357166
1450357164
ISSN2574-3864
DOI10.1145/3196398.3196419

Cover

Abstract Because of functionality evolution, or security and performance-related changes, some APIs eventually become unnecessary in a software system and thus need to be cleaned to ensure proper maintainability. Those APIs are typically marked first as deprecated APIs and, as recommended, follow through a deprecated-replaceremove cycle, giving an opportunity to client application developers to smoothly adapt their code in next updates. Such a mechanism is adopted in the Android framework development where thousands of reusable APIs are made available to Android app developers. In this work, we present a research-based prototype tool called CDA and apply it to different revisions (i.e., releases or tags) of the Android framework code for characterising deprecated APIs. Based on the data mined by CDA, we then perform an exploratory study on API deprecation in the Android ecosystem and the associated challenges for maintaining quality apps. In particular, we investigate the prevalence of deprecated APIs, their annotations and documentation, their removal and consequences, their replacement messages, as well as developer reactions to API deprecation. Experimental results reveal several findings that further provide promising insights for future research directions related to deprecated Android APIs. Notably, by mining the source code of the Android framework base, we have identified three bugs related to deprecated APIs. These bugs have been quickly assigned and positively appreciated by the framework maintainers, who claim that these issues will be updated in future releases.
AbstractList Because of functionality evolution, or security and performance-related changes, some APIs eventually become unnecessary in a software system and thus need to be cleaned to ensure proper maintainability. Those APIs are typically marked first as deprecated APIs and, as recommended, follow through a deprecated-replaceremove cycle, giving an opportunity to client application developers to smoothly adapt their code in next updates. Such a mechanism is adopted in the Android framework development where thousands of reusable APIs are made available to Android app developers. In this work, we present a research-based prototype tool called CDA and apply it to different revisions (i.e., releases or tags) of the Android framework code for characterising deprecated APIs. Based on the data mined by CDA, we then perform an exploratory study on API deprecation in the Android ecosystem and the associated challenges for maintaining quality apps. In particular, we investigate the prevalence of deprecated APIs, their annotations and documentation, their removal and consequences, their replacement messages, as well as developer reactions to API deprecation. Experimental results reveal several findings that further provide promising insights for future research directions related to deprecated Android APIs. Notably, by mining the source code of the Android framework base, we have identified three bugs related to deprecated APIs. These bugs have been quickly assigned and positively appreciated by the framework maintainers, who claim that these issues will be updated in future releases.
Because of functionality evolution, or security and performance-related changes, some APIs eventually become unnecessary in a software system and thus need to be cleaned to ensure proper maintainability. Those APIs are typically marked first as deprecated APIs and, as recommended, follow through a deprecated-replace-remove cycle, giving an opportunity to client application developers to smoothly adapt their code in next updates. Such a mechanism is adopted in the Android framework development where thousands of reusable APIs are made available to Android app developers. In this work, we present a research-based prototype tool called CDA and apply it to different revisions (i.e., releases or tags) of the Android framework code for characterising deprecated APIs. Based on the data mined by CDA, we then perform an exploratory study on API deprecation in the Android ecosystem and the associated challenges for maintaining quality apps. In particular, we investigate the prevalence of deprecated APIs, their annotations and documentation, their removal and consequences, their replacement messages, as well as developer reactions to API deprecation. Experimental results reveal several findings that further provide promising insights for future research directions related to deprecated Android APIs. Notably, by mining the source code of the Android framework base, we have identified three bugs related to deprecated APIs. These bugs have been quickly assigned and positively appreciated by the framework maintainers, who claim that these issues will be updated in future releases.
Author Ma, Lei
Li, Li
Klein, Jacques
Bissyandé, Tegawendé F.
Xia, Xin
Gao, Jun
Author_xml – sequence: 1
  givenname: Li
  surname: Li
  fullname: Li, Li
  email: li.li@monash.edu
  organization: Monash University, Australia
– sequence: 2
  givenname: Jun
  surname: Gao
  fullname: Gao, Jun
  email: jun.gao@uni.lu
  organization: University of Luxembourg, Luxembourg
– sequence: 3
  givenname: Tegawendé F.
  surname: Bissyandé
  fullname: Bissyandé, Tegawendé F.
  email: tegawende.bissyande@uni.lu
  organization: University of Luxembourg, Luxembourg
– sequence: 4
  givenname: Lei
  surname: Ma
  fullname: Ma, Lei
  email: malei@hit.edu.cn
  organization: Harbin Institute of Technology, China
– sequence: 5
  givenname: Xin
  surname: Xia
  fullname: Xia, Xin
  email: xin.xia@monash.edu
  organization: Monash University, Australia
– sequence: 6
  givenname: Jacques
  surname: Klein
  fullname: Klein, Jacques
  email: jacques.klein@uni.lu
  organization: University of Luxembourg, Luxembourg
BookMark eNqNkLlOw0AURYdNIgTXFDSpEI3NbG-WMrJYIkWCAurRLC9gIHY0dsPf4yiuqKhOca5ucS7Iadu1SMgVoxVjEu4Es0pYU-0pmT0ihdVmFFSAZkodkxkHLUthlDz5485J0feflFKujGRMz8hN_eGzjwPmpm_a90XCXcboB0yLZZty14x8WfWX5Gzjv3ssJs7J28P9a_1Urp8fV_VyXXpuYSiVT1GBScaABMu55lSH4AMCRGm9R6vRaInciqACCMpoUsqgiR6sDUnMyfXht0FEt8vN1ucfZ8ACp2a0twfr49aFrvvqHaNuH8VNUdwUZZxW_5y6kBvciF-nYFzF
CODEN IEEPAD
ContentType Conference Proceeding
Copyright 2018 ACM
Copyright_xml – notice: 2018 ACM
DBID 6IE
6IL
CBEJK
RIE
RIL
DOI 10.1145/3196398.3196419
DatabaseName IEEE Electronic Library (IEL) Conference Proceedings
IEEE Proceedings Order Plan All Online (POP All Online) 1998-present by volume
IEEE Xplore All Conference Proceedings
IEEE Electronic Library (IEL)
IEEE Proceedings Order Plans (POP All) 1998-Present
DatabaseTitleList

Database_xml – sequence: 1
  dbid: RIE
  name: IEEE Electronic Library (IEL)
  url: https://proxy.k.utb.cz/login?url=https://ieeexplore.ieee.org/
  sourceTypes: Publisher
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISBN 9781450357166
1450357164
EISSN 2574-3864
EndPage 264
ExternalDocumentID 8595208
Genre orig-research
GroupedDBID 6IE
6IF
6IL
6IN
AAJGR
ABLEC
ACM
ADPZR
ALMA_UNASSIGNED_HOLDINGS
APO
BEFXN
BFFAM
BGNUA
BKEBE
BPEOZ
CBEJK
GUFHI
IEGSK
LHSKQ
OCL
RIB
RIC
RIE
RIL
AAWTH
ADZIZ
CHZPO
ID FETCH-LOGICAL-a295t-6adc658d885459227207bbabe55c49aae97e874e293b6b53010d668e8ca599bd3
IEDL.DBID RIE
ISBN 9781450357166
1450357164
IngestDate Wed Aug 27 02:59:16 EDT 2025
Fri Sep 13 11:04:49 EDT 2024
IsDoiOpenAccess false
IsOpenAccess true
IsPeerReviewed false
IsScholarly true
Language English
License Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Permissions@acm.org.
LinkModel DirectLink
MeetingName ICSE '18: 40th International Conference on Software Engineering
MergedId FETCHMERGED-LOGICAL-a295t-6adc658d885459227207bbabe55c49aae97e874e293b6b53010d668e8ca599bd3
PageCount 11
ParticipantIDs acm_books_10_1145_3196398_3196419
acm_books_10_1145_3196398_3196419_brief
ieee_primary_8595208
PublicationCentury 2000
PublicationDate 20180528
2018-May
PublicationDateYYYYMMDD 2018-05-28
2018-05-01
PublicationDate_xml – month: 05
  year: 2018
  text: 20180528
  day: 28
PublicationDecade 2010
PublicationPlace New York, NY, USA
PublicationPlace_xml – name: New York, NY, USA
PublicationSeriesTitle ACM Conferences
PublicationTitle 2018 IEEE/ACM 15th International Conference on Mining Software Repositories (MSR)
PublicationTitleAbbrev MSR
PublicationYear 2018
Publisher ACM
Publisher_xml – name: ACM
SSID ssj0002684117
ssj0003211714
Score 2.3694136
Snippet Because of functionality evolution, or security and performance-related changes, some APIs eventually become unnecessary in a software system and thus need to...
SourceID ieee
acm
SourceType Publisher
StartPage 254
SubjectTerms Android
CDA
Computer bugs
Deprecated APIs
Documentation
Java
Prototypes
Security
Software
Title Characterising deprecated Android APIs
URI https://ieeexplore.ieee.org/document/8595208
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
link http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwjV1LSwMxEB7anjxVbcX6YgXRi7vdR5JNztVShUoPFnpbJo-FIrbSbi_-epPdbYsi6Gkf5BA-Jswk-b5vAG6Q5SqUsfbTMEefoGE-5knkU0FjHXFNsVS9j1_YaEqeZ3TWgPudFsYYU5LPTOBey7t8vVQbd1TWd15csVP2Nm2YVVqt3XmKcy3Zaibdd2J3NmlEajefiNB-GWyCB6UHlXPWaaJ6_9ZUpcwpwzaMt7OpqCRvwaaQgfr8YdT43-keQnev3vMmu7x0BA2zOIb2tn2DV6_mDtwO9mbNdqD34EixjiClPUdzXM7tc_K07sJ0-Pg6GPl12wQfY0ELn6FWtq7QnNvqSMTuojWVEqWhVBGBaERqeEqMTfSSSWpXeKgZ44YrpEJInZxAa7FcmFPwYmQURUgxRkW0ETznxGnQkUgaScp6cG0xzNx-YJ1VEmea1ThnNc49uPtzTCZXc5P3oONAzD4qn42sxu_s99_ncGCLF16RDy-gVaw25tIWCIW8KiPjC4LHspM
linkProvider IEEE
linkToHtml http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwjV3PT8IwFH5BPOgJFYz4cyZGLw620XbtGSWgQDhAwm15XbuEGMHAuPjX224DojHRU9elh-ZLm_faft_3AO6QJbEnA-WGXoIuQc1cTFq-SwUNlM8VxUz1Phiy7oS8TOm0BI9bLYzWOiOf6Yb9zN7y1SJe26uypvXiCqyyd9_EfUJztdb2RsX6lmxUk7bfMmeb0CeFn49PaDNbboI3Mhcq662zh_H7t7IqWVTpVGCwmU9OJnlrrFPZiD9_WDX-d8JHUNvp95zRNjIdQ0nPT6CyKeDgFPu5CvftnV2zGeg8WVqspUgpxxIdFzPTjnqrGkw6z-N21y0KJ7gYCJq6DFVsMgvFuUFJBPapNZQSpaY0JgJRi1DzkGgT6iWT1OxxTzHGNY-RCiFV6xTK88Vcn4ETIKMoPIoBxkRpwRNOrAodiaS-pKwOtwbDyJ4IVlEucqZRgXNU4FyHhz_HRHI500kdqhbE6CN32ogK_M5__30DB93xoB_1e8PXCzg0qQzPqYiXUE6Xa31l0oVUXmer5AsUirXg
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=proceeding&rft.title=Proceedings+of+the+15th+International+Conference+on+Mining+Software+Repositories&rft.atitle=Characterising+deprecated+Android+APIs&rft.au=Li%2C+Li&rft.au=Gao%2C+Jun&rft.au=Bissyand%C3%A9%2C+Tegawend%C3%A9+F.&rft.au=Ma%2C+Lei&rft.series=ACM+Conferences&rft.date=2018-05-28&rft.pub=ACM&rft.isbn=9781450357166&rft.spage=254&rft.epage=264&rft_id=info:doi/10.1145%2F3196398.3196419
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9781450357166/lc.gif&client=summon&freeimage=true
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9781450357166/mc.gif&client=summon&freeimage=true
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=9781450357166/sc.gif&client=summon&freeimage=true