Abstract

We present Stacksplorer, a new tool to support source code navigation and comprehension. Stacksplorer computes the call graph of a given piece of code, visualizes relevant parts of it, and allows developers to interactively traverse it. This augments the traditional code editor by offering an additional layer of navigation. Stacksplorer is particularly useful to understand and edit unknown source code because branches of the call graph can be explored and backtracked easily. Visualizing the callers of a method reduces the risk of introducing unintended side effects. In a quantitative study, programmers using Stacksplorer performed three of four software maintenance tasks significantly faster and with higher success rates, and Stacksplorer received a System Usability Scale rating of 85.4 from participants.

Design

The figure below shows a screenshot of Stacksplorer. The central editor is equivalent to Xcode’s standard editor, retaining all its features and functionality. The cursor in this window marks the focus method. The left column shows methods calling the focus methods, the right column shows methods called from the focus method.

Besides navigating through a class by scrolling vertically in the editor, our design allows navigating horizontally through the call stack, by clicking a method in one of the side columns. For example, navigating to a method that calls the focus method, will cause all 3 columns to shift to the right. The method that was selected moves to the center and opens in the central editor, the previous focus method appears in the list of called methods to the right, and the left column is updated with new information. Important paths through the code may also be stored for later reference.



Stacksplorer supports a very common high level strategy for finding the correct location to implement a change. When searching for a location for a change, developers usually start with an exploration phase, in which they searched for an anchor point. Once an anchor point is found, a traversal phase follows, in which develoeprs traverse the call graph until they either find the correct location for a change or notice that they got lost and have to start again with a new exploration phase. During the traversal phase, developers often navigate along an outgoing path in the call graph and come back to the previously viewed method or to the anchor point if they decide to discard the path.


Beta

A public beta will be announced soon.

Publications

(denotes a major peer-reviewed publication)

2011

Thorsten Karrer, Jan-Peter Krämer, Jonathan Diehl, Björn Hartmann, and Jan Borchers. Stacksplorer: Call Graph Navigation Helps Increasing Code Maintenance Efficiency. In Proceedings of the ACM UIST 2011 Symposium on User Interface Software and Technology, 2011. PDF Document Movie BibTeX Entry.
Jan-Peter Krämer. Stacksplorer Understanding Dynamic Program Behavior. Diploma thesis, RWTH Aachen University, January 2011. PDF Document BibTeX Entry.

2010

Jan-Peter Krämer, Thorsten Karrer, Jonathan Diehl, and Jan Borchers. Stacksplorer: Understanding Dynamic Program Behavior. In Extended Abstracts of the ACM UIST 2010 Symposium on User Interface Software and Technology, New York, NY, October 2010. PDF Document BibTeX Entry.



Created by kraemer. Last Modification: Monday 13 of February, 2012 11:21:27 by kraemer.

Media Computing Group at RWTH Aachen

Search

in: