Identifying and Summarizing Systematic Code Changes via Rule Inference
Authors:
- 6 March 2012
- journal article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. 39 (1) , 45-62
Abstract
Programmers often need to reason about how a program evolved between two or more program versions. Reasoning about program changes is challenging as there is a significant gap between how programmers think about changes and how existing program differencing tools represent such changes. For example, even though modification of a locking protocol is conceptually simple and systematic at a code level, diff extracts scattered text additions and deletions per file. To enable programmers to reason about program differences at a high level, this paper proposes a rule-based program differencing approach that automatically discovers and represents systematic changes as logic rules. To demonstrate the viability of this approach, we instantiated this approach at two different abstraction levels in Java: first at the level of application programming interface (API) names and signatures, and second at the level of code elements (e.g., types, methods, and fields) and structural dependences (e.g., method-calls, field-accesses, and subtyping relationships). The benefit of this approach is demonstrated through its application to several open source projects as well as a focus group study with professional software engineers from a large e-commerce company.Keywords
This publication has 47 references indexed in Scilit:
- Template-based reconstruction of complex refactorings2010
- Aligning development tools with the way programmers think about code changes2007
- The TXL source transformation languageScience of Computer Programming, 2006
- Using origin analysis to detect merging and splitting of source code entitiesIEEE Transactions on Software Engineering, 2005
- Crisp: a debugging tool for Java programs2005
- An automatic approach to identify class evolution discontinuities2004
- Program Transformation with Stratego/XT2004
- Reconstruction of successful software evolution using clone detection2003
- CCFinder: a multilinguistic token-based code clone detection system for large scale source codeIEEE Transactions on Software Engineering, 2002
- Finding refactorings via change metrics2000