Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3092703.3092721acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article
Public Access

Experience paper: a study on behavioral backward incompatibilities of Java software libraries

Published: 10 July 2017 Publication History

Abstract

Nowadays, due to the frequent technological innovation and market changes, software libraries are evolving very quickly. Backward compatibility has always been one of the most important requirements during the evolution of software platforms and libraries. However, backward compatibility is seldom fully achieved in practice, and many relevant software failures are reported. Therefore, it is important to understand the status, major reasons, and impact of backward incompatibilities in real world software. This paper presents an empirical study to understand behavioral changes of APIs during evolution of software libraries. Specifically, we performed a large-scale cross-version regression testing on 68 consecutive version pairs from 15 popular Java software libraries. Furthermore, we collected and studied 126 real-world software bugs reports on backward incompatibilities of software libraries. Our major findings include: (1) 1,094 test failures / errors and 296 behavioral backward incompatibilities are detected from 52 of 68 consecutive version pairs; (2) there is a distribution mismatch between incompatibilities detected by library-side regression testing, and bug-inducing incompatibilities; (3) the majority of behavioral backward incompatibilities are not well documented in API documents or release notes; and (4) 67% of fixed client bugs caused by backward incompatibilities in software libraries are fixed by client developers, through several simple change patterns made to the backward incompatible API invocation.

References

