A Study of Program Evolution Involving Scattered Concerns
        
            
    ID
              TR-2003-06
          Publishing date
              March 26, 2003
          Length
              11 pages
          Abstract
              Before making a change to a system, software developers typically explore the source code to find and understand the subset relevant  to their task.  Software changes often involve code addressing  different conceptually-related segments of the implementation  (concerns), which can be scattered across multiple modules.  These scattered concerns make it difficult to reason about the code  relevant to a change.  We carried out a study to investigate how  developers discover and manage scattered concerns during a software  evolution task, and the role that structural queries play during the  investigation.  The task we studied consists of a developer adding a  feature to a 65kloc Java code base.  The study involved eight  subjects: four who were not briefed about scattered concerns, and  four who were trained to use a concern-oriented investigation tool.  Analysis of the navigation among the different program elements  examined by the subjects during the task shows evidence that,  independent of whether concern-oriented tool support was available,  the most successful subjects focused on specific concerns when  planning their task, and used a high proportion of structural  queries to investigate the code.  In addition to the study results,  this paper introduces two novel analyses: navigation  graphs, which support the analysis of a subject's behavior when  investigating source code, and variant analysis, which is  used for evaluating the results of a program evolution task.