• DocumentCode
    918358
  • Title

    Change Distilling:Tree Differencing for Fine-Grained Source Code Change Extraction

  • Author

    Fluri, Beat ; Wursch, M. ; Pinzger, Martin ; Gall, Harald C.

  • Author_Institution
    Univ. of Zurich, Zurich
  • Volume
    33
  • Issue
    11
  • fYear
    2007
  • Firstpage
    725
  • Lastpage
    743
  • Abstract
    A key issue in software evolution analysis is the identification of particular changes that occur across several versions of a program. We present change distilling, a tree differencing algorithm for fine-grained source code change extraction. For that, we have improved the existing algorithm by Chawathe et al. for extracting changes in hierarchically structured data. Our algorithm extracts changes by finding both a match between the nodes of the compared two abstract syntax trees and a minimum edit script that can transform one tree into the other given the computed matching. As a result, we can identify fine-grained change types between program versions according to our taxonomy of source code changes. We evaluated our change distilling algorithm with a benchmark that we developed, which consists of 1,064 manually classified changes in 219 revisions of eight methods from three different open source projects. We achieved significant improvements in extracting types of source code changes: Our algorithm approximates the minimum edit script 45 percent better than the original change extraction approach by Chawathe et al. We are able to find all occurring changes and almost reach the minimum conforming edit script, that is, we reach a mean absolute percentage error of 34 percent, compared to the 79 percent reached by the original algorithm. The paper describes both our change distilling algorithm and the results of our evolution.
  • Keywords
    software maintenance; software prototyping; tree data structures; abstract syntax trees; change distilling tree differencing algorithm; fine-grained source code change extraction; minimum edit script; software evolution analysis; Algorithm design and analysis; Data mining; History; Maintenance engineering; Programming profession; Software algorithms; Software maintenance; Software systems; Software tools; Taxonomy; Source code change extraction; software evolution analysis; software repositories; tree differencing algorithms;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/TSE.2007.70731
  • Filename
    4339230