Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Problem frames: analyzing and structuring software development problems
Problem frames: analyzing and structuring software development problems
Semantic Diff: A Tool for Summarizing the Effects of Modifications
ICSM '94 Proceedings of the International Conference on Software Maintenance
Towards Modeling and Reasoning Support for Early-Phase Requirements Engineering
RE '97 Proceedings of the 3rd IEEE International Symposium on Requirements Engineering
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
A Differencing Algorithm for Object-Oriented Programs
Proceedings of the 19th IEEE international conference on Automated software engineering
Efficient Relational Calculation for Software Analysis
IEEE Transactions on Software Engineering
Using Origin Analysis to Detect Merging and Splitting of Source Code Entities
IEEE Transactions on Software Engineering
Toward an engineering discipline for grammarware
ACM Transactions on Software Engineering and Methodology (TOSEM)
UMLDiff: an algorithm for object-oriented design differencing
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
How do APIs evolve? A story of refactoring: Research Articles
Journal of Software Maintenance and Evolution: Research and Practice - IEEE International Conference on Software Maintenance (ICSM2005)
Proceedings of the 2006 international workshop on Global integrated model management
The TXL source transformation language
Science of Computer Programming - The fourth workshop on language descriptions, tools, and applications (LDTA'04)
Matching and Merging of Statecharts Specifications
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Change Distilling: Tree Differencing for Fine-Grained Source Code Change Extraction
IEEE Transactions on Software Engineering
Security Requirements Engineering: A Framework for Representation and Analysis
IEEE Transactions on Software Engineering
Recommending adaptive changes for framework evolution
Proceedings of the 30th international conference on Software engineering
Proceedings of the 30th international conference on Software engineering
Constructing difference tools for models using the SiDiff framework
Companion of the 30th international conference on Software engineering
ICPC '08 Proceedings of the 2008 The 16th IEEE International Conference on Program Comprehension
Tracking Your Changes: A Language-Independent Approach
IEEE Software
Monitoring and diagnosing software requirements
Automated Software Engineering
Discovering and representing systematic code changes
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
MeCC: memory comparison-based clone detector
Proceedings of the 33rd International Conference on Software Engineering
Non-essential changes in version histories
Proceedings of the 33rd International Conference on Software Engineering
Closing the gap between modelling and java
SLE'09 Proceedings of the Second international conference on Software Language Engineering
OpenArgue: Supporting argumentation to evolve secure software systems
RE '11 Proceedings of the 2011 IEEE 19th International Requirements Engineering Conference
Change-driven model transformations
Software and Systems Modeling (SoSyM)
Towards learning to detect meaningful changes in software
Proceedings of the International Workshop on Machine Learning Technologies in Software Engineering
Maintaining invariant traceability through bidirectional transformations
Proceedings of the 34th International Conference on Software Engineering
Hi-index | 0.00 |
Software developers are often interested in particular changes in programs that are relevant to their current tasks: not all changes to evolving software are equally important. However, most existing differencing tools, such as diff, notify developers of more changes than they wish to see. In this paper, we propose a technique to specify and automatically detect only those changes in programs deemed meaningful, or relevant, to a particular development task. Using four elementary annotations on the grammar of any programming language, namely Ignore, Order, Prefer and Scope, developers can specify, with limited effort, the type of change they wish to detect. Our algorithms use these annotations to transform the input programs into a normalised form, and to remove clones across different normalised programs in order to detect non-trivial and relevant differences. We evaluate our tool on a benchmark of programs to demonstrate its improved precision compared to other differencing approaches.