Automated detection of api refactorings in libraries

Kunal Taneja, Danny Dig, Tao Xie

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Software developers often do not build software from scratch but reuse software libraries. In theory, the APIs of a library should be stable, but in practice they do change and thus require changes in software that reuses the library. Our previous study of five reusable components shows that more than 80% of these API changes are caused by refactorings. If these refactorings could be automatically detected, they could be used to automatically upgrade applications. In this paper, we present a technique and its supporting tool, RefacLib, to automatically detect refactorings in libraries. RefacLib uses syntactic analysis in the first phase to quickly detect refactoring candidates across two versions of a library. In the second phase, RefacLib uses various heuristics to refine the results. We used RefacLib to detect refactorings in five open source libraries and frameworks. The experiments show that RefacLib can process realistic code bases and detects refactorings with practical accuracy.

Original languageEnglish (US)
Title of host publicationASE'07 - 2007 ACM/IEEE International Conference on Automated Software Engineering
Pages377-380
Number of pages4
DOIs
StatePublished - 2007
Externally publishedYes
Event22nd IEEE/ACM International Conference on Automated Software Engineering, ASE'07 - Atlanta, GA, United States
Duration: Nov 5 2007Nov 9 2007

Publication series

NameASE'07 - 2007 ACM/IEEE International Conference on Automated Software Engineering

Other

Other22nd IEEE/ACM International Conference on Automated Software Engineering, ASE'07
Country/TerritoryUnited States
CityAtlanta, GA
Period11/5/0711/9/07

Keywords

  • code reuse
  • libraries
  • refactoring
  • software maintainance

ASJC Scopus subject areas

  • Computational Theory and Mathematics
  • Software

Fingerprint

Dive into the research topics of 'Automated detection of api refactorings in libraries'. Together they form a unique fingerprint.

Cite this