[1]
Semantic Versioning, http://semver.org/. Accessed: 2016-08-22. 2017. Criticism of Windows Vista. (2017). https://en.wikipedia.org/wiki/ Criticism_of_Windows_Vista 2017. Sougou. (2017). https://play.google.com/store/apps/details?id=com.sohu. inputmethod.sogou&hl=en
[2]
G. Bavota, G. Canfora, M. Di Penta, R. Oliveto, and S. Panichella. 2013. The Evolution of Project Inter-dependencies in a Software Ecosystem: The Case of Apache. In Software Maintenance (ICSM), 2013 29th IEEE International Conference on. 280–289.
[3]
G. Bavota, G. Canfora, M. Di Penta, R. Oliveto, and S. Panichella. 2014. How the Apache Community Upgrades Dependencies: an Evolutionary Study. Empirical Software Engineering (2014), 1–43.
[4]
G. Bavota, M. Linares-Vasquez, C. Bernal-Cardenas, M. Di Penta, R. Oliveto, and D. Poshyvanyk. 2014. The Impact of API Change- and Fault-Proneness on the User Ratings of Android Apps. Software Engineering, IEEE Transactions on 99 (2014), 1–1.
[5]
G. Brito, A. Hora, M. T. Valente, and R. Robbes. 2016. Do Developers Deprecate APIs with Replacement Messages? A Large-Scale Analysis on Java Systems. In 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER), Vol. 1. 360–369.
[6]
B. Dagenais and M. P. Robillard. 2008. Recommending Adaptive Changes for Framework Evolution. In Proceedings of International Conference on Software Engineering. 481–490.
[7]
D. Dig and R. Johnson. 2006. How Do APIs Evolve&Quest; A Story of Refactoring: Research Articles. J. Softw. Maint. Evol. 18, 2 (March 2006), 83–107.
[8]
T. Espinha, A. Zaidman, and H.-G. 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. 84–93.
[9]
M. W. Godfrey and Q. Tu. 2000. Evolution in Open Source Software: a Case Study. In Proceedings 2000 International Conference on Software Maintenance. 131–142.
[10]
M. W. Godfrey and L. Zou. 2005. Using Origin Analysis to Detect Merging and Splitting of Source Code Entities. IEEE Transactions on Software Engineering 31, 2 (February 2005), 166–181.
[11]
M. Kim, D. Notkin, and D. Grossman. 2007. Automatic Inference of Structural Changes for Matching across Program Versions. In Proceedings of International Conference on Software Engineering. 333–343.
[12]
S. Kim, K. Pan, and E. J. Whitehead, Jr. 2005. When Functions Change Their Names: Automatic Detection of Origin Relationships. In Proceedings of Working Conference on Requirement Engineering. 143–152.
[13]
S. Lahiri, C. Hawblitzel, M. Kawaguchi, and H. RebÃłlo. 2012. SYMDIFF: A Language-Agnostic Semantic Diff Tool for Imperative Programs. In Computer Aided Verification. 712–717.
[14]
M. Linares-Vásquez, G. Bavota, C. Bernal-Cárdenas, M. Di Penta, R. Oliveto, and D. Poshyvanyk. 2013. API Change and Fault Proneness: A Threat to the Success of Android Apps. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2013). 477–487.
[15]
S. McCamant and M. D. Ernst. 2003. Predicting Problems Caused by Component Upgrades. In Proceedings of the 9th European Software Engineering Conference Held Jointly with 11th ACM SIGSOFT International Symposium on Foundations of Software Engineering. 287–296.
[16]
S. McCamant and M. D. Ernst. 2004. Early Identification of Incompatibilities in Multi-component Upgrades. In European Conference on Object-Oriented Programming. 440–464.
[17]
T. McDonnell, B. Ray, and M. Kim. 2013. An Empirical Study of API Stability and Adoption in the Android Ecosystem. In Proceedings of the 2013 IEEE International Conference on Software Maintenance. 70–79.
[18]
S. Meng, X. Wang, L. Zhang, and H. Mei. 2012. A History-based Matching Approach to Identification of Framework Evolution. In Proceedings of the 34th International Conference on Software Engineering. 353–363.
[19]
L. Moreno, G. Bavota, M. Di Penta, R. Oliveto, A. Marcus, and G. Canfora. 2014. Automatic Generation of Release Notes. In Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2014). 484– 495.
[20]
S. Mostafa and X. Wang. 2014. An Empirical Study on the Usage of Mocking Frameworks in Software Testing. In 2014 14th International Conference on Quality Software. 127–132.
[21]
S. Mostafa and X. Wang. 2014. A Statistics on Usage of Java Libraries. In Technical Report. http://xywang.100871.net/TechReport_LibStats.pdf
[22]
K. Nakakoji, Y. Yamamoto, Y. Nishinaka, K. Kishida, and Y. Ye. 2002. Evolution Patterns of Open-source Software Systems and Communities. In Proceedings of the International Workshop on Principles of Software Evolution. 76–85.
[23]
S. Person, M. B. Dwyer, S. Elbaum, and C. S. Pˇasˇareanu. 2008. Differential Symbolic Execution. In Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of Software Engineering. 226–237.
[24]
S. Person, G. Yang, N. Rungta, and S. Khurshid. 2011. Directed Incremental Symbolic Execution. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation. 504–515.
[25]
S. Raemaekers, A. van Deursen, and J. Visser. 2012. Measuring Software Library Stability through Historical Version Analysis. In Software Maintenance (ICSM), 2012 28th IEEE International Conference on. 378–387.
[26]
S. Raemaekers, A. van Deursen, and J. Visser. 2014. Semantic Versioning versus Breaking Changes: A Study of the Maven Repository. In Source Code Analysis and Manipulation (SCAM), 2014 IEEE 14th International Working Conference on. 215–224.
[27]
R. Robbes, M. Lungu, and D. 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. 56:1–56:11.
[28]
H. Tang, X. Wang, L. Zhang, B. Xie, L. Zhang, and H. Mei. 2015. Summary-Based Context-Sensitive Data-Dependence Analysis in Presence of Callbacks. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. 83–95.
[29]
X. Wang, L. Zhang, T. Xie, H. Mei, and J. Sun. 2010. Locating Need-to-translate Constant Strings in Web Applications. In Proceedings of the Eighteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering. 87–96.
[30]
X. Wang, L. Zhang, T. Xie, Y. Xiong, and H. Mei. 2012. Automating Presentation Changes in Dynamic Web Applications via Collaborative Hybrid Analysis. In Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering. 16:1–16:11.
[31]
W. Wu, B. Adams, Y.-G. Gueheneuc, and G. Antoniol. 2014. ACUA: API Change and Usage Auditor. In Source Code Analysis and Manipulation (SCAM), 2014 IEEE 14th International Working Conference on. 89–94.
[32]
W. Wu, Y. Guéhéneuc, G. Antoniol, and M. Kim. 2010. AURA: A Hybrid Approach to Identify Framework Evolution. In Proceedings of International Conference on Software Engineering. 325–334.
[33]
W. Wu, F. Khomh, B. Adams, Y. Guéhéneuc, and G. Antoniol. 2016. An Exploratory Study of API Changes and Usages based on Apache and Eclipse Ecosystems. Empirical Software Engineering 21, 6 (2016), 2366–2412.
[34]
W. Wu, A. Serveaux, Y. Guéhéneuc, and G. Antoniol. 2015. The Impact of Imperfect Change Rules on Framework API Evolution Identification: an Empirical Study. Empirical Software Engineering 20, 4 (2015), 1126–1158.

