Publication
Empirical Software Engineering
Paper

How software engineering tools organize programmer behavior during the task of data encapsulation

View publication

Abstract

Tool-assisted meaning-preserving program restructuring has been proposed to aid the evolution of large software systems. These systems are difficult to modify because relevant information is often widely distributed. We performed an exploratory study to determine how programmers used a restructuring tool interface called the "star diagram" to organize their behavior for the task of encapsulating a data structure. We videotaped six pairs of programmers while they encapsulated and enhanced a data structure in an existing program. Each team used one of three environments: standard UNIX tools, a restructuring tool with textual view of the source code, or a restructuring tool using the star diagram view. We systematically analyzed the videotape transcripts to derive a model of how the programmers performed encapsulation. Each team opportunistically exploited the features of the tools (e.g., cursors) and the program representation (e.g., ordering of lines in a file) to help them track the current state of the activity. Each method of exploiting structure tracks state in a way that decreases the likelihood of some types of oversights (e.g., missing a required change), but may not address others (e.g., making a change incorrectly), hence requiring a separate check. We also observed that programmers often preferred to design and restructure in an exploratory fashion. The major challenge of restructuring, then, appears to arise from the fact that it is costly or haphazard to maintain some completeness and consistency properties with the state-maintaining tactics that programmers employ with current tools. The inherent invisibility of some information makes completeness even more costly. These insights have led us to redesign our restructuring tools to better support exploratory design and counter invisibility. © 1997 Kluwer Academic Publishers.

Date

Publication

Empirical Software Engineering

Authors

Share