ABSTRACT
Programmers must draw explicit connections between their code and runtime state to properly assess the correctness of their programs. However, debugging tools often decouple the program state from the source code and require explicitly invoked views to bridge the rift between program editing and program understanding. To unobtrusively reveal runtime behavior during both normal execution and debugging, we contribute techniques for visualizing program variables directly within the source code. We describe a design space and placement criteria for embedded visualizations. We evaluate our in situ visualizations in an editor for the Vega visualization grammar. Compared to a baseline development environment, novice Vega users improve their overall task grade by about 2 points when using the in situ visualizations and exhibit significant positive effects on their self-reported speed and accuracy.
Supplemental Material
- Fabian Beck, Fabrice Hollerich, Stephan Diehl, and Daniel Weiskopf. 2013a. Visual monitoring of numeric variables embedded in source code. In Software Visualization (VISSOFT), 2013 First IEEE Working Conference on. IEEE, 1--4.Google ScholarCross Ref
- Fabian Beck, Oliver Moseler, Stephan Diehl, and Günter Daniel Rey. 2013b. In situ understanding of performance bottlenecks through visually augmented code. In 2013 21st International Conference on Program Comprehension (ICPC). IEEE, 63--72.Google ScholarCross Ref
- Richard A Becker and William S Cleveland. 1987. Brushing scatterplots. Technometrics 29, 2 (1987), 127--142. Google ScholarCross Ref
- Mike Bostock. 2014. Visualizing Algorithms. https://bost.ocks.org/mike/algorithms/. (2014).Google Scholar
- Brian Burg, Richard Bailey, Andrew J Ko, and Michael D Ernst. 2013. Interactive record/replay for web application debugging. In Proceedings of the 26th annual ACM symposium on User interface software and technology. ACM, 473--484. Google ScholarDigital Library
- Bay-Wei Chang, Jock D Mackinlay, Polle T Zellweger, and Takeo Igarashi. 1998. A negotiation architecture for fluid documents. In Proceedings of the 11th annual ACM symposium on User interface software and technology. ACM, 123--132. Google ScholarDigital Library
- Evan Czaplicki and Stephen Chong. 2013. Asynchronous functional reactive programming for GUIs. In Proc. ACM SIGPLAN. ACM, 411--422. Google ScholarDigital Library
- Camil Demetrescu, Irene Finocchi, and John T Stasko. 2002. Specifying Algorithm Visualizations: Interesting Events or State Mapping? In Software Visualization. Springer, 16--30. Google ScholarDigital Library
- Pascal Goffin, Jeremy Boy, Wesley Willett, and Petra Isenberg. 2016. An Exploratory Study of Word-Scale Graphics in Data-Rich Text Documents. IEEE Transactions on Visualization and Computer Graphics 99 (2016), 1.Google Scholar
- Pascal Goffin, Wesley Willett, Jean-Daniel Fekete, and Petra Isenberg. 2014. Exploring the placement and design of word-scale visualizations. IEEE Transactions on Visualization and Computer Graphics 20, 12 (2014), 2291--2300.Google ScholarCross Ref
- Pascal Goffin, Wesley Willett, Jean-Daniel Fekete, and Petra Isenberg. 2015. Design considerations for enhancing word-scale visualizations with interaction. In Posters of the Conference on Information Visualization (InfoVis).Google Scholar
- Google. 2018. JavaScript Debugging Reference. https://developers.google.com/web/tools/ chrome-devtools/javascript/reference. (January 2018).Google Scholar
- Scott Grissom, Myles F McNally, and Tom Naps. 2003. Algorithm visualization in CS education: comparing levels of student engagement. In Proceedings of the 2003 ACM symposium on Software visualization. ACM, 87--94. Google ScholarDigital Library
- Philip J. Guo. 2013. Online Python Tutor: Embeddable Web-based Program Visualization for CS Education. In Proceedings of the 44th ACM Technical Symposium on Computer Science Education (SIGCSE '13). ACM, New York, NY, USA, 579--584. Google ScholarDigital Library
- Matthew Harward, Warwick Irwin, and Neville Churcher. 2010. In situ software visualisation. In Software Engineering Conference (ASWEC), 2010 21st Australian. IEEE, 171--180. Google ScholarDigital Library
- Christopher Healey and James Enns. 2012. Attention and visual memory in visualization and computer graphics. IEEE transactions on visualization and computer graphics 18, 7 (2012), 1170--1188. Google ScholarDigital Library
- Jeffrey Heer, Nicholas Kong, and Maneesh Agrawala. 2009. Sizing the horizon: the effects of chart size and layering on the graphical perception of time series visualizations. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. ACM, 1303--1312. Google ScholarDigital Library
- Jane Hoffswell, Arvind Satyanarayan, and Jeffrey Heer. 2016. Visual Debugging Techniques for Reactive Data Visualization. Computer Graphics Forum (Proc. EuroVis) (2016). http://idl.cs.washington.edu/papers/vega-debuggingGoogle Scholar
- Facebook Inc. 2017. React: A JavaScript Library for Building User Interfaces. https://reactjs.org/. (2017).Google Scholar
- Andrew J Ko and Brad A Myers. 2004. Designing the whyline: a debugging interface for asking questions about program behavior. In Proceedings of the SIGCHI conference on Human factors in computing systems. ACM, 151--158. Google ScholarDigital Library
- Andrew J Ko and Brad A Myers. 2005. A framework and methodology for studying the causes of software errors in programming systems. Journal of Visual Languages&Computing 16, 1 (2005), 41--84. Google ScholarDigital Library
- Andrew J Ko, Brad A Myers, Michael J Coblenz, and Htet Htet Aung. 2006. An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Transactions on software engineering 32, 12 (2006). Google ScholarDigital Library
- Tom Lieber, Joel R Brandt, and Rob C Miller. 2014. Addressing misconceptions about code with always-on programming visualizations. In Proceedings of the 32nd annual ACM conference on Human factors in computing systems. ACM, 2481--2490. Google ScholarDigital Library
- Jock Mackinlay. 1986. Automating the design of graphical presentations of relational information. Acm Transactions On Graphics (Tog) 5, 2 (1986), 110--141. Google ScholarDigital Library
- D Scott McCrickard and Christa M Chewar. 2003. Attuning notification design to user goals and attention costs. Commun. ACM 46, 3 (2003), 67--72. Google ScholarDigital Library
- Microsoft. 2017. Monaco Editor. https://microsoft.github.io/monaco-editor/index.html. (2017).Google Scholar
- Jeanne Nakamura and Mihaly Csikszentmihalyi. 2014. The concept of flow. In Flow and the foundations of positive psychology. Springer, 239--263.Google Scholar
- Stephen Oney and Brad Myers. 2009. FireCrystal: Understanding interactive behaviors in dynamic web pages. In 2009 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). IEEE, 105--108. Google ScholarDigital Library
- Chris Parnin and Spencer Rugaber. 2011. Resumption strategies for interrupted programming tasks. Software Quality Journal 19, 1 (2011), 5--34. Google ScholarDigital Library
- Zening Qu and Jessica Hullman. 2018. Keeping Multiple Views Consistent: Constraints, Validations, and Exceptions in Visualization Authoring. IEEE Trans. Visualization&Comp. Graphics (Proc. InfoVis) (2018). http://idl.cs.washington.edu/papers/consistencyGoogle Scholar
- David Saff and Michael D Ernst. 2003. Reducing wasted development time via continuous testing. In Software Reliability Engineering, 2003. ISSRE 2003. 14th International Symposium on. IEEE, 281--292. Google ScholarDigital Library
- Arvind Satyanarayan, Ryan Russell, Jane Hoffswell, and Jeffrey Heer. 2015. Reactive Vega: A Streaming Dataflow Architecture for Declarative Interactive Visualization. IEEE Trans. Visualization&Comp. Graphics (Proc. InfoVis) (2015). http://idl.cs.washington.edu/papers/ reactive-vega-architectureGoogle Scholar
- Clifford A Shaffer, Matthew Cooper, and Stephen H Edwards. 2007. Algorithm visualization: a report on the state of the field. In ACM SIGCSE Bulletin, Vol. 39. ACM, 150--154. Google ScholarDigital Library
- Ben Swift, Andrew Sorensen, Henry Gardner, and John Hosking. 2013. Visual code annotations for cyberphysical programming. In Proceedings of the 1st International Workshop on Live Programming. IEEE Press, 27--30. Google ScholarDigital Library
- Edward R Tufte. 2006. Beautiful evidence. New York (2006). Google ScholarDigital Library
- Bret Victor. 2012. Learnable programming: Designing a programming system for understanding programs. http://worrydream.com/LearnableProgramming. (2012).Google Scholar
- Wesley Willett, Jeffrey Heer, and Maneesh Agrawala. 2007. Scented widgets: Improving navigation cues with embedded visualizations. IEEE Transactions on Visualization and Computer Graphics 13, 6 (2007), 1129--1136. Google ScholarDigital Library
- Polle T Zellweger, Susan Harkness Regli, Jock D Mackinlay, and Bay-Wei Chang. 2000. The impact of fluid documents on reading and browsing: An observational study. In Proceedings of the SIGCHI conference on Human Factors in Computing Systems. ACM, 249--256. Google ScholarDigital Library
Index Terms
- Augmenting Code with In Situ Visualizations to Aid Program Understanding
Recommendations
Addressing misconceptions about code with always-on programming visualizations
CHI '14: Proceedings of the SIGCHI Conference on Human Factors in Computing SystemsWe present Theseus, an IDE extension that visualizes run-time behavior within a JavaScript code editor. By displaying real-time information about how code actually behaves during execution, Theseus proactively addresses misconceptions by drawing ...
Deconstructing and restyling D3 visualizations
UIST '14: Proceedings of the 27th annual ACM symposium on User interface software and technologyThe D3 JavaScript library has become a ubiquitous tool for developing visualizations on the Web. Yet, once a D3 visualization is published online its visual style is difficult to change. We present a pair of tools for deconstructing and restyling ...
Heapviz: interactive heap visualization for program understanding and debugging
SOFTVIS '10: Proceedings of the 5th international symposium on Software visualizationUnderstanding the data structures in a program is crucial to understanding how the program works, or why it doesn't work. Inspecting the code that implements the data structures, however, is an arduous task and often fails to yield insights into the ...
Comments