Expertise recommender: a flexible recommendation system and architecture
CSCW '00 Proceedings of the 2000 ACM conference on Computer supported cooperative work
Expertise browser: a quantitative approach to identifying expertise
Proceedings of the 24th International Conference on Software Engineering
CVSSearch: Searching through Source Code using CVS Comments
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)
Mining Version Histories to Guide Software Changes
Proceedings of the 26th International Conference on Software Engineering
Using Development History Sticky Notes to Understand Software Architecture
IWPC '04 Proceedings of the 12th IEEE International Workshop on Program Comprehension
Supporting Source Code Difference Analysis
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
How Developers Drive Software Evolution
IWPSE '05 Proceedings of the Eighth International Workshop on Principles of Software Evolution
Modeling history to analyze software evolution: Research Articles
Journal of Software Maintenance and Evolution: Research and Practice
Maintaining mental models: a study of developer work habits
Proceedings of the 28th international conference on Software engineering
Mining version archives for co-changed lines
Proceedings of the 2006 international workshop on Mining software repositories
Information Needs in Collocated Software Development Teams
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Refactoring-Aware Configuration Management for Object-Oriented Programs
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
Proceedings of the 30th international conference on Software engineering
Branching and merging in the repository
Proceedings of the 2008 international working conference on Mining software repositories
Deep intellisense: a tool for rehydrating evaporated information
Proceedings of the 2008 international working conference on Mining software repositories
Mining usage expertise from version archives
Proceedings of the 2008 international working conference on Mining software repositories
A degree-of-knowledge model to capture source code familiarity
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
A program differencing algorithm for verilog HDL
Proceedings of the IEEE/ACM international conference on Automated software engineering
Hard-to-answer questions about code
Evaluation and Usability of Programming Languages and Tools
Tracking the evolution of code clones
SOFSEM'11 Proceedings of the 37th international conference on Current trends in theory and practice of computer science
Supporting software history exploration
Proceedings of the 8th Working Conference on Mining Software Repositories
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Hi-index | 0.00 |
Many software-engineering tasks require developers to understand the history and evolution of source code. However, today's software-development techniques and tools are not well suited for the easy and efficient procurement of such information. In this paper, we present an approach called history slicing that can automatically identify a minimal number of code modifications, across any number of revisions, for any arbitrary segment of source code at fine granularity. We also present our implementation of history slicing, Chronos, that includes a novel visualization of the entire evolution for the code of interest. We provide two experiments: one experiment automatically computes 16,000 history slices to determine the benefit brought by various levels of automation, and another experiment that assesses the practical implications of history slicing for actual developers using the technique for actual software-maintenance tasks that involve code evolution. The experiments show that history slicing offered drastic improvements over the conventional techniques in three ways: (1) the amount of information needed to be examined and traced by developers was reduced by up to three orders of magnitude; (2) the correctness of developers attempting to solve software-maintenance tasks was more than doubled; and (3) the time to completion of these software-maintenance tasks was almost halved.