Software instability analysis: co-change analysis across configuration-based dependence relationships

  • Authors:
  • James Whitehead, Jr.;Jennifer Louise Bevan

  • Affiliations:
  • University of California, Santa Cruz;University of California, Santa Cruz

  • Venue:
  • Software instability analysis: co-change analysis across configuration-based dependence relationships
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

To paraphrase previous software evolution research, changing a software system leads to both defect introduction and structural decay. Given that software systems must evolve to be successful, a sensible maintenance process must reduce the risks and costs associated with change. One known risk factor is the number of distinct software entities that must be changed to implement a specific maintenance task. Software evolution research based on co-change analysis looks not only at which individual system entities were changed, but also which were changed together, using the archived system history as input. Such analyses help to identify "unstable regions" in the system as a precursor for redesign or refactoring activities. Previous history-based software evolution research has commonly used specific, research-directed methodologies, implementations, and visualizations. One result of this practice is that comparison or composition of the results of different evolution analyses is made difficult by differences in the specific data collected; each such system collects only the data it requires. This thesis posits that history-based software evolution research has matured to the point where fully independent analyses no longer contribute to the greatest possible extent to the state of research, primarily because of this inability to fully leverage previous work. This thesis presents two primary contributions to software evolution research. The first is an evolution analysis methodology that combines static dependence analysis with co-change analysis for the purpose of identifying software instabilities: groups of related program entities that have a history of changing together. Implemented as IVA, a principle contribution of this approach is the ability to differentiate co-changing relationships based on the type of dependence relation. The second contribution is Kenyon, a software evolution infrastructure toot that synthesizes and enhances many of the research-independent tasks common for history-based analyses. Specifically, Kenyon manages the gathering, assembling, linking, and updating of historical data from project development archiving resources, and provides convenient methods for accessing this data in a research-independent manner.