The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Identifying syntactic differences between two programs
Software—Practice & Experience
Analyzing Regression Test Selection Techniques
IEEE Transactions on Software Engineering
A safe, efficient regression test selection technique
ACM Transactions on Software Engineering and Methodology (TOSEM)
Analysis and Testing of Programs with Exception Handling Constructs
IEEE Transactions on Software Engineering
Regression test selection for Java software
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Software Change Impact Analysis
Software Change Impact Analysis
A State-of-the-Art Survey on Software Merging
IEEE Transactions on Software Engineering
Semantic Diff: A Tool for Summarizing the Effects of Modifications
ICSM '94 Proceedings of the International Conference on Software Maintenance
Whole program Path-Based dynamic impact analysis
Proceedings of the 25th International Conference on Software Engineering
The Impact of Software Evolution on Code Coverage Information
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Extensible Language-Aware Merging
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
Dynamically discovering likely program invariants
Dynamically discovering likely program invariants
Leveraging field data for impact analysis and regression testing
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
Populating a Release History Database from Version Control and Bug Tracking Systems
ICSM '03 Proceedings of the International Conference on Software Maintenance
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
Chianti: a tool for change impact analysis of java programs
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Scaling regression testing to large software systems
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Efficient and precise dynamic impact analysis using execute-after sequences
Proceedings of the 27th international conference on Software engineering
UMLDiff: an algorithm for object-oriented design differencing
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Change Distilling: Tree Differencing for Fine-Grained Source Code Change Extraction
IEEE Transactions on Software Engineering
COMPUTE '08 Proceedings of the 1st Bangalore Annual Compute Conference
Branching and merging in the repository
Proceedings of the 2008 international working conference on Mining software repositories
Automatic Construction of a Bug Library for Object-Oriented Novice Java Programmer Errors
ITS '08 Proceedings of the 9th international conference on Intelligent Tutoring Systems
Differential symbolic execution
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Issues in applying a model driven approach to reconfigurations of satellite software
Proceedings of the 1st International Workshop on Hot Topics in Software Upgrades
Semantics-aware trace analysis
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
SemDiff: Analysis and recommendation support for API evolution
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Identifying semantic differences in AspectJ programs
Proceedings of the eighteenth international symposium on Software testing and analysis
BUGINNINGS: identifying the origins of a bug
Proceedings of the 3rd India software engineering conference
Automatically documenting program changes
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)
Directed incremental symbolic execution
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Studying software evolution using artefacts' shared information content
Science of Computer Programming
Selecting peers for execution comparison
Proceedings of the 2011 International Symposium on Software Testing and Analysis
An evaluation of change-based coverage criteria
Proceedings of the 10th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools
ADDiff: semantic differencing for activity diagrams
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Semistructured merge: rethinking merge in revision control systems
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
CDDiff: semantic differencing for class diagrams
Proceedings of the 25th European conference on Object-oriented programming
Rewriting history: more power to creative people
Proceedings of the 23rd Australian Computer-Human Interaction Conference
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
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Structured merge with auto-tuning: balancing precision and performance
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
History slicing: assisting code-evolution tasks
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
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
Efficient and flexible GUI test execution via test merging
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Detecting inconsistencies in wrappers: a case study
Proceedings of the 2013 International Conference on Software Engineering
Maintaining the health of software monitors
Innovations in Systems and Software Engineering
Hi-index | 0.00 |
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 JDiff, 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.