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

Understanding developers' needs on deprecation as a language feature

Published: 27 May 2018 Publication History

Abstract

Deprecation is a language feature that allows API producers to mark a feature as obsolete. We aim to gain a deep understanding of the needs of API producers and consumers alike regarding deprecation. To that end, we investigate why API producers deprecate features, whether they remove deprecated features, how they expect consumers to react, and what prompts an API consumer to react to deprecation. To achieve this goal we conduct semi-structured interviews with 17 third-party Java API producers and survey 170 Java developers. We observe that the current deprecation mechanism in Java and the proposal to enhance it does not address all the needs of a developer. This leads us to propose and evaluate three further enhancements to the deprecation mechanism.

References

[1]
Christopher Bogart, Christian Kästner, James Herbsleb, and Ferdian Thung. 2016. How to break an API: Cost negotiation and community values in three software ecosystems. In 24th Joint meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. ACM, 109--120.
[2]
Gleison Brito, Andre Hora, Marco Tulio Valente, and Romain Robbes. 2016. Do developers deprecate APIs with replacement messages? A large-scale analysis on Java systems. In Software Analysis, Evolution, and Reengineering (SANER), 2016 IEEE 23rd International Conference on, Vol. 1. IEEE, 360--369.
[3]
Bradley E Cossette and Robert J Walker. 2012. Seeking the ground truth: a retroactive study on the evolution and migration of software libraries. In Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering. ACM, 55.
[4]
Jens Dietrich, Kamil Jezek, and Premek Brada. 2014. Broken promises: An empirical study into evolution problems in java programs caused by library upgrades. In Software Maintenance, Reengineering and Reverse Engineering (CSMR-WCRE), 2014 Software Evolution Week-IEEE Conference on. IEEE, 64--73.
[5]
Danny Dig and Ralph Johnson. 2006. How do APIs evolve? A story of refactoring. Journal of software maintenance and evolution: Research and Practice 18, 2 (2006), 83--107.
[6]
Michael D Ernst. 2008. JSR 308: Type annotations specification. https://jcp.org/ en/jsr/detail?id=308. (2008). last accessed May 2017.
[7]
Tiago Espinha, Andy Zaidman, and Hans-Gerhard Gross. 2014. Web API growing pains: Stories from client developers and their code. In Software Maintenance, Reengineering and Reverse Engineering (CSMR-WCRE), 2014 Software Evolution Week-IEEE Conference on. IEEE, 84--93.
[8]
Adrian Furnham. 1986. Response bias, social desirability and dissimulation. Personality and individual differences 7, 3 (1986), 385--400.
[9]
Nahid Golafshani. 2003. Understanding reliability and validity in qualitative research. The qualitative report 8, 4 (2003), 597--606.
[10]
Johannes Henkel and Amer Diwan. 2005. CatchUp!: capturing and replaying refactorings to support API evolution. In Proceedings of the 27th international conference on Software engineering. ACM, 274--283.
[11]
Donald C Hildum and Roger W Brown. 1956. Verbal reinforcement and interviewer bias. The Journal of Abnormal and Social Psychology 53, 1 (1956), 108.
[12]
Daqing Hou and Xiaojia Yao. 2011. Exploring the intent behind api evolution: A case study. In Reverse Engineering (WCRE), 2011 18th Working Conference on. IEEE, 131--140.
[13]
TIOBE Index. {n. d.}. TIOBE.-2017.{Electronic resource}. Mode of access http://www.tiobe.com/tiobe_index ({n. d.}).
[14]
Mario Linares-Vásquez, Gabriele Bavota, Carlos Bernal-Cárdenas, Massimiliano Di Penta, Rocco Oliveto, and Denys Poshyvanyk. 2013. API Change and Fault Proneness: A Threat to the Success of Android Apps. In 9th Joint meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. ACM, 477--487.
[15]
Thomas R Lindlof and Bryan C Taylor. 2011. Qualitative communication research methods. Sage.
[16]
Stuart Marks. 2014--2017. JEP 277: Enhanced Deprecation. http:// openjdk.java.net/jeps/277. (2014--2017). last accessed Aug 2017.
[17]
Stuart Marks. 2016. Java One presentation on JEP 277. https: //oracle.rainfocus.com/scripts/catalog/oow16.jsp?event=javaone&search=CON3297&search.event=javaone. (2016). last accessed May 2017.
[18]
Microsoft. 2012. C# ObsoleteAttribute Class. https://msdn.microsoft.com/enus/library/system.obsoleteattribute(v=vs.110).aspx. (2012). last accessed May 2017.
[19]
Jakob Nielsen. 1995. 10 usability heuristics for user interface design. Nielsen Norman Group 1, 1 (1995).
[20]
Jeff H Perkins. 2005. Automatically generating refactorings to support API evolution. In ACM SIGSOFT Software Engineering Notes, Vol. 31. ACM, 111--114.
[21]
William Pugh. 2006. JSR 305: Annotations for software defect detection. https: //jcp.org/en/jsr/detail?id=305. (2006). last accessed May 2017.
[22]
Steven Raemaekers, Arie van Deursen, and Joost Visser. 2014. Semantic Versioning versus Breaking Changes: A Study of the Maven Repository. In Proceedings of hte IEEE 14th International Working Conference on Source Code Analysis and Manipulation.
[23]
Steven Raemaekers, Arie van Deursen, and Joost Visser. 2017. Semantic versioning and impact of breaking changes in the Maven repository. Journal of Systems and Software 129 (2017), 140--158.
[24]
Romain Robbes, Mircea Lungu, and David Röthlisberger. 2012. How do developers react to API deprecation?: the case of a smalltalk ecosystem. In Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering. ACM, 56.
[25]
Everett M Rogers. 2010. Diffusion of innovations. Simon and Schuster.
[26]
John R. Rose. 1996. How and When To Deprecate APIs. http: //www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase11-419415.html#7122-jdk-1.1-doc-oth-JPR. (1996). last accessed May 2017.
[27]
A.A Sawant, Mauricio Aniche, Arie van Deursen, and Alberto Bacchelli. 2017. Replication Package. https://www.dropbox.com/s/cwchbspdeek6iuh/ replication_package.zip?dl=0. (2017). last accessed May 2017.
[28]
Anand Ashok Sawant and Alberto Bacchelli. 2016. fine-GRAPE: fine-grained APi usage extractor - an approach and dataset to investigate API usage. Empirical Software Engineering (2016), 1--24.
[29]
A. A. Sawant and A. Bacchelli. 2016. On the reaction to deprecation of 25,357 clients of 4+1 popular Java APIs. In Proceedings of the 32nd IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE press, in press.
[30]
LEE SIGELAMAN. 1981. Question-order effects on presidential popularity. Public Opinion Quarterly 45, 2 (1981), 199--207.
[31]
Sally Thorne, S Reimer Kirkham, Janet MacDonald-Emes, et al. 1997. Focus on qualitative methods. Interpretive description: a noncategorical qualitative alternative for developing nursing knowledge. Research in nursing & health 20, 2 (1997), 169--177.
[32]
Laerte Xavier, Aline Brito, Andre Hora, and Marco Tulio Valente. 2017. Historical and impact analysis of API breaking changes: A large-scale study. In Software Analysis, Evolution and Reengineering (SANER), 2017 IEEE 24th International Conference on. IEEE, 138--147.
[33]
Zhenchang Xing and Eleni Stroulia. 2007. API-evolution support with Diff-CatchUp. IEEE Transactions on Software Engineering 33, 12 (2007), 818--836.

