2013/07/05 by Jason Dagit, Dagit, Jason, Matthew Sottile +1
Computer Science · #Advanced Software Engineering Methodologies #FOS: Computer and information sciences #Software Engineering (cs.SE) #Software Engineering Research #Web Data Mining and Analysis #cs.SE
paper · pdf · doi:10.48550/arxiv.1307.1719
7 pages, submitted to document changes 2013
arxiv created 2013/07/05 · openalex publication_date 2013/07/05 · arxiv updated 2013/07/09 · openalex created_date 2025/10/10 · openalex updated_date 2026/07/28
Traditional algorithms for detecting differences in source code focus on differences between lines. As such, little can be learned about abstract changes that occur over time within a project. Structural differencing on the program's abstract syntax tree reveals changes at the syntactic level within code, which allows us to further process the differences to understand their meaning. We propose that grouping of changes by some metric of similarity, followed by pattern extraction via antiunification will allow us to identify patterns of change within a software project from the sequence of changes contained within a Version Control System (VCS). Tree similarity metrics such as a tree edit distance can be used to group changes in order to identify groupings that may represent a single class of change (e.g., adding a parameter to a function call). By applying antiunification within each group we are able to generalize from families of concrete changes to patterns of structural change. Studying patterns of change at the structural level, instead of line-by-line, allows us to gain insight into the evolution of software.