Loading…

Automatically generating refactorings to support API evolution

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 te...

Full description

Saved in:
Bibliographic Details
Published in:Software engineering notes 2006-01, Vol.31 (1), p.111-114
Main Author: Perkins, Jeff H.
Format: Article
Language:English
Citations: Items that this one cites
Items that cite this one
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
cited_by cdi_FETCH-LOGICAL-c868-aa9afcad9539611465c273d69f2f7b2acbd103acae8d7370e4a79ed4815ace973
cites cdi_FETCH-LOGICAL-c868-aa9afcad9539611465c273d69f2f7b2acbd103acae8d7370e4a79ed4815ace973
container_end_page 114
container_issue 1
container_start_page 111
container_title Software engineering notes
container_volume 31
creator Perkins, Jeff H.
description 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.
doi_str_mv 10.1145/1108768.1108818
format article
fullrecord <record><control><sourceid>crossref</sourceid><recordid>TN_cdi_crossref_primary_10_1145_1108768_1108818</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>10_1145_1108768_1108818</sourcerecordid><originalsourceid>FETCH-LOGICAL-c868-aa9afcad9539611465c273d69f2f7b2acbd103acae8d7370e4a79ed4815ace973</originalsourceid><addsrcrecordid>eNotjz1rwzAURTW00DTt3FV_wImeZUtPS8GEfgQC7ZDdvMhycHEsI8mF_Ps61NO9d7mcw9gLiA1AUW4BBGqFm1si4B1bCVAyK02BD-wxxh8hAEHhir1WU_IXSp2lvr_ysxtcmNdw5sG1ZJMPc488eR6ncfQh8ep7z92v76fU-eGJ3bfUR_e85Jod39-Ou8_s8PWx31WHzKLCjMhQa6kxpTRqBlSlzbVslGnzVp9ysqcGhCRLDhsttXAFaeOaAqEk64yWa7b9v7XBxziT1WPoLhSuNYj6ZlwvxvViLP8A6LdL9A</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype></control><display><type>article</type><title>Automatically generating refactorings to support API evolution</title><source>Association for Computing Machinery:Jisc Collections:ACM OPEN Journals 2023-2025 (reading list)</source><creator>Perkins, Jeff H.</creator><creatorcontrib>Perkins, Jeff H.</creatorcontrib><description>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.</description><identifier>ISSN: 0163-5948</identifier><identifier>DOI: 10.1145/1108768.1108818</identifier><language>eng</language><ispartof>Software engineering notes, 2006-01, Vol.31 (1), p.111-114</ispartof><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c868-aa9afcad9539611465c273d69f2f7b2acbd103acae8d7370e4a79ed4815ace973</citedby><cites>FETCH-LOGICAL-c868-aa9afcad9539611465c273d69f2f7b2acbd103acae8d7370e4a79ed4815ace973</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,776,780,27903,27904</link.rule.ids></links><search><creatorcontrib>Perkins, Jeff H.</creatorcontrib><title>Automatically generating refactorings to support API evolution</title><title>Software engineering notes</title><description>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.</description><issn>0163-5948</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2006</creationdate><recordtype>article</recordtype><recordid>eNotjz1rwzAURTW00DTt3FV_wImeZUtPS8GEfgQC7ZDdvMhycHEsI8mF_Ps61NO9d7mcw9gLiA1AUW4BBGqFm1si4B1bCVAyK02BD-wxxh8hAEHhir1WU_IXSp2lvr_ysxtcmNdw5sG1ZJMPc488eR6ncfQh8ep7z92v76fU-eGJ3bfUR_e85Jod39-Ou8_s8PWx31WHzKLCjMhQa6kxpTRqBlSlzbVslGnzVp9ysqcGhCRLDhsttXAFaeOaAqEk64yWa7b9v7XBxziT1WPoLhSuNYj6ZlwvxvViLP8A6LdL9A</recordid><startdate>200601</startdate><enddate>200601</enddate><creator>Perkins, Jeff H.</creator><scope>AAYXX</scope><scope>CITATION</scope></search><sort><creationdate>200601</creationdate><title>Automatically generating refactorings to support API evolution</title><author>Perkins, Jeff H.</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c868-aa9afcad9539611465c273d69f2f7b2acbd103acae8d7370e4a79ed4815ace973</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2006</creationdate><toplevel>online_resources</toplevel><creatorcontrib>Perkins, Jeff H.</creatorcontrib><collection>CrossRef</collection><jtitle>Software engineering notes</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Perkins, Jeff H.</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Automatically generating refactorings to support API evolution</atitle><jtitle>Software engineering notes</jtitle><date>2006-01</date><risdate>2006</risdate><volume>31</volume><issue>1</issue><spage>111</spage><epage>114</epage><pages>111-114</pages><issn>0163-5948</issn><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.</abstract><doi>10.1145/1108768.1108818</doi><tpages>4</tpages></addata></record>
fulltext fulltext
identifier ISSN: 0163-5948
ispartof Software engineering notes, 2006-01, Vol.31 (1), p.111-114
issn 0163-5948
language eng
recordid cdi_crossref_primary_10_1145_1108768_1108818
source Association for Computing Machinery:Jisc Collections:ACM OPEN Journals 2023-2025 (reading list)
title Automatically generating refactorings to support API evolution
url http://sfxeu10.hosted.exlibrisgroup.com/loughborough?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-24T17%3A23%3A49IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-crossref&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Automatically%20generating%20refactorings%20to%20support%20API%20evolution&rft.jtitle=Software%20engineering%20notes&rft.au=Perkins,%20Jeff%20H.&rft.date=2006-01&rft.volume=31&rft.issue=1&rft.spage=111&rft.epage=114&rft.pages=111-114&rft.issn=0163-5948&rft_id=info:doi/10.1145/1108768.1108818&rft_dat=%3Ccrossref%3E10_1145_1108768_1108818%3C/crossref%3E%3Cgrp_id%3Ecdi_FETCH-LOGICAL-c868-aa9afcad9539611465c273d69f2f7b2acbd103acae8d7370e4a79ed4815ace973%3C/grp_id%3E%3Coa%3E%3C/oa%3E%3Curl%3E%3C/url%3E&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true