Cited By

View all
  • (2024)FILO: Automated FIx-LOcus Identification for Android Framework Compatibility IssuesInformation10.3390/info1508042315:8(423)Online publication date: 23-Jul-2024
  • (2024)Understanding the Impact of APIs Behavioral Breaking Changes on Client ApplicationsProceedings of the ACM on Software Engineering10.1145/36437821:FSE(1238-1261)Online publication date: 12-Jul-2024
  • (2024)Compiler-directed Migrating API Callsite of Client CodeProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639084(1-12)Online publication date: 20-May-2024
  • Show More Cited By

Index Terms

  1. Experience paper: a study on behavioral backward incompatibilities of Java software libraries

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ISSTA 2017: Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis
    July 2017
    447 pages
    ISBN:9781450350761
    DOI:10.1145/3092703
    • General Chair:
    • Tevfik Bultan,
    • Program Chair:
    • Koushik Sen
    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]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 10 July 2017

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Behavioral Backward Incompatibilities
    2. Library Evolution

    Qualifiers

    • Research-article

    Funding Sources

    Conference

    ISSTA '17
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 58 of 213 submissions, 27%

    Upcoming Conference

    ISSTA '25

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)174
    • Downloads (Last 6 weeks)27
    Reflects downloads up to 23 Feb 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)FILO: Automated FIx-LOcus Identification for Android Framework Compatibility IssuesInformation10.3390/info1508042315:8(423)Online publication date: 23-Jul-2024
    • (2024)Understanding the Impact of APIs Behavioral Breaking Changes on Client ApplicationsProceedings of the ACM on Software Engineering10.1145/36437821:FSE(1238-1261)Online publication date: 12-Jul-2024
    • (2024)Compiler-directed Migrating API Callsite of Client CodeProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639084(1-12)Online publication date: 20-May-2024
    • (2024)Comparing Execution Trace Using Merkle- Tree to Detect Backward Incompatibilities2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00071(649-653)Online publication date: 12-Mar-2024
    • (2024)Software Simulations of Spiking Neural P SystemsSpiking Neural P Systems10.1007/978-981-97-9282-5_11(317-376)Online publication date: 24-Sep-2024
    • (2024)Common Types of Dependency IssuesManaging Software Supply Chains10.1007/978-981-96-1797-5_3(35-52)Online publication date: 4-Dec-2024
    • (2023)A Comprehensive Empirical Study of Bias Mitigation Methods for Machine Learning ClassifiersACM Transactions on Software Engineering and Methodology10.1145/358356132:4(1-30)Online publication date: 27-May-2023
    • (2023)Client-Specific Upgrade Compatibility Checking via Knowledge-Guided DiscoveryACM Transactions on Software Engineering and Methodology10.1145/358256932:4(1-31)Online publication date: 26-May-2023
    • (2023)Security Misconfigurations in Open Source Kubernetes Manifests: An Empirical StudyACM Transactions on Software Engineering and Methodology10.1145/357963932:4(1-36)Online publication date: 26-May-2023
    • (2023)Reliable Fix Patterns Inferred from Static Checkers for Automated Program RepairACM Transactions on Software Engineering and Methodology10.1145/357963732:4(1-38)Online publication date: 26-May-2023
    • Show More Cited By

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Login options

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media