Software systems evolve. Developers must add features, fix bugs, and rewrite software systems to provide better functionality and higher performance. Existing systems also need to migrate to new hardware, computing environments, programming models, and libraries. There exist redundancies, inefficiencies, and error-proneness in the way that we evolve software systems today. In particular, recent empirical studies indicate that developers often apply similar but not identical changes to similar contexts. Making such systematic, repetitive program modifications is a tedious, manual, error-prone process.

This project will investigate the extent and nature of repetitive program modifications and will design, build, and evaluate a novel approach, called SYDIT, which improves developer productivity in applying systematic changes. In this approach, developers no longer apply similar changes manually. Instead, developers provide the old and new version of selected code as an example change, and SYDIT will generalize a reusable, abstract, context-aware program transformation from it. (1) SYDIT will compute program differences between the old and new version of selected code and create a reusable edit script by identifying relevant data and control flow context and by abstracting the edits' content and position. (2) SYDIT will then automatically identify related candidate change locations and produce concrete, customized edits to each candidate. Incorporation with testing and change impact analysis will help developers validate suggested changes. SYDIT's new differential delta analysis will help developers understand the effect of ported changes in each target context. (3) Using a large corpus of project histories, this project will investigate the frequency and types of repetitive changes. The resulting data set will be used to evaluate SYDIT's accuracy and capability and to assess a productivity gain that can be achieved by SYDIT. The impact of this research will be substantially improved developer productivity in evolving large software systems. By helping developers apply changes to similar contexts exhaustively and inspect the effect of suggested changes, SYDIT will reduce errors of omission and relieve developers from tedious, error-prone hand editing. The empirical studies will expand our understanding of repetitive program changes during software evolution.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Application #
1149391
Program Officer
Sol Greenspan
Project Start
Project End
Budget Start
2012-09-01
Budget End
2014-10-31
Support Year
Fiscal Year
2011
Total Cost
$267,334
Indirect Cost
Name
University of Texas Austin
Department
Type
DUNS #
City
Austin
State
TX
Country
United States
Zip Code
78759