Cited By

View all
  • (2025)Promises and perils of using Transformer-based models for SE researchNeural Networks10.1016/j.neunet.2024.107067184(107067)Online publication date: Apr-2025
  • (2024)Detecting Usage of Deprecated Web APIs via Tracing2024 IEEE 21st International Conference on Software Architecture (ICSA)10.1109/ICSA59870.2024.00011(23-33)Online publication date: 4-Jun-2024
  • (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
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE '18: Proceedings of the 40th International Conference on Software Engineering
May 2018
1307 pages
ISBN:9781450356381
DOI:10.1145/3180155
  • Conference Chair:
  • Michel Chaudron,
  • General Chair:
  • Ivica Crnkovic,
  • Program Chairs:
  • Marsha Chechik,
  • Mark Harman
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 [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 27 May 2018

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. API
  2. Java
  3. deprecation

Qualifiers

  • Research-article

Funding Sources

  • Swiss National Science Foundation (SNF Project)
  • Netherlands Organization for Scientific Research (NWO)

Conference

ICSE '18
Sponsor:

Acceptance Rates

Overall Acceptance Rate 276 of 1,856 submissions, 15%

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)18
  • Downloads (Last 6 weeks)1
Reflects downloads up to 13 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Promises and perils of using Transformer-based models for SE researchNeural Networks10.1016/j.neunet.2024.107067184(107067)Online publication date: Apr-2025
  • (2024)Detecting Usage of Deprecated Web APIs via Tracing2024 IEEE 21st International Conference on Software Architecture (ICSA)10.1109/ICSA59870.2024.00011(23-33)Online publication date: 4-Jun-2024
  • (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
  • (2022)Deprecation of Packages and Releases in Software Ecosystems: A Case Study on NPMIEEE Transactions on Software Engineering10.1109/TSE.2021.305512348:7(2208-2223)Online publication date: 1-Jul-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)Exploring API Deprecation Evolution in JavaScript2022 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER53432.2022.00031(169-173)Online publication date: Mar-2022
  • (2022)JavaScript API Deprecation Landscape: A Mining Study2022 International Conference on Cyber Resilience (ICCR)10.1109/ICCR56254.2022.9995957(1-5)Online publication date: 6-Oct-2022
  • (2022)Präzi: from package-based to call-based dependency networksEmpirical Software Engineering10.1007/s10664-021-10071-927:5Online publication date: 1-Sep-2022
  • (2021)A Systematic Review of API Evolution LiteratureACM Computing Surveys10.1145/347013354:8(1-36)Online publication date: 4-Oct-2021
  • (2021)DepOwlProceedings of the 43rd International Conference on Software Engineering10.1109/ICSE43902.2021.00021(86-98)Online publication date: 22-May-2021
  • Show More Cited By

View Options

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