[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2393596.2393661acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

Seeking the ground truth: a retroactive study on the evolution and migration of software libraries

Published: 11 November 2012 Publication History

Abstract

Application programming interfaces (APIs) are a common and industrially-relevant means for third-party software developers to reuse external functionality. Several techniques have been proposed to help migrate client code between library versions with incompatible APIs, but it is not clear how well these perform in an absolute sense. We present a retroactive study into the presence and nature of API incompatibilities between several versions of a set of Java-based software libraries; for each, we perform a detailed, manual analysis to determine what the correct adaptations are to migrate from the older to the newer version. In addition, we investigate whether any of a set of adaptation recommender techniques is capable of identifying the correct adaptations for library migration. We find that a given API incompatibility can typically be addressed by only one or two recommender techniques, but sometimes none serve. Furthermore, those techniques give correct recommendations, on average, in only about 20% of cases.

References

[1]
I. Balaban, F. Tip, and R. Fuhrer. Refactoring support for class library migration. In Proc. ACM SIGPLAN Conf. Object-Oriented Progr. Syst. Lang. Appl., pp. 265--279, 2005.
[2]
J. Bloch. How to design a good API and why it matters. In Companion ACM SIGPLAN Conf. Obj.-Oriented Progr. Syst. Lang. Appl., pp. 506--507, 2006.
[3]
K. Chow and D. Notkin. Semi-automatic update of applications in response to library changes. In Proc. IEEE Int. Conf. Softw. Mainten., pp. 359--368, 1994.
[4]
B. Cossette and R. Walker. Polylingual dependency analysis using island grammars: A cost versus accuracy evaluation. In Proc. IEEE Int. Conf. Softw. Mainten., pp. 214--223, 2007.
[5]
B. Dagenais and M. Robillard. Recommending adaptive changes for framework evolution. ACM Trans. Softw. Eng. Methodol., 20(4):19/1--19/35, 2011.
[6]
D. Dig, C. Comertoglu, D. Marinov, and R. Johnson. Automated detection of refactorings in evolving components. In Proc. Europ. Conf. Object-Oriented Progr., LNCS 4067, pp. 404--428, 2006.
[7]
D. Dig and R. Johnson. How do APIs evolve? A story of refactoring. J. Softw. Mainten. Res. Pract., 18(2):83--107, 2006.
[8]
D. Dig, S. Negara, V. Mohindra, and R. Johnson. ReBA: Refactoring-aware binary adaptation of evolving libraries. In Proc. ACM/IEEE Int. Conf. Softw. Eng., pp. 441--450, 2008.
[9]
M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.
[10]
M. Godfrey and L. Zou. Using origin analysis to detect merging and splitting of source code entities. IEEE Trans. Softw. Eng., 31(2):166--181, 2005.
[11]
J. Gosling, B. Joy, G. Steele, G. Bracha, and A. Buckley. The Java Language Specification. Java SE 7 edition, 2012. http://docs.oracle.com/javase/specs/jls/se7/html/index.html.
[12]
J. Henkel and A. Diwan. CatchUp!: Capturing and replaying refactorings to support API evolution. In Proc. ACM/IEEE Int. Conf. Softw. Eng., pp. 274--283, 2005.
[13]
R. Johnson. Frameworks = (components + patterns). Commun. ACM, 40(10):39--42, 1997.
[14]
P. Kapur. Refactoring references for library migration. Master's thesis, Department of Computer Science, University of Calgary, Calgary, Canada, 2010.
[15]
P. Kapur, B. Cossette, and R. Walker. Refactoring references for library migration. In Proc. ACM SIGPLAN Conf. Object-Oriented Progr. Syst. Lang. Appl., pp. 726--738, 2010.
[16]
M. Kim, D. Notkin, and D. Grossman. Automatic inference of structural changes for matching across program versions. In Proc. ACM/IEEE Int. Conf. Softw. Eng., pp. 333--343, 2007.
[17]
C. Larman. Protected variation: The importance of being closed. IEEE Softw., 18(3):89--91, 2001.
[18]
M. Lehman. Programs, life cycles, and laws of software evolution. Proc. IEEE, 68(9):1060--1076, 1980.
[19]
B. Morel and P. Alexander. SPARTACAS: Automating component reuse and adaptation. IEEE Trans. Softw. Eng., 30(9):587--600, 2004.
[20]
M. Nita and D. Notkin. Using twinning to adapt programs to alternative APIs. In Proc. ACM/IEEE Int. Conf. Softw. Eng., pp. 205--214, 2010.
[21]
D. Parnas. Software aging. In Proc. ACM/IEEE Int. Conf. Softw. Eng., pp. 279--287, 1994.
[22]
J. Perkins. Automatically generating refactorings to support API evolution. In Proc. ACM SIGPLAN--SIGSOFT Wkshp. Progr. Analysis Softw. Tools Eng., pp. 111--114, 2005.
[23]
M. Robillard and R. DeLine. A field study of API learning obstacles. Empir. Softw. Eng., 16(6):703--732, 2011.
[24]
T. Schäfer, J. Jonas, and M. Mezini. Mining framework usage changes from instantiation code. In Proc. ACM/IEEE Int. Conf. Softw. Eng., pp. 471--480, 2008.
[25]
P. Weissgerber and S. Diehl. Identifying refactorings from source-code changes. In Proc. IEEE/ACM Int. Conf. Autom. Softw. Eng., pp. 231--240, 2006.
[26]
W. Wu, Y.-G. Guéhéneuc, G. Antoniol, and M. Kim. AURA: A hybrid approach to identify framework evolution. In Proc. ACM/IEEE Int. Conf. Softw. Eng., volume 1, pp. 325--334, 2010.
[27]
Z. Xing and E. Stroulia. API-evolution support with Diff-CatchUp. IEEE Trans. Softw. Eng., 33(12):818--836, 2007.

Cited By

View all
  • (2024)Mining Discussions on Software Migration: A study of the Boost mailing list regarding C++ code evolutionProceedings of the XXIII Brazilian Symposium on Software Quality10.1145/3701625.3701665(264-274)Online publication date: 5-Nov-2024
  • (2024)Learning to Predict and Improve Build Successes in Package EcosystemsProceedings of the 21st International Conference on Mining Software Repositories10.1145/3643991.3644927(531-542)Online publication date: 15-Apr-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

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
FSE '12: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
November 2012
494 pages
ISBN:9781450316149
DOI:10.1145/2393596
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: 11 November 2012

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. API
  2. adaptive change
  3. recommendation systems

Qualifiers

  • Research-article

Conference

SIGSOFT/FSE'12
Sponsor:

Acceptance Rates

Overall Acceptance Rate 17 of 128 submissions, 13%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)38
  • Downloads (Last 6 weeks)6
