Tool support for managing repetitive program changes in evolving software

Software modification often requires consistent program changes, a group of similar, related changes, at multiple locations in a program. Developers are typically uneasy to (i) detect potential change anomalies such as omission errors or incorrect edits and (ii) determine related locations to apply consistent changes, which is a tedious and error-prone process. To address this problem, this study presents a technique for managing consistent program changes, checking and applying repetitive program transformation (CARP). Given program differencing results between original and edited program versions, CARP (i) infers change patterns to detect change anomalies, (ii) identifies required edit locations, and (iii) automatically applies adequate edits. It has been implemented in the context of the integrated development environment as an Eclipse plug-in. The authors evaluated CARP on three open-source projects and found that CARP detects seeded anomalies with 99.1% accuracy on average. Furthermore, it identifies change locations and transforms them with 98% accuracy. Their results show that CARP should help developers detect potential change anomalies in repetitive program changes and perform consistent changes automatically.

[1]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[2]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[3]  Martin P. Robillard,et al.  Recommending adaptive changes for framework evolution , 2011, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[4]  Claire Le Goues,et al.  GenProg: A Generic Method for Automatic Software Repair , 2012, IEEE Transactions on Software Engineering.

[5]  Aniello Cimitile,et al.  Decomposing legacy programs: a first step towards migrating to client-server platforms , 2000, J. Syst. Softw..

[6]  Giuseppe Visaggio,et al.  Extracting Reusable Funtions by Flow Graph-Based Program Slicing , 1997, IEEE Trans. Software Eng..

[7]  David E. Goldberg,et al.  Genetic Algorithms, Selection Schemes, and the Varying Effects of Noise , 1996, Evolutionary Computation.

[8]  Miryung Kim,et al.  Identifying and Summarizing Systematic Code Changes via Rule Inference , 2013, IEEE Transactions on Software Engineering.

[9]  Kaizhong Zhang,et al.  Simple Fast Algorithms for the Editing Distance Between Trees and Related Problems , 1989, SIAM J. Comput..