Skip to main content
eScholarship
Open Access Publications from the University of California

UC Irvine

UC Irvine Electronic Theses and Dissertations bannerUC Irvine

A Characterization and Partial Automation of the Multi-revision, Fine-grained Analysis of Code History as an Efficient and Accurate Mechanism to Support Software Development

Abstract

Multiple studies found that developer questions about the history of code were among the hardest and most time-consuming to answer. In fact, the study of multi-revision, fine-grained code history with current approaches is a laborious, repetitive, and as such, error-prone process. In this dissertation, I posit the thesis that the multi-revision, fine-grained analysis of source-code history can be partially automated in a way that is efficient, that provides support to answer software development questions, and that accurately models source-code evolution. I present a series of techniques, tools and experiments that I developed and performed in order to evaluate this thesis. In the first step towards evaluating my thesis, I observe and conceptualize the process of multi-revision, fine-grained analysis of source-code history, as it is performed with the assistance of current revision-control tools. This conceptualization reveals the limitations in terms of efficiency of such process. I address the efficiency limitations of the multi-revision, fine-grained analysis of source-code history by creating Automatic History Slicing, a novel technique that enables developers to automatically obtain the subset of the history of a program that corresponds to any set of lines of code. Then, I also provide automatic support for answering developer questions by extending Automatic History Slicing into two other techniques and tools. The first one of these techniques is Chronos, which provides support for developers to answer ad-hoc questions about source code history by facilitating the visualization and investigation of the history of any set of lines of code. I also create a technique called WhoseFault, which provides support for developers to answer a prevalent anticipated developer question: who are the most suitable developers to fix a bug? WhoseFault automates all the steps of the multi-revision, fine-grained analysis of code history to provide a recommendation of the most suitable developers to fix a bug. Finally, I improve the accuracy of the multi-revision, fine-grained analysis of source-code history by creating Fuzzy Automatic History Slicing, a technique that allows the modeling and analysis of fine-grained code evolution with a novel fuzzy approach that recognizes the non-discrete nature of code evolution. The findings in this dissertation motivate future research in three directions: the empirical study of code evolution, the usage of code-history analysis for new applications, and the analysis of additional historical artifacts to support software development.

Main Content
For improved accessibility of PDF content, download the file to your device.
Current View