The more we know about software developers’ detailed navigation behavior for change
tasks, the better we are able to provide effective tool support. In this article, we extend our work on the fine-granular navigation behavior of developers (see blogpost) and explore the potential of the more detailed and fine-granular data by examining the use of the captured change task context to predict perceived task difficulty and to provide better and more fine-grained navigation recommendations.
Check out our Journal article!
What are software developers doing during a change task?
While an answer to this question opens countless opportunities to support developers in their work, only little is known about developers’ detailed navigation behavior for realistic change tasks. Most empirical studies on developers performing change tasks are limited to very small code snippets or are limited by the granularity or the detail of the data collected for the study. In this research, we try to overcome these limitations by combining user interaction monitoring with very fine granular eye- tracking data that is automatically linked to the underlying source code entities in the IDE.
In a study with 12 professional and 10 student developers working on three change tasks from an open source system, we used our approach to investigate the detailed navigation of developers for realistic change tasks. The results of our study show, amongst others, that the eye-tracking data does indeed capture different aspects than user interaction data and that developers focus on only small parts of methods that are often related by data flow. We discuss our findings and their implications for better developer tool support.
You can already read the Preprint of this paper!
Download the paper here: http://www.zora.uzh.ch/99814/1/Developers%E2%80%99%20Code%20Context%20Models%20for%20Change%20Tasks.pdf
To complete a change task, software developers spend a substantial amount of time navigating code to understand the relevant parts. During this investigation phase, they implicitly build context models of the elements and relations that are relevant to the task. Through an exploratory study with twelve developers completing change tasks in three open source systems, we identified important characteristics of these context models and how they are created. In a second empirical analysis, we further examined our findings on data collected from eighty developers working on a variety of change tasks on open and closed source projects. Our studies uncovered, amongst other results, that code context models are highly connected, structurally and lexically, that developers start tasks using a combination of search and navigation and that code navigation varies substantially across developers. Based on these findings we identify and discuss design requirements to better support developers in the initial creation of code context models. We believe this work represents a substantial step in better understanding developers’ code navigation and providing better tool support that will reduce time and effort needed for change tasks.
Results and Design Implications
Sketches submitted by study participants looked like this:
We are excited to announce that our paper “A Dictionary to Translate Change Tasks to Source Code” has been accepted for the 11th Working Conference on Mining Software Repositories (MSR 2014). In the paper, we present a novel approach for static concept location, which translates change tasks into source code elements via a dictionary. We demonstrate in an empirical analysis on four open source projects its effectiveness and improvement over a traditional static concept location approach.
We are excited to announce that our paper “Automatic Search Term Identification for Change Tasks” was accepted in the New Ideas and Emerging Results (NIER) track of the 36th International Conference on Software Engineering. In this research we investigated whether we can support developers in finding good search terms to query the source code in order to locate relevant places for a given change task. Based on existing work and an analysis of change tasks, we determined a set of heuristics for the identification of good search terms and analyzed their predictive value through logistic regression. Based on these results we developed a general and easy applicable approach that automatically identifies good search terms within a change task.