Reflects downloads up to 31 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Mining Discussions on Software Migration: A study of the Boost mailing list regarding C++ code evolutionProceedings of the XXIII Brazilian Symposium on Software Quality10.1145/3701625.3701665(264-274)Online publication date: 5-Nov-2024
  • (2024)Learning to Predict and Improve Build Successes in Package EcosystemsProceedings of the 21st International Conference on Mining Software Repositories10.1145/3643991.3644927(531-542)Online publication date: 15-Apr-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)Refactoring-aware Block Tracking in Commit HistoryIEEE Transactions on Software Engineering10.1109/TSE.2024.3484586(1-20)Online publication date: 2024
  • (2024)A Probabilistic Approach To Selecting Build Configurations in Package ManagersSC24: International Conference for High Performance Computing, Networking, Storage and Analysis10.1109/SC41406.2024.00090(1-13)Online publication date: 17-Nov-2024
  • (2024)Next-Generation Refactoring: Combining LLM Insights and IDE Capabilities for Extract Method2024 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME58944.2024.00034(275-287)Online publication date: 6-Oct-2024
  • (2024)API usage templates via structural generalizationJournal of Systems and Software10.1016/j.jss.2024.111974210:COnline publication date: 1-Apr-2024
  • (2023)Recommending Analogical APIs via Knowledge Graph EmbeddingProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616305(1496-1508)Online publication date: 30-Nov-2023
  • (2023)“We Feel Like We’re Winging It:” A Study on Navigating Open-Source Dependency AbandonmentProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616293(1281-1293)Online publication date: 30-Nov-2023
  • (2023)Automating Dependency Updates in Practice: An Exploratory Study on GitHub DependabotIEEE Transactions on Software Engineering10.1109/TSE.2023.3278129(1-18)Online publication date: 2023
  • 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