A Method for Analyzing Code Homology in Genealogy of Evolving Software (FASE2010)

In this paper, we propose an automated method for detecting and tracking homologous code in genealogy of evolving software using fine-grained tree differencing on source code. Such a tool would help software developers/maintainers to better understand the source code and to detect/prevent inconsistent modifications that may lead to latent errors.

Abstract

A software project often contains a large amount of homologous code, i.e., similar code distributed in different versions or species sharing common ancestry.  Code homology typically arises when the code is inherited, duplicated, and patched.  In this paper, we propose an automated method for detecting and tracking homologous code in genealogy of evolving software using fine-grained tree differencing on source code.  Such a tool would help software developers/maintainers to better understand the source code and to detect/prevent inconsistent modifications that may lead to latent errors.  The results of experiments on several large-scale software projects are reported to show the capability of the method, including BIND DNS servers, a couple of Java software systems jEdit and Apache Ant, and the entire Linux device driver subsystem.

Reference

Masatomo Hashimoto and Akira Mori. A Method for Analyzing Code Homology in Genealogy of Evolving Software. In Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering (FASE’10), David S. Rosenblum and Gabriele Taentzer (Eds.). Springer-Verlag, Berlin, Heidelberg, pp. 91-106, 2010.

Download as PDF