GGrantIndex
← Search

HCC: Small: Code Stories: Linking Code Influences and Changes in Code Histories

$495,026FY2021CSENSF

Washington University, Saint Louis MO

Investigators

Abstract

Computer software underlies nearly every aspect of modern life. Like other forms of infrastructure, it is critical that we maintain software to keep it functioning reliably. However, maintenance is expensive: today, the process of maintaining and updating a piece of software accounts for more than 50 percent of the total cost of developing it. Much of the difficulty and cost associated with maintaining software is due to the effort programmers exert to understand the existing computer code. In particular, it can be hard to determine which parts of a program are responsible for what behaviors, along with the reasons for particular implementation details. However, clues to these problems were present when the software was originally created: error messages, visited web pages, editor traces, and internal documentation all tie together software, goals, and reasons. The goal of this project is to develop ways to automatically capture kinds of contextual information that would support future software maintenance and to present this code history in ways that help future programmers understand and maintain that code. To realize this goal, this project takes a user-centered approach to first understanding code histories and then developing ways to capture and present this information for future users of a codebase. The project team will first conduct observational studies to determine how programmers naturally perceive and organize the history of the code they created. The results from these studies will inform the design of prototype code histories (called Code Stories) that will be further refined through user testing, enabling identification of the properties of effective code histories. The observational studies will also guide decisions about what kinds of code changes and contextual information (e.g., information foraging activity and error messages) to capture. In parallel, the team will develop heuristics for segmenting events and information into semantically meaningful chunks. The team will evaluate the work in two ways. The first evaluation will compare programmer efficiency when attempting to modify an unfamiliar codebase using a well-constructed git history (the current best practice that maintains history through keeping versions of a codebase) versus Code Stories. The second evaluation will capture programmer-guided versions of Code Stories through observations and interviews and compare the hand-authored Code Story emerging from these studies with the automatic Code Stories created by the tools developed. The results of this comparison will help to identify priorities for future research in code histories, as well as provide useful resources for future programmer education. This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.

View original record on NSF Award Search →