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

skip to main content
10.1145/1108792.1108818acmconferencesArticle/Chapter ViewAbstractPublication PagespasteConference Proceedingsconference-collections
Article

Automatically generating refactorings to support API evolution

Published: 05 September 2005 Publication History

Abstract

When library APIs change, client code should change in response, in order to avoid erroneous behavior, compilation failures, or warnings. Previous research has introduced techniques for generating such client refactorings. This paper improves on the previous work by proposing a novel, lightweight technique that takes advantage of information that programmers can insert in the code rather than forcing them to use a different tool to re-express it. The key idea is to replace calls to deprecated methods by their bodies, where those bodies consist of the appropriate replacement code. This approach has several benefits. It requires no change in library development practice, since programmers already adjust method bodies and/or write example code, and there are no new tools or languages to learn. It does not require distribution of new artifacts, and a tool to apply it can be lightweight. We evaluated the applicability of our approach on a number of libraries and found it to to be applicable in more than 75% of the cases.

References

[1]
R. Balzer, J. T. E. Cheatham, and C. Green. Software technology in the 1990's: Using a new paradigm. Computer, 16(11):39--45, Nov. 1983.
[2]
B. W. Boehm. Industrial software metrics top 10 list. IEEE Software, 4(5):84--85, Sept. 1987.
[3]
Borland. Making development a team sport. demo at JavaOne, June 29, 2004.
[4]
K. Chow and D. Notkin. Semi-automatic update of applications in response to library changes. In ICSM, pages 259--368, Nov. 1996.
[5]
M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 2000.
[6]
W. G. Griswold. Program restructuring to aid software maintenance. Technical Report 91-08-04, U. Wash. Dept. of Comp. Sci. & Eng., Seattle, WA, USA, Aug. 1991. PhD dissertation.
[7]
J. Henkel and A. Diwan. Catchup! capturing and replaying refactorings to support API evolution. In ICSE, May 2005.
[8]
A. Kalinovsky. Covert Java: Techniques for Decompiling, Patching and Reverse Engineering. Sams, Indianapolis, Indiana, 2004.
[9]
T. Mens and T. Tourwé. A survey of software refactoring. IEEE TSE, 30(2):126--139, Feb. 2004.
[10]
W. F. Opdyke. Refactoring: A program restructuring aid in designing object-oriented applications frameworks. Technical Report 1759, University of Illinois at Urbana-Champaign, Dept. of Computer Science, 1992. PhD dissertation.
[11]
T. J. Parr. An overview of SORCERER: A simple tree-parser generator. In Compiler Construction '94, Apr. 1994.
[12]
L. H. Putnam. A general empirical solution to the macro software sizing and estimating problem. IEEE TSE, 4(4):345--361, July 1978.

Cited By

View all
  • (2024)Adaptoring: Adapter Generation to Provide an Alternative API for a Library2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00027(192-203)Online publication date: 12-Mar-2024
  • (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)MELT: Mining Effective Lightweight Transformations from Pull Requests2023 38th IEEE/ACM International Conference on Automated Software Engineering (ASE)10.1109/ASE56229.2023.00117(1516-1528)Online publication date: 11-Sep-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
PASTE '05: Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
September 2005
118 pages
ISBN:1595932399
DOI:10.1145/1108792
  • cover image ACM SIGSOFT Software Engineering Notes
    ACM SIGSOFT Software Engineering Notes  Volume 31, Issue 1
    January 2006
    203 pages
    ISSN:0163-5948
    DOI:10.1145/1108768
    Issue’s Table of Contents
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: 05 September 2005

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

PASTE05

Acceptance Rates

Overall Acceptance Rate 57 of 159 submissions, 36%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)12
  • Downloads (Last 6 weeks)2
Reflects downloads up to 23 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Adaptoring: Adapter Generation to Provide an Alternative API for a Library2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00027(192-203)Online publication date: 12-Mar-2024
  • (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)MELT: Mining Effective Lightweight Transformations from Pull Requests2023 38th IEEE/ACM International Conference on Automated Software Engineering (ASE)10.1109/ASE56229.2023.00117(1516-1528)Online publication date: 11-Sep-2023
  • (2022)Automatically Fixing Breaking Changes of Data Science LibrariesProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3559507(1-3)Online publication date: 10-Oct-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
  • (2021)SOARProceedings of the 43rd International Conference on Software Engineering10.1109/ICSE43902.2021.00023(112-124)Online publication date: 22-May-2021
  • (2021)DepOwlProceedings of the 43rd International Conference on Software Engineering10.1109/ICSE43902.2021.00021(86-98)Online publication date: 22-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
  • (2021)Demystifying regular expression bugsEmpirical Software Engineering10.1007/s10664-021-10033-127:1Online publication date: 5-Nov-2021
  • (2020)SOAR: synthesis for open-source API refactoringCompanion Proceedings of the 2020 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity10.1145/3426430.3428129(10-12)Online publication date: 15-Nov-2020
  • 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