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
Fast algorithms for the unit cost editing distance between trees
Journal of Algorithms
Structure-oriented merging of revisions of software documents
SCM '91 Proceedings of the 3rd international workshop on Software configuration management
Identifying syntactic differences between two programs
Software—Practice & Experience
Journal of Systems and Software
Change detection in hierarchically structured information
SIGMOD '96 Proceedings of the 1996 ACM SIGMOD international conference on Management of data
The Tree-to-Tree Correction Problem
Journal of the ACM (JACM)
A fast algorithm for computing longest common subsequences
Communications of the ACM
A State-of-the-Art Survey on Software Merging
IEEE Transactions on Software Engineering
Algorithms on Trees and Graphs
Algorithms on Trees and Graphs
Semantic Diff: A Tool for Summarizing the Effects of Modifications
ICSM '94 Proceedings of the International Conference on Software Maintenance
Binding Object Models to Source Code: An Approach to Object-Oriented Re-Architecting
COMPSAC '98 Proceedings of the 22nd International Computer Software and Applications Conference
Detection of Logical Coupling Based on Product Release History
ICSM '98 Proceedings of the International Conference on Software Maintenance
Clone Detection Using Abstract Syntax Trees
ICSM '98 Proceedings of the International Conference on Software Maintenance
An Integrated Approach for Studying Architectural Evolution
IWPC '02 Proceedings of the 10th International Workshop on Program Comprehension
Predicting Source Code Changes by Mining Change History
IEEE Transactions on Software Engineering
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
Studying The Evolution of Software Systems Using Evolutionary Code Extractors
IWPSE '04 Proceedings of the Principles of Software Evolution, 7th International Workshop
Using Origin Analysis to Detect Merging and Splitting of Source Code Entities
IEEE Transactions on Software Engineering
Mining Version Histories to Guide Software Changes
IEEE Transactions on Software Engineering
Hipikat: A Project Memory for Software Development
IEEE Transactions on Software Engineering
Toward Understanding the Rhetoric of Small Source Code Changes
IEEE Transactions on Software Engineering
HATARI: raising risk awareness
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
MSR '05 Proceedings of the 2005 international workshop on Mining software repositories
A survey on tree edit distance and related problems
Theoretical Computer Science
Analyzing the Evolutionary History of the Logical Design of Object-Oriented Software
IEEE Transactions on Software Engineering
UMLDiff: an algorithm for object-oriented design differencing
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
Classifying Change Types for Qualifying Change Couplings
ICPC '06 Proceedings of the 14th IEEE International Conference on Program Comprehension
Program element matching for multi-version program analyses
Proceedings of the 2006 international workshop on Mining software repositories
Detecting similar Java classes using tree algorithms
Proceedings of the 2006 international workshop on Mining software repositories
Automatic Inference of Structural Changes for Matching across Program Versions
ICSE '07 Proceedings of the 29th international conference on Software Engineering
JDiff: A differencing technique and tool for object-oriented programs
Automated Software Engineering
Identifying Changed Source Code Lines from Version Repositories
MSR '07 Proceedings of the Fourth International Workshop on Mining Software Repositories
Recommending adaptive changes for framework evolution
Proceedings of the 30th international conference on Software engineering
A change-aware development environment by recording editing operations of source code
Proceedings of the 2008 international working conference on Mining software repositories
On the relation of refactorings and software defect prediction
Proceedings of the 2008 international working conference on Mining software repositories
Improving change descriptions with change contexts
Proceedings of the 2008 international working conference on Mining software repositories
Annotation refactoring: inferring upgrade transformations for legacy applications
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Recommending method invocation context changes
Proceedings of the 2008 international workshop on Recommendation systems for software engineering
What is the long-term impact of changes?
Proceedings of the 2008 international workshop on Recommendation systems for software engineering
Accurate and Efficient Structural Characteristic Feature Extraction for Clone Detection
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Ldiff: An enhanced line differencing tool
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
SemDiff: Analysis and recommendation support for API evolution
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Change impact graphs: Determining the impact of prior codechanges
Information and Software Technology
Analyzing the co-evolution of comments and source code
Software Quality Control
Discovering Patterns of Change Types
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Identifying static analysis techniques for finding non-fix hunks in fix revisions
Proceedings of the ACM first international workshop on Data-intensive software management and mining
Empirical Evaluation of Strategies to Detect Logical Change Dependencies
SOFSEM '10 Proceedings of the 36th Conference on Current Trends in Theory and Practice of Computer Science
Exploring the design space of proactive tool support for copy-and-paste programming
CASCON '09 Proceedings of the 2009 Conference of the Center for Advanced Studies on Collaborative Research
Supporting developers with natural language queries
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Customized awareness: recommending relevant external change events
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Actively comparing clones inside the code editor
Proceedings of the 4th International Workshop on Software Clones
Distinguishing copies from originals in software clones
Proceedings of the 4th International Workshop on Software Clones
LSdiff: a program differencing tool to identify systematic structural differences
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Capturing the long-term impact of changes
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Federated access control and workflow enforcement in systems configuration
LISA'09 Proceedings of the 23rd conference on Large installation system administration
A program differencing algorithm for verilog HDL
Proceedings of the IEEE/ACM international conference on Automated software engineering
Replaying past changes in multi-developer projects
Proceedings of the Joint ERCIM Workshop on Software Evolution (EVOL) and International Workshop on Principles of Software Evolution (IWPSE)
A graph-based approach to API usage adaptation
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Achievements and challenges in software reverse engineering
Communications of the ACM
Some issues in the 'archaeology' of software evolution
GTTSE'09 Proceedings of the 3rd international summer school conference on Generative and transformational techniques in software engineering III
An empirical study on the influence of pattern roles on change-proneness
Empirical Software Engineering
Representing clones in a localized manner
Proceedings of the 5th International Workshop on Software Clones
Comparing fine-grained source code changes and code churn for bug prediction
Proceedings of the 8th Working Conference on Mining Software Repositories
An empirical investigation into the role of API-level refactorings during software evolution
Proceedings of the 33rd International Conference on Software Engineering
Non-essential changes in version histories
Proceedings of the 33rd International Conference on Software Engineering
Systematic editing: generating program transformations from an example
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Recommending Adaptive Changes for Framework Evolution
ACM Transactions on Software Engineering and Methodology (TOSEM)
Selecting peers for execution comparison
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Using the gini coefficient for bug prediction in eclipse
Proceedings of the 12th International Workshop on Principles of Software Evolution and the 7th annual ERCIM Workshop on Software Evolution
Historage: fine-grained version control system for Java
Proceedings of the 12th International Workshop on Principles of Software Evolution and the 7th annual ERCIM Workshop on Software Evolution
Sydit: creating and applying a program transformation from an example
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Operation-based, fine-grained version control model for tree-based representation
FASE'10 Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering
Dynamic computation of change operations in version management of business process models
ECMFA'10 Proceedings of the 6th European conference on Modelling Foundations and Applications
iDiff: Interaction-based program differencing tool
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Specifying and detecting meaningful changes in programs
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Refining code ownership with synchronous changes
Empirical Software Engineering
WitchDoctor: IDE support for real-time auto-completion of refactorings
Proceedings of the 34th International Conference on Software Engineering
Locating distinguishing features using diff sets
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Is it dangerous to use version control histories to study source code evolution?
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurement
How do software engineers understand code changes?: an exploratory study in industry
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Matching business process workflows across abstraction levels
MODELS'12 Proceedings of the 15th international conference on Model Driven Engineering Languages and Systems
Detecting source code changes to maintain the consistence of behavioral model
Proceedings of the Fourth Asia-Pacific Symposium on Internetware
LASE: locating and applying systematic edits by learning from examples
Proceedings of the 2013 International Conference on Software Engineering
Proceedings of the 2013 International Conference on Software Engineering
A framework for managing cloned product variants
Proceedings of the 2013 International Conference on Software Engineering
Understanding and simulating software evolution
Proceedings of the 2013 International Conference on Software Engineering
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Identifying clone removal opportunities based on co-evolution analysis
Proceedings of the 2013 International Workshop on Principles of Software Evolution
Source code management for projectional editing
Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
Evaluating a query framework for software evolution data
ACM Transactions on Software Engineering and Methodology (TOSEM) - Testing, debugging, and error handling, formal methods, lifecycle concerns, evolution and maintenance
Hi-index | 0.02 |
A key issue in software evolution analysis is the identification of particular changes that occur across several versions of a program. We present change distilling, a tree differencing algorithm for fine-grained source code change extraction. For that, we have improved the existing algorithm of Chawathe et al. for extracting changes in hierarchically structured data. Our algorithm detects changes by finding a match between nodes of the compared two abstract syntax trees and a minimum edit script. We can identify change types between program versions according to our taxonomy of source code changes. We evaluated our change distilling algorithm with a benchmark we developed that consists of 1,064 manually classified changes in 219 revisions from three different open source projects. We achieved significant improvements in extracting types of source code changes: our algorithm approximates the minimum edit script by 45% better than the original change extraction approach by Chawathe et al. We are able to find all occurring changes and almost reach the minimum conforming edit script, i.e., we reach a mean absolute percentage error of 34%, compared to 79% reached by the original algorithm. The paper describes both the change distilling and the results of our evaluation.