Identifying the semantic and textual differences between two versions of a program
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
The string-to-string correction problem with block moves
ACM Transactions on Computer Systems (TOCS)
An Integrated Approach for Studying Architectural Evolution
IWPC '02 Proceedings of the 10th International Workshop on Program Comprehension
Dex: A Semantic-Graph Differencing Tool for Studying Changes in Large Code Bases
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Supporting Source Code Difference Analysis
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
A Differencing Algorithm for Object-Oriented Programs
Proceedings of the 19th IEEE international conference on Automated software engineering
Using Origin Analysis to Detect Merging and Splitting of Source Code Entities
IEEE Transactions on Software Engineering
Understanding source code evolution using abstract syntax tree matching
MSR '05 Proceedings of the 2005 international workshop on Mining software repositories
UMLDiff: an algorithm for object-oriented design differencing
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
A generic approach to supporting diagram differencing and merging for collaborative design
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
When Functions Change Their Names: Automatic Detection of Origin Relationships
WCRE '05 Proceedings of the 12th Working Conference on Reverse Engineering
Identifying Refactorings from Source-Code Changes
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
Automatic Inference of Structural Changes for Matching across Program Versions
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Determining detailed structural correspondence for generalization tasks
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Change Distilling: Tree Differencing for Fine-Grained Source Code Change Extraction
IEEE Transactions on Software Engineering
Proceedings of the 30th international conference on Software engineering
Discovering and representing systematic code changes
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Ldiff: An enhanced line differencing tool
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
A program differencing algorithm for verilog HDL
Proceedings of the IEEE/ACM international conference on Automated software engineering
Automated detection of refactorings in evolving components
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Hi-index | 0.00 |
When a software system evolves, its program entities such as classes/methods are also changed. System comprehension, maintenance, and other tasks require the detection of the changed entities between two versions. However, existing differencing tools are file-based and cannot handle well the common cases in which the methods/classes are reordered/moved or even renamed/modified. Moreover, many tools show the program changes at the text line level. In this demo, we present iDiff, a program differencing tool that is able to display the changes to classes/methods between two versions and to track the corresponding classes/methods even they were reordered/moved/renamed and/or modified. The key idea is that during software evolution, an entity could change its location, name, order, and even its internal implementation. However, its interaction with other entities would be more stable. iDiff represents a system at a version as an attributed graph, in which the nodes represent program entities, the edges represent the interactions between the nodes. Entities between two versions are matched via an incremental matching algorithm, which takes into account the similarity of interactions for matching. The differences of two versions of the entire system including its program entities are detected based on the matched entities.