Have you ever felt lost in a foreign city? Software engineers know that feeling when they navigate through unfamiliar code. It might sound like a trivial problem, but studies have shown that they spend about 25% of their time just on code navigation.1
We – a group of researchers from the Visualization Research Center, University of Stuttgart (VISUS) – have developed signposts for software engineers. Just like real signpost, ours intend to guide software developers through the code, providing data to make informed decisions where to turn next. They represent critical information as small, word-sized graphics, similar to sparklines2 known from Microsoft Excel. But instead of integrating them into spreadsheets or texts, we enrich source code with these little visualizations.
Depending on the task software developers want to solve, we suggest different variants. For instance, one representation visualizes the runtime consumed by a method in the last run of the program.3,4 Every method declaration and method call gets annotated with such a signpost guiding the developer to performance bottlenecks. A central advantage is that the user does not have to switch back and forth between the code and the runtime information while navigating through the code. Other examples from our work use of word-sized graphics to visualize changing values of numeric variables during debugging or guide developers to relevant results as part of a code search tool.5,6
Integrated development environments (IDEs) provide more and more helpful information in their code editors: text highlighting identifies code that is related to compile errors or style issues, side bars give an overview of search results, and even background highlighting is used to visualize software performance. Our prototype implementations of IDE plugins show that you could take this idea a step further by using word-sized graphics. We hope that IDE developers will pick up our ideas to better guide software engineers and make code navigation more efficient.
- Ko, A. J., Myers, B. A., Coblenz, M. J., and Aung, H. H., 2006. An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks. In IEEE Transactions on Software Engineering (Vol. 32, No. 12, pp. 971–987). DOI: 10.1109/tse.2006.116.
- Tufte, E. R. 2006. Beautiful Evidence. Graphics Press.
- Beck, F., Moseler, O., Diehl, S., and Rey, G. D., 2013. In Situ Understanding of Performance Bottlenecks through Visually Augmented Code. In Proceedings of the 21st IEEE International Conference on Program Comprehension (pp. 63–72). DOI: 10.1109/ICPC.2013.6613834.
- Baltes, S., Moseler, O., Beck, F., and Diehl, S., 2015. Navigate, Understand, Communicate: How Developers Locate Performance Bugs. In Proceedings of the 9th International Symposium on Empirical Software Engineering and Measurement (pp. 1–10). DOI: 10.1109/ESEM.2015.7321208.
- Beck, F., Hollerich, F., Diehl, S., and Weiskopf, D., 2013. Visual Monitoring of Numeric Variables Embedded in Source Code. In Proceedings of the 1st IEEE Working Conference on Software Visualization (pp. 1–4). DOI:10.1109/VISSOFT.2013.6650545.
- Beck, F., Dit, B., Velasco-Madden, J., Weiskopf, D., and Poshyvanyk, D., 2015. Rethinking User Interfaces for Feature Location. In Proceedings of the 23rd IEEE International Conference on Program Comprehension (pp. 151–162). DOI: 10.1109/ICPC.2015.24.