Leif Bonorden & Matthias Riebisch
API Deprecation:
A Systematic Mapping Study
Overview
▪ API Deprecation
▪ Systematic Mapping Process & Results
▪ Research Gaps
SEAA 2022 Bonorden & Riebisch: API Deprecation 2
Application Programming Interface
boundary across which a software application uses
facilities of programming languages to invoke software services
SEAA 2022 Bonorden & Riebisch: API Deprecation 3
API
[ISO/IEC 13522-6]
request
response
API
SEAA 2022 Bonorden & Riebisch: API Deprecation 4
API
client
API
supplier
request
response
API: static
SEAA 2022 Bonorden & Riebisch: API Deprecation 5
client
library,
framework
SDK
same environment
(e.g., programming language)
request
response
API: remote
SEAA 2022 Bonorden & Riebisch: API Deprecation 6
client
web service,
microservice
means of
network communication
dep·re·cate
to express disapproval of
SEAA 2022 Bonorden & Riebisch: API Deprecation 7
[Merriam-Webster.com Dictionary]
Deprecation
Deprecation
Programmers are sometimes discouraged from using
certain program elements
(modules, classes, interfaces, fields, methods, and constructors)
because they are considered dangerous or
because a better alternative exists.
The annotation interface Deprecated allows a compiler
to warn about uses of these program elements.
SEAA 2022 Bonorden & Riebisch: API Deprecation 8
[Java Language Specification]
request
response
API
SEAA 2022 Bonorden & Riebisch: API Deprecation 9
API
client
API
supplier
Deprecation
terminally deprecated
intended to be removed in a future release
SEAA 2022 Bonorden & Riebisch: API Deprecation 10
[Java Language Specification]
Overview
▪ API Deprecation
▸ Systematic Mapping Process & Results
▪ Research Gaps
SEAA 2022 Bonorden & Riebisch: API Deprecation 11
Systematic Mapping Process
SEAA 2022 Bonorden & Riebisch: API Deprecation 12
State of Research: Years of Publication
SEAA 2022 Bonorden & Riebisch: API Deprecation 13
State of Research: Beneficiaries (Who?)
SEAA 2022 Bonorden & Riebisch: API Deprecation 14
State of Research: Contribution (What?)
SEAA 2022 Bonorden & Riebisch: API Deprecation 15
State of Research: Research Strategies (How?)
SEAA 2022 Bonorden & Riebisch: API Deprecation 16
State of Research: API types
SEAA 2022 Bonorden & Riebisch: API Deprecation 17
State of Research: Deprecation aspects
SEAA 2022 Bonorden & Riebisch: API Deprecation 18
State of Research: Map
SEAA 2022 Bonorden & Riebisch: API Deprecation 19
Overview
▪ API Deprecation
▪ Systematic Mapping Process & Results
▸ Research Gaps
SEAA 2022 Bonorden & Riebisch: API Deprecation 20
Research Gaps: Uncharted Territory
only 1 of 36 publications studies
the deprecation of remote APIs
although common in modern systems
SEAA 2022 Bonorden & Riebisch: API Deprecation 21
Research Gaps: Out of Focus
26 of 36 publications study the deprecation of Java APIs
(maybe) because deprecation mechanisms
are quite comprehensive in Java
SEAA 2022 Bonorden & Riebisch: API Deprecation 22
Research Gaps: Unbridged Gap
only 4 of 36 publications consider suppliers and clients
often seen as opponent parties
SEAA 2022 Bonorden & Riebisch: API Deprecation 23
Research Gaps: Human-out-of-the-loop
only 1 of 36 publications studies real situations
research almost only with (open-source-)data
SEAA 2022 Bonorden & Riebisch: API Deprecation 24
Research Gaps: Prevention Better Than Cure
none of the 36 publications studies prevention/preparation
symptoms are treated, but causes are not addressed
SEAA 2022 Bonorden & Riebisch: API Deprecation 25
Overview
▪ API Deprecation
▪ Systematic Mapping Process & Results
▪ Research Gaps
SEAA 2022 Bonorden & Riebisch: API Deprecation 26
Research Gaps
Uncharted Territory: static vs. remote APIs
Out of Focus: only a few programming languages
Unbridged Gap: suppliers and clients
Human-out-of-the-Loop: data research
Prevention Better Than Cure: causes of deprecation
SEAA 2022 Bonorden & Riebisch: API Deprecation 27
State of Research
Bonorden & Riebisch: API Deprecation 28
SEAA 2022
Background
SEAA 2022 Bonorden & Riebisch: API Deprecation 29
The Who, What, How of SE Research
M.-A. Storey, N. A. Ernst, C. Williams, E. Kalliamvakou (2020)
The Who, What, How of Software Engineering Research:
A Socio-technical Framework
Empirical Software Engineering, 25(5), 4097–4129
The Who, What, How of SE Research: How?
SEAA 2022 Bonorden & Riebisch: API Deprecation 31
Empirical Strategies
The Who, What, How of SE Research: How?
SEAA 2022 Bonorden & Riebisch: API Deprecation 32
Non-Empirical Strategies
Formal Theory
Meta
Systematic Mapping Process
SEAA 2022 Bonorden & Riebisch: API Deprecation 33
Systematic Mapping Process
SEAA 2022 Bonorden & Riebisch: API Deprecation 34
Systematic Mapping Process: Database Search
SEAA 2022 Bonorden & Riebisch: API Deprecation 35
Search String: api AND deprecat*
Databases: ACM Digital Library, IEEE Xplore,
Microsoft Academic,
Elsevier ScienceDirect,
Web Of Science
Systematic Mapping Process
SEAA 2022 Bonorden & Riebisch: API Deprecation 36
Systematic Mapping Process: Study Selection
SEAA 2022 Bonorden & Riebisch: API Deprecation 37
Inclusion Criteria:
• journal, workshop, conference
• discussion of API deprecation
• English
Systematic Mapping Process: Study Selection
SEAA 2022 Bonorden & Riebisch: API Deprecation 38
Exclusion Criteria:
• not peer-reviewed
• no research of API deprecation
• no new results
• included in another study
Systematic Mapping Process
SEAA 2022 Bonorden & Riebisch: API Deprecation 39
Systematic Mapping Process: Snowballing
SEAA 2022 Bonorden & Riebisch: API Deprecation 40
S. A. Spoon (2007)
Fine-grained api evolution for method deprecation
and anti-deprecation
Int. Workshop on Foundations and Developments
of Object-Oriented Languages
Systematic Mapping Process
SEAA 2022 Bonorden & Riebisch: API Deprecation 41
Systematic Mapping Process: Data Extraction
SEAA 2022 Bonorden & Riebisch: API Deprecation 42
Data Extraction:
• data extraction form
• extraction by first author,
revision by second author
• disagreements solved by discussion
Research Directions: Examples
SEAA 2022 Bonorden & Riebisch: API Deprecation 43
Examples: Usage of Deprecation Features
D. Qiu, B. Li, H. Leung (2016)
Understanding the API usage in Java
G. Brito, A. Hora, M. Tulio Valente, R. Robbes (2018)
On the use of replacement messages in API deprecation: An empirical study
L. Li, J. Gao, T. F. Bissyandé, L. Ma, X. Xia, J. Klein (2020)
CDA: Characterising Deprecated Android APIs
R. Nascimento, E. Figueiredo, A. Hora (2021)
JavaScript API Deprecation Landscape: A Survey and Mining Study
SEAA 2022 Bonorden & Riebisch: API Deprecation 44
Examples: Reaction to Deprecation
R. Robbes, M. Lungu, D. Röthlisberger (2012)
How Do Developers React to API Deprecation?
The Case of a Smalltalk Ecosystem
A. A. Sawant, R. Robbes, A. Bacchelli (2018)
On the reaction to deprecation of clients of 4+1 popular Java APIs and the JDK
A. A. Sawant, G. Huang, G. Vilen, S. Stojkovski, A. Bacchelli (2019)
To react, or not to react: Patterns of reaction to API deprecation
SEAA 2022 Bonorden & Riebisch: API Deprecation 45
Examples: Updating Calls to Deprecated APIs
Y. Xi, L. Shen, Y. Gui, W. Zhao (2019)
Migrating Deprecated API to Documented Replacement: Patterns and Tool
S. Haryono, F. Thung, H. Kang, L. Serrano, G. Muller, J. Lawall, D. Lo, L. Jiang (2020)
Automatic Android Deprecated-API Usage Update
by Learning from Single Updated Example
F. Thung, S. Haryono, L. Serrano, G. Muller, J. Lawall, D. Lo, L. Jiang (2020)
Automated Deprecated-API Usage Update for Android Apps: How Far are We?
S. Haryono, F. Thung, D. Lo, L. Jiang, J. Lawall, H. Kang, L. Serrano, G. Muller (2021)
AndroEvolve: Automated Update for Android Deprecated-API Usages
SEAA 2022 Bonorden & Riebisch: API Deprecation 46
Examples: Deprecation of REST APIs
J. Yasmin, Y. Tian, J. Yang (2020)
A First Look at the Deprecation of RESTful APIs: An Empirical Study
SEAA 2022 Bonorden & Riebisch: API Deprecation 47

