Requirements engineering: a roadmap
Proceedings of the Conference on The Future of Software Engineering
Does Code Decay? Assessing the Evidence from Change Management Data
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
An Implementation of and Experiment with Semantic Differencing
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Detection of software modules with high debug code churn in a very large legacy system
ISSRE '96 Proceedings of the The Seventh International Symposium on Software Reliability Engineering
Predicting problems caused by component upgrades
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
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
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
The Top Ten List: Dynamic Fault Prediction
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
CP-Miner: Finding Copy-Paste and Related Bugs in Large-Scale Software Code
IEEE Transactions on Software Engineering
Maintaining mental models: a study of developer work habits
Proceedings of the 28th international conference on Software engineering
Finding failure-inducing changes in java programs using change classification
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
IEEE Transactions on Software Engineering
Information Needs in Collocated Software Development Teams
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Predicting Faults from Cached History
ICSE '07 Proceedings of the 29th international conference on Software Engineering
JDiff: A differencing technique and tool for object-oriented programs
Automated Software Engineering
Heuristic ranking of java program edits for fault localization
Proceedings of the 2007 international symposium on Software testing and analysis
Context-based detection of clone-related bugs
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Usage and Perceptions of Agile Software Development in an Industrial Context: An Exploratory Study
ESEM '07 Proceedings of the First International Symposium on Empirical Software Engineering and Measurement
Change Distilling: Tree Differencing for Fine-Grained Source Code Change Extraction
IEEE Transactions on Software Engineering
An empirical study of software developers' management of dependencies and changes
Proceedings of the 30th international conference on Software engineering
Classifying Software Changes: Clean or Buggy?
IEEE Transactions on Software Engineering
Asking and Answering Questions during a Programming Change Task
IEEE Transactions on Software Engineering
The impact of static-dynamic coupling on remodularization
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
How we refactor, and how we know it
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Discovering and representing systematic code changes
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
JUnitMX - A change-aware unit testing tool
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
SemDiff: Analysis and recommendation support for API evolution
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
A Systematic Survey of Program Comprehension through Dynamic Analysis
IEEE Transactions on Software Engineering
Test-Suite Augmentation for Evolving Software
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Clone-Aware Configuration Management
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
Has the bug really been fixed?
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
A large-scale empirical study of practitioners' use of object-oriented concepts
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Using information fragments to answer the questions developers ask
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Developers ask reachability questions
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Recurring bug fixes in object-oriented programs
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
AURA: a hybrid approach to identify framework evolution
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
An eclectic approach for change impact analysis
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Automatically documenting program changes
Proceedings of the IEEE/ACM international conference on Automated software engineering
Test generation to expose changes in evolving programs
Proceedings of the IEEE/ACM international conference on Automated software engineering
Matching dependence-related queries in the system dependence graph
Proceedings of the IEEE/ACM international conference on Automated software engineering
Scalable and systematic detection of buggy inconsistencies in source code
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
IEEE Transactions on Software Engineering
Non-essential changes in version histories
Proceedings of the 33rd International Conference on Software Engineering
Identifying program, test, and environmental changes that affect behaviour
Proceedings of the 33rd International Conference on Software Engineering
Detecting software modularity violations
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)
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
To talk or not to talk: factors that influence communication around changesets
Proceedings of the ACM 2012 conference on Computer Supported Cooperative Work
Information needs for software development analytics
Proceedings of the 34th International Conference on Software Engineering
Automatic patch generation learned from human-written patches
Proceedings of the 2013 International Conference on Software Engineering
Hi-index | 0.00 |
Software evolves with continuous source-code changes. These code changes usually need to be understood by software engineers when performing their daily development and maintenance tasks. However, despite its high importance, such change-understanding practice has not been systematically studied. Such lack of empirical knowledge hinders attempts to evaluate this fundamental practice and improve the corresponding tool support. To address this issue, in this paper, we present a large-scale quantitative and qualitative study at Microsoft. The study investigates the role of understanding code changes during software-development process, explores engineers' information needs for understanding changes and their requirements for the corresponding tool support. The study results reinforce our beliefs that understanding code changes is an indispensable task performed by engineers in software-development process. A number of insufficiencies in the current practice also emerge from the study results. For example, it is difficult to acquire important information needs such as a change's completeness, consistency, and especially the risk imposed by it on other software components. In addition, for understanding a composite change, it is valuable to decompose it into sub-changes that are aligned with individual development issues; however, currently such decomposition lacks tool support.