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.
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.
A public beta will be announced soon.
(denotes a major peer-reviewed publication)
- Jan-Peter Krämer, Thorsten Karrer, Joachim Kurz, Moritz Wittenhagen and Jan Borchers. How Tools in IDEs Shape Developers' Navigation Behavior. In CHI '13: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, pages 3073–3082, ACM, New York, NY, USA, April 2013.
- Jan-Peter Krämer, Joachim Kurz, Thorsten Karrer and Jan Borchers. Blaze. In Proceedings of the 2012 International Conference on Software Engineering, ICSE 2012, pages 1457–1458, IEEE Press, Piscataway, NJ, USA, 2012.
- Jan-Peter Krämer, Joachim Kurz, Thorsten Karrer and Jan Borchers. Blaze: supporting two-phased call graph navigation in source code. In CHI '12: Extended abstracts on Human Factors in Computing Systems, CHI EA '12, pages 2195–2200, ACM, New York, NY, USA, 2012.
- Joachim Kurz. Blaze---Navigating Source Code via Call Stack Contexts. Bachelor's Thesis, RWTH Aachen University, Aachen, September 2011.
- Jan-Peter Krämer. Stacksplorer Understanding Dynamic Program Behavior. Diploma Thesis, RWTH Aachen University,January 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 UIST '11: Proceedings of the 24th annual ACM Symposium on User Interface Software and Technology, pages 217–224,October 2011.
- 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.