API Deprecation: A Systematic Mapping Study

  • 1.
    Leif Bonorden &Matthias Riebisch API Deprecation: A Systematic Mapping Study
  • 2.
    Overview ▪ API Deprecation ▪Systematic Mapping Process & Results ▪ Research Gaps SEAA 2022 Bonorden & Riebisch: API Deprecation 2
  • 3.
    Application Programming Interface boundaryacross which a software application uses facilities of programming languages to invoke software services SEAA 2022 Bonorden & Riebisch: API Deprecation 3 API [ISO/IEC 13522-6]
  • 4.
    request response API SEAA 2022 Bonorden& Riebisch: API Deprecation 4 API client API supplier
  • 5.
    request response API: static SEAA 2022Bonorden & Riebisch: API Deprecation 5 client library, framework SDK same environment (e.g., programming language)
  • 6.
    request response API: remote SEAA 2022Bonorden & Riebisch: API Deprecation 6 client web service, microservice means of network communication
  • 7.
    dep·re·cate to express disapprovalof SEAA 2022 Bonorden & Riebisch: API Deprecation 7 [Merriam-Webster.com Dictionary] Deprecation
  • 8.
    Deprecation Programmers are sometimesdiscouraged from using certain program elements (modules, classes, interfaces, fields, methods, and constructors) because they are considered dangerous or because a better alternative exists. The annotation interface Deprecated allows a compiler to warn about uses of these program elements. SEAA 2022 Bonorden & Riebisch: API Deprecation 8 [Java Language Specification]
  • 9.
    request response API SEAA 2022 Bonorden& Riebisch: API Deprecation 9 API client API supplier
  • 10.
    Deprecation terminally deprecated intended tobe removed in a future release SEAA 2022 Bonorden & Riebisch: API Deprecation 10 [Java Language Specification]
  • 11.
    Overview ▪ API Deprecation ▸Systematic Mapping Process & Results ▪ Research Gaps SEAA 2022 Bonorden & Riebisch: API Deprecation 11
  • 12.
    Systematic Mapping Process SEAA2022 Bonorden & Riebisch: API Deprecation 12
  • 13.
    State of Research:Years of Publication SEAA 2022 Bonorden & Riebisch: API Deprecation 13
  • 14.
    State of Research:Beneficiaries (Who?) SEAA 2022 Bonorden & Riebisch: API Deprecation 14
  • 15.
    State of Research:Contribution (What?) SEAA 2022 Bonorden & Riebisch: API Deprecation 15
  • 16.
    State of Research:Research Strategies (How?) SEAA 2022 Bonorden & Riebisch: API Deprecation 16
  • 17.
    State of Research:API types SEAA 2022 Bonorden & Riebisch: API Deprecation 17
  • 18.
    State of Research:Deprecation aspects SEAA 2022 Bonorden & Riebisch: API Deprecation 18
  • 19.
    State of Research:Map SEAA 2022 Bonorden & Riebisch: API Deprecation 19
  • 20.
    Overview ▪ API Deprecation ▪Systematic Mapping Process & Results ▸ Research Gaps SEAA 2022 Bonorden & Riebisch: API Deprecation 20
  • 21.
    Research Gaps: UnchartedTerritory only 1 of 36 publications studies the deprecation of remote APIs although common in modern systems SEAA 2022 Bonorden & Riebisch: API Deprecation 21
  • 22.
    Research Gaps: Outof Focus 26 of 36 publications study the deprecation of Java APIs (maybe) because deprecation mechanisms are quite comprehensive in Java SEAA 2022 Bonorden & Riebisch: API Deprecation 22
  • 23.
    Research Gaps: UnbridgedGap only 4 of 36 publications consider suppliers and clients often seen as opponent parties SEAA 2022 Bonorden & Riebisch: API Deprecation 23
  • 24.
    Research Gaps: Human-out-of-the-loop only1 of 36 publications studies real situations research almost only with (open-source-)data SEAA 2022 Bonorden & Riebisch: API Deprecation 24
  • 25.
    Research Gaps: PreventionBetter Than Cure none of the 36 publications studies prevention/preparation symptoms are treated, but causes are not addressed SEAA 2022 Bonorden & Riebisch: API Deprecation 25
  • 26.
    Overview ▪ API Deprecation ▪Systematic Mapping Process & Results ▪ Research Gaps SEAA 2022 Bonorden & Riebisch: API Deprecation 26
  • 27.
    Research Gaps Uncharted Territory:static vs. remote APIs Out of Focus: only a few programming languages Unbridged Gap: suppliers and clients Human-out-of-the-Loop: data research Prevention Better Than Cure: causes of deprecation SEAA 2022 Bonorden & Riebisch: API Deprecation 27
  • 28.
    State of Research Bonorden& Riebisch: API Deprecation 28 SEAA 2022
  • 29.
    Background SEAA 2022 Bonorden& Riebisch: API Deprecation 29
  • 30.
    The Who, What,How of SE Research M.-A. Storey, N. A. Ernst, C. Williams, E. Kalliamvakou (2020) The Who, What, How of Software Engineering Research: A Socio-technical Framework Empirical Software Engineering, 25(5), 4097–4129
  • 31.
    The Who, What,How of SE Research: How? SEAA 2022 Bonorden & Riebisch: API Deprecation 31 Empirical Strategies
  • 32.
    The Who, What,How of SE Research: How? SEAA 2022 Bonorden & Riebisch: API Deprecation 32 Non-Empirical Strategies Formal Theory Meta
  • 33.
    Systematic Mapping Process SEAA2022 Bonorden & Riebisch: API Deprecation 33
  • 34.
    Systematic Mapping Process SEAA2022 Bonorden & Riebisch: API Deprecation 34
  • 35.
    Systematic Mapping Process:Database Search SEAA 2022 Bonorden & Riebisch: API Deprecation 35 Search String: api AND deprecat* Databases: ACM Digital Library, IEEE Xplore, Microsoft Academic, Elsevier ScienceDirect, Web Of Science
  • 36.
    Systematic Mapping Process SEAA2022 Bonorden & Riebisch: API Deprecation 36
  • 37.
    Systematic Mapping Process:Study Selection SEAA 2022 Bonorden & Riebisch: API Deprecation 37 Inclusion Criteria: • journal, workshop, conference • discussion of API deprecation • English
  • 38.
    Systematic Mapping Process:Study Selection SEAA 2022 Bonorden & Riebisch: API Deprecation 38 Exclusion Criteria: • not peer-reviewed • no research of API deprecation • no new results • included in another study
  • 39.
    Systematic Mapping Process SEAA2022 Bonorden & Riebisch: API Deprecation 39
  • 40.
    Systematic Mapping Process:Snowballing SEAA 2022 Bonorden & Riebisch: API Deprecation 40 S. A. Spoon (2007) Fine-grained api evolution for method deprecation and anti-deprecation Int. Workshop on Foundations and Developments of Object-Oriented Languages
  • 41.
    Systematic Mapping Process SEAA2022 Bonorden & Riebisch: API Deprecation 41
  • 42.
    Systematic Mapping Process:Data Extraction SEAA 2022 Bonorden & Riebisch: API Deprecation 42 Data Extraction: • data extraction form • extraction by first author, revision by second author • disagreements solved by discussion
  • 43.
    Research Directions: Examples SEAA2022 Bonorden & Riebisch: API Deprecation 43
  • 44.
    Examples: Usage ofDeprecation Features D. Qiu, B. Li, H. Leung (2016) Understanding the API usage in Java G. Brito, A. Hora, M. Tulio Valente, R. Robbes (2018) On the use of replacement messages in API deprecation: An empirical study L. Li, J. Gao, T. F. Bissyandé, L. Ma, X. Xia, J. Klein (2020) CDA: Characterising Deprecated Android APIs R. Nascimento, E. Figueiredo, A. Hora (2021) JavaScript API Deprecation Landscape: A Survey and Mining Study SEAA 2022 Bonorden & Riebisch: API Deprecation 44
  • 45.
    Examples: Reaction toDeprecation R. Robbes, M. Lungu, D. Röthlisberger (2012) How Do Developers React to API Deprecation? The Case of a Smalltalk Ecosystem A. A. Sawant, R. Robbes, A. Bacchelli (2018) On the reaction to deprecation of clients of 4+1 popular Java APIs and the JDK A. A. Sawant, G. Huang, G. Vilen, S. Stojkovski, A. Bacchelli (2019) To react, or not to react: Patterns of reaction to API deprecation SEAA 2022 Bonorden & Riebisch: API Deprecation 45
  • 46.
    Examples: Updating Callsto Deprecated APIs Y. Xi, L. Shen, Y. Gui, W. Zhao (2019) Migrating Deprecated API to Documented Replacement: Patterns and Tool S. Haryono, F. Thung, H. Kang, L. Serrano, G. Muller, J. Lawall, D. Lo, L. Jiang (2020) Automatic Android Deprecated-API Usage Update by Learning from Single Updated Example F. Thung, S. Haryono, L. Serrano, G. Muller, J. Lawall, D. Lo, L. Jiang (2020) Automated Deprecated-API Usage Update for Android Apps: How Far are We? S. Haryono, F. Thung, D. Lo, L. Jiang, J. Lawall, H. Kang, L. Serrano, G. Muller (2021) AndroEvolve: Automated Update for Android Deprecated-API Usages SEAA 2022 Bonorden & Riebisch: API Deprecation 46
  • 47.
    Examples: Deprecation ofREST APIs J. Yasmin, Y. Tian, J. Yang (2020) A First Look at the Deprecation of RESTful APIs: An Empirical Study SEAA 2022 Bonorden & Riebisch: API Deprecation 47