Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3361242.3361246acmotherconferencesArticle/Chapter ViewAbstractPublication PagesinternetwareConference Proceedingsconference-collections
research-article

Migrating Deprecated API to Documented Replacement: Patterns and Tool

Published: 28 October 2019 Publication History

Abstract

Deprecation is commonly leveraged to preserve the backwards compatibility in API clients during API evolution. Client developers then usually encounter migration tasks when relying on a new version of API. Manually migrating a deprecated API to its replacement may be tedious and time-consuming. Existing research has focused on the requirements of automated migration however has limitations on the consistency and granularity of the generated migration pathway. In this paper, we propose an approach for migrating deprecated APIs to their replacements which are explicitly documented in the code documentation. A migration pattern including the migration type and the migration strategy is first introduced to describe the difference and the code change from a deprecated API to its replacement. An automated process is then designed and implemented to construct the pattern for a specific deprecated API by reviewing the code documentation and analyzing the API source code. Based on the patterns, a tool named DAAMT is developed to locate deprecated APIs and to provide migration suggestions for API clients. An experimental study on open-source Java projects and a user study is performing utilizing the approach. The results show that three-fourth of the deprecated APIs with documented replacements involved in the projects can be automatically migrated. In addition, the DAAMT tool can improve the efficiency and accuracy of the tasks compared with the manual migration.

References

[1]
Christopher Bogart, Christian Kästner, James D. Herbsleb, and Ferdian Thung. 2016. How to break an API: cost negotiation and community values in three software ecosystems. In Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2016, Seattle, WA, USA, November 13-18, 2016. 109--120.
[2]
Gleison Brito, André C. Hora, Marco Tulio Valente, and Romain Robbes. 2016. Do Developers Deprecate APIs with Replacement Messages? A Large-Scale Analysis on Java Systems. In IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering, SANER 2016, Suita, Osaka, Japan, March 14-18, 2016 - Volume 1. 360--369.
[3]
Gleison Brito, André C. Hora, Marco Tulio Valente, and Romain Robbes. 2018. On the use of replacement messages in API deprecation: An empirical study. Journal of Systems and Software 137 (2018), 306--321.
[4]
Bradley Cossette and Robert J. Walker. 2012. Seeking the ground truth: a retroactive study on the evolution and migration of software libraries. In 20th ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE-20), SIGSOFT/FSE'12, Cary, NC, USA - November 11-16, 2012. 55.
[5]
Barthélémy Dagenais and Martin P. Robillard. 2008. Recommending adaptive changes for framework evolution. In 30th International Conference on Software Engineering (ICSE 2008), Leipzig, Germany, May 10-18, 2008. 481--490.
[6]
Johannes Henkel and Amer Diwan. 2005. CatchUp!: capturing and replaying refactorings to support API evolution. In 27th International Conference on Software Engineering (ICSE 2005), 15-21 May 2005, St. Louis, Missouri, USA. 274--283.
[7]
André C. Hora and Marco Tulio Valente. 2015. Apiwave: Keeping track of API popularity and migration. In 2015 IEEE International Conference on Software Maintenance and Evolution, ICSME 2015, Bremen, Germany, September 29-October 1, 2015. 321--323.
[8]
Ralph E Johnson and Brian Foote. 1988. Designing reusable classes. Journal of object-oriented programming 1, 2 (1988), 22--35.
[9]
Deokyoon Ko, Kyeongwook Ma, Sooyong Park, Suntae Kim, Dongsun Kim, and Yves Le Traon. 2014. API Document Quality for Resolving Deprecated APIs. In 21st Asia-Pacific Software Engineering Conference, APSEC 2014, Jeju, South Korea, December 1-4, 2014. Volume 2: Industry, Short, and QuASoQ Papers. 27--30.
[10]
Maxime Lamothe and Weiyi Shang. 2018. Exploring the use of automated API migrating techniques in practice: an experience report on Android. In Proceedings of the 15th International Conference on Mining Software Repositories, MSR 2018, Gothenburg, Sweden, May 28-29, 2018. 503--514.
[11]
Li Li, Jun Gao, Tegawendé F. Bissyandé, Lei Ma, Xin Xia, and Jacques Klein. 2018. Characterising deprecated Android APIs. In Proceedings of the 15th International Conference on Mining Software Repositories, MSR 2018, Gothenburg, Sweden, May 28-29, 2018. 254--264.
[12]
Sichen Meng, Xiaoyin Wang, Lu Zhang, and Hong Mei. 2012. A history-based matching approach to identification of framework evolution. In 34th International Conference on Software Engineering, ICSE 2012, June 2-9, 2012, Zurich, Switzerland. 353--363.
[13]
Simon Moser and Oscar Nierstrasz. 1996. The Effect of Object-Oriented Frameworks on Developer Productivity. IEEE Computer 29, 9 (1996), 45--51.
[14]
Hoan Anh Nguyen, Tung Thanh Nguyen, Gary Wilson Jr., Anh Tuan Nguyen, Miryung Kim, and Tien N. Nguyen. 2010. A graph-based approach to API usage adaptation. In Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010, October 17-21, 2010, Reno/Tahoe, Nevada, USA. 302--321.
[15]
Jeff H. Perkins. 2005. Automatically generating refactorings to support API evolution. In Proceedings of the 2005 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis For Software Tools and Engineering, PASTE'05, Lisbon, Portugal, September 5-6, 2005. 111--114.
[16]
Anand Ashok Sawant, Romain Robbes, and Alberto Bacchelli. 2018. On the reaction to deprecation of clients of 4 + 1 popular Java APIs and the JDK. Empirical Software Engineering 23, 4 (2018), 2158--2197.
[17]
Thorsten Schäfer, Jan Jonas, and Mira Mezini. 2008. Mining framework usage changes from instantiation code. In 30th International Conference on Software Engineering (ICSE 2008), Leipzig, Germany, May 10-18, 2008. 471--480.
[18]
Roman Strobl and Zdenek Tronícek. 2013. Migration from deprecated API in Java. In Conference on Systems, Programming, and Applications: Software for Humanity, SPLASH '13, Indianapolis, IN, USA, October 26-31, 2013 - Companion Volume. 85--86.
[19]
Wei Wu, Yann-Gaël Guéhéneuc, Giuliano Antoniol, and Miryung Kim. 2010. AURA: a hybrid approach to identify framework evolution. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, ICSE 2010, Cape Town, South Africa, 1-8 May 2010. 325--334.
[20]
Zhenchang Xing and Eleni Stroulia. 2007. API-Evolution Support with Diff-CatchUp. IEEE Trans. Software Eng. 33, 12 (2007), 818--836.

