Slicing and replaying code change history

Change-aware development environments have recently become feasible and reasonable. These environments can automatically record fine-grained code changes on a program and allow programmers to replay the recorded changes in chronological order. However, they do not always need to replay all the code changes to investigate how a particular entity of the program has been changed. Therefore, they often skip several code changes of no interest. This skipping action is an obstacle that makes many programmers hesitate in using existing replaying tools. This paper proposes a slicing mechanism that can extract only code changes necessary to construct a particular class member of a Java program from the whole history of past code changes. In this mechanism, fine-grained code changes are represented by edit operations recorded on source code of a program. The paper also presents a running tool that implements the proposed slicing and replays its resulting slices. With this tool, programmers can avoid replaying edit operations nonessential to the construction of class members they want to understand.

[1]  Katsuhisa Maruyama,et al.  A change-aware development environment by recording editing operations of source code , 2008, MSR '08.

[2]  Ahmed E. Hassan,et al.  Measuring the progress of projects using the time dependence of code changes , 2009, 2009 IEEE International Conference on Software Maintenance.

[3]  Romain Robbes,et al.  A Change-based Approach to Software Evolution , 2006, EVOL.

[4]  Michele Lanza,et al.  Software Evolution Comprehension: Replay to the Rescue , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[5]  James A. Jones,et al.  History slicing , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[6]  Anneliese Amschler Andrews,et al.  Program Comprehension During Software Maintenance and Evolution , 1995, Computer.

[7]  Romain Robbes,et al.  SpyWare: a change-aware development toolset , 2008, ICSE '08.

[8]  Theo D'Hondt,et al.  Change-oriented software engineering , 2007, ICDL '07.

[9]  Michele Lanza,et al.  Syde: a tool for collaborative software development , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[10]  Mark Harman,et al.  Program comprehension assisted by slicing and transformation , 1995 .

[11]  Daniel M. Germán,et al.  Change Impact Graphs: Determining the Impact of Prior Code Changes , 2008, 2008 Eighth IEEE International Working Conference on Source Code Analysis and Manipulation.

[12]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[13]  Andreas Zeller,et al.  What is the long-term impact of changes? , 2008, RSSE '08.