JDiff: A differencing technique and tool for object-oriented programs

被引:68
作者
Apiwattanapong, Taweesup [1 ]
Orso, Alessandro [1 ]
Harrold, Mary Jean [1 ]
机构
[1] Georgia Inst Technol, Atlanta, GA 30332 USA
关键词
program differencing; software evolution;
D O I
10.1007/s10515-006-0002-0
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
During software evolution, information about changes between different versions of a program is useful for a number of software engineering tasks. For example, configuration-management systems can use change information to assess possible conflicts among updates from different users. For another example, in regression testing, knowledge about which parts of a program are unchanged can help in identifying test cases that need not be rerun. For many of these tasks, a purely syntactic differencing may not provide enough information for the task to be performed effectively. This problem is especially relevant in the case of object-oriented software, for which a syntactic change can have subtle and unforeseen effects. In this paper, we present a technique for comparing object-oriented programs that identifies both differences and correspondences between two versions of a program. The technique is based on a representation that handles object-oriented features and, thus, can capture the behavior of object-oriented programs. We also present JD(IFF), a tool that implements the technique for Java programs. Finally, we present the results of four empirical studies, performed on many versions of two medium-sized subjects, that show the efficiency and effectiveness of the technique when used on real programs.
引用
收藏
页码:3 / 36
页数:34
相关论文
共 31 条
[1]  
Apiwattanapong T, 2005, PROC INT CONF SOFTW, P432
[2]   A differencing algorithm for object-oriented programs [J].
Apiwattanapong, T ;
Orso, A ;
Harrold, MJ .
19TH INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING, PROCEEDINGS, 2004, :2-13
[3]  
BINKLEY D, 1992, P IEEE C SOFTW MAINT, P41
[4]  
Bohner S. A., 1996, SOFTWARE CHANGE IMPA
[5]   Understanding and measuring the sources of variation in the prioritization of regression test suites [J].
Elbaum, S ;
Gable, D ;
Rothermel, G .
SEVENTH INTERNATIONAL SOFTWARE METRICS SYMPOSIUM - METRICS 2001, PROCEEDINGS, 2000, :169-179
[6]  
Ernst Michael D., 2000, Ph.D.
[7]   THE PROGRAM DEPENDENCE GRAPH AND ITS USE IN OPTIMIZATION [J].
FERRANTE, J ;
OTTENSTEIN, KJ ;
WARREN, JD .
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 1987, 9 (03) :319-349
[8]   Populating a release history database from version control and bug tracking systems [J].
Fischer, M ;
Pinzger, M ;
Gall, H .
INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE, PROCEEDINGS, 2003, :23-32
[9]  
GERMAN DM, 2004, P 1 INT WORKSH MIN S, P17
[10]  
GRASS JE, 1992, USENIX C(PLUS-PLUS) TECHNICAL CONFERENCE PROCEEDINGS, P181