Program evolution: processes of software change
Program evolution: processes of software change
Mental models and software maintenance
Journal of Systems and Software
Program understanding: challenge for the 1990's
IBM Systems Journal
The mythical man-month (anniversary ed.)
The mythical man-month (anniversary ed.)
Analyzing Regression Test Selection Techniques
IEEE Transactions on Software Engineering
Software reconnaissance: mapping program features to code
Journal of Software Maintenance: Research and Practice
TestTube: a system for selective regression testing
ICSE '94 Proceedings of the 16th international conference on Software engineering
The use of program profiling for software maintenance with applications to the year 2000 problem
ESEC '97/FSE-5 Proceedings of the 6th European SOFTWARE ENGINEERING conference held jointly with the 5th ACM SIGSOFT international symposium on Foundations of software engineering
Effectively prioritizing tests in development environment
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Impact Analysis - Towards a Framework for Comparison
ICSM '93 Proceedings of the Conference on Software Maintenance
“Software reliability in online real time environment”
Proceedings of the international conference on Reliable software
Mining Version Histories to Guide Software Changes
Proceedings of the 26th International Conference on Software Engineering
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
Toward Understanding the Rhetoric of Small Source Code Changes
IEEE Transactions on Software Engineering
Dynamic Feature Traces: Finding Features in Unfamiliar Code
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Are refactorings less error-prone than other changes?
Proceedings of the 2006 international workshop on Mining software repositories
Questions programmers ask during software evolution tasks
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Identifying Failure Causes in Java Programs: An Application of Change Impact Analysis
IEEE Transactions on Software Engineering
Information Needs in Collocated Software Development Teams
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Empirical evaluations of regression test selection techniques: a systematic review
Proceedings of the Second ACM-IEEE international symposium on Empirical software engineering and measurement
An Approach for Mapping Features to Code Based on Static and Dynamic Analysis
ICPC '08 Proceedings of the 2008 The 16th IEEE International Conference on Program Comprehension
Differential symbolic execution
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Discovering and representing systematic code changes
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
AVA: automated interpretation of dynamically detected anomalies
Proceedings of the eighteenth international symposium on Software testing and analysis
Identifying opaque behavioural changes
Proceedings of the 33rd International Conference on Software Engineering
Locating failure-inducing environment changes
Proceedings of the 10th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools
Graph-based analysis and prediction for software evolution
Proceedings of the 34th International Conference on Software Engineering
Application-Only call graph construction
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
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
Automated architectural evaluation of web information systems
Proceedings of the 19th Brazilian symposium on Multimedia and the web
Hi-index | 0.00 |
Developers evolve a software system by changing the program source code, by modifying its context by updating libraries or changing its configuration, and by improving its test suite. Any of these changes can cause differences in program behaviour. In general, program paths may appear or disappear between executions of two subsequent versions of a system. Some of these behavioural differences are expected by a developer; for example, executing new program paths is often precisely what is intended when adding a new test. Other behavioural differences may or may not be expected or benign. For example, changing an XML configuration file may cause a previously-executed path to disappear, which may or may not be expected and could be problematic. Furthermore, the degree to which a behavioural change might be problematic may only become apparent over time as the new behaviour interacts with other changes. We present an approach to identify specific program call dependencies where the programmer's changes to the program source code, its tests, or its environment are not apparent in the system's behaviour, or vice versa. Using a static and a dynamic call graph from each of two program versions, we partition dependencies based on their presence in each of the four graphs. Particular partitions contain dependencies that help a programmer develop insights about often subtle behavioural changes.