Cited By

View all
  • (2023)An Empirical Study of Yanked Releases in the Rust Package RegistryIEEE Transactions on Software Engineering10.1109/TSE.2022.315214849:1(437-449)Online publication date: 1-Jan-2023
  • (2023)A decade of code comment quality assessment: A systematic literature reviewJournal of Systems and Software10.1016/j.jss.2022.111515195(111515)Online publication date: Jan-2023
  • (2022)IntelliTCProceedings of the ACM/IEEE 44th International Conference on Software Engineering: Companion Proceedings10.1145/3510454.3516851(115-119)Online publication date: 21-May-2022
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
Internetware '19: Proceedings of the 11th Asia-Pacific Symposium on Internetware
October 2019
179 pages
ISBN:9781450377010
DOI:10.1145/3361242
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 ACM 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 [email protected]

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 28 October 2019

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. API Migration
  2. Deprecated API
  3. Migration Pattern

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Conference

Internetware '19

Acceptance Rates

Internetware '19 Paper Acceptance Rate 20 of 35 submissions, 57%;
Overall Acceptance Rate 55 of 111 submissions, 50%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)12
  • Downloads (Last 6 weeks)2
Reflects downloads up to 13 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2023)An Empirical Study of Yanked Releases in the Rust Package RegistryIEEE Transactions on Software Engineering10.1109/TSE.2022.315214849:1(437-449)Online publication date: 1-Jan-2023
  • (2023)A decade of code comment quality assessment: A systematic literature reviewJournal of Systems and Software10.1016/j.jss.2022.111515195(111515)Online publication date: Jan-2023
  • (2022)IntelliTCProceedings of the ACM/IEEE 44th International Conference on Software Engineering: Companion Proceedings10.1145/3510454.3516851(115-119)Online publication date: 21-May-2022
  • (2022)API Deprecation: A Systematic Mapping Study2022 48th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)10.1109/SEAA56994.2022.00076(451-458)Online publication date: Aug-2022
  • (2022)IntelliTC: Automating Type Changes in IntelliJ IDEA2022 IEEE/ACM 44th International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)10.1109/ICSE-Companion55297.2022.9793766(115-119)Online publication date: May-2022
  • (2022)DepMiner: Automatic Recommendation of Transformation Rules for Method DeprecationReuse and Software Quality10.1007/978-3-031-08129-3_2(22-37)Online publication date: 10-Jun-2022
  • (2021)APIScannerProceedings of the 43rd International Conference on Software Engineering: Companion Proceedings10.1109/ICSE-Companion52605.2021.00022(5-8)Online publication date: 25-May-2021
  • (2021)REPFINDER: Finding Replacements for Missing APIs in Library Update2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE)10.1109/ASE51524.2021.9678905(266-278)Online publication date: Nov-2021

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media