1.12k likes | 1.35k Views
Software Visualization. CS 4460 - Information Visualization Many slides courtesy John Stasko , with edits by J. Foley. Software Visualization. Definition . “The use of the crafts of typography, graphic design, animation, and cinematography with modern human-
E N D
Software Visualization CS 4460 - Information Visualization Many slides courtesy John Stasko, with edits by J. Foley
Software Visualization • Definition • “The use of the crafts of typography, • graphic design, animation, and • cinematography with modern human- • computer interaction and computer • graphics technology to facilitate both • the human understanding and effective • use of computer software.”Price, Baecker and Small, ‘98 CS 4460/7450
Challenge • Unlike much information visualization, however, software is often dynamic, thus requiring our visualizations reflect the time dimension • History views • Animation • ... CS 4460/7450
Subdomains • Two main subareas of software visualization • Program visualization • Use of visualization to help programmers, coders, developers • Software engineering focus • Algorithm visualization • Use of visualization to help teach algorithms and data structures • Pedagogy focus CS 4460/7450
Caveat • This is a HUGH area • Presentation goal: provide flavor of kinds of techniques and systems that have been created • Lots of screen shots • Some videos CS 4460/7450
Program Visualization • Can be as simple as enhanced views of program source • Can be as complex as views of the execution of a highly parallel program, its data structures, run-time heap, etc. CS 4460/7450
PV is a big research Area CS 4460/7450
PV is a Big Product Category • Do Google searches on • Program visualization • Code visualization • Software visualization • Lots of companies/products CS 4460/7450
What Can We Visualize? ??????
What Can We Visualize? • Structure • Static code structures • Behavior • Dynamic (execution) code behavior • Test suite results • Bug issues/relations • Evolution • Code repository structure/evolution • Program team communications patterns CS 4460/7450
Static Code Structures Call graphs Object class hierarchy Scope of variables Code module sizes CS 4460/7450
Execution Data Summaries, such as Details, such as Memory allocations System calls Cache misses Page faults Pipeline flushes Process scheduling Completion of disk reads or writes Message receipt Application phases Etc etc etc • Total running time • Number of times a method was called • Amount of time CPU was idle • Bytes read/written • Memory high-water mark • Etc etc etc CS 4460/7450
Test Results • Hundreds, maybe thousands of tests • For each test: • Purpose • Result (pass or fail) • Could be per-configuration or per-version • Relevant parts of the code CS 4460/7450
Really Detailed Execution Data • Logging virtual machines can capture everything • Enough data to replay program execution and recreate the entire machine state at any point in time • Allows “time-traveling” • For long running systems, data could span months • Uses: • Debugging • Understanding attacks CS 4460/7450
SoftVis 2010 Program An Interactive Ambient Visualization for Code Smells CodePad: Interactive Spaces for Maintaining Concentration in Programming Environments User Evaluation of Polymetric Views Using a Large Visualization Wall Software Evolution Storylines AllocRay: Memory Allocation Visualization for Unmanaged Languages Heapviz: Interactive Heap Visualization for Program Understanding and Debugging A Map of the Heap: Revealing Design Abstractions in Runtime Structures Trevis: A Context Tree Visualization & Analysis Framework and Its Use for Classifying Performance Failure Reports Exploring the Inventor's Paradox: Applying Jigsaw to Software Visualization Dependence Cluster Visualization Towards Anomaly Comprehension: Using Structural Compression to Navigate Profiling Call-Trees Embedding Spatial Software Visualization in the IDE: An Exploratory Study 3D Kiviat Diagrams for the Interactive Analysis of Software Metric Trends Graph Works - Pilot Graph Theory Visualization Tool Visualizing Software Entities Using a Matrix Layout ImpactViz: Visualizing Class Dependencies and the Impact of Changes in Software Revisions VIPERS: Visual Prototyping Environment for Real-Time Imaging Systems Towards Automated Analysis and Visualization of Distributed Software Systems TIE: An Interactive Visualization of Thread Interleavings GEM: Graphical Explorer of MPI Programs Fault Forest Visualization Visualizing Windows System Traces Understanding Complex Multithreaded Software Systems by Using Trace Visualization Zinsight: A Visual and Analytic Environment for Exploring Large Event Traces Jype - A Program Visualization and Programming Exercise Tool for Python Off-Screen Visualization Techniques for Class Diagrams An Automatic Layout Algorithm for BPEL Processes Visual Comparison of Software Architectures Representing Development History in Software Cities Frank xDIVA: Automatic Animation Between Debugging Break Points Understanding Relaxed Memory Consistency Through Interactive Visualization the Execution of Object Orientated Concurrent Programs CS 4460/7450
Commercial System Screen Shots CS 4460/7450
Dependency Graph Ndepend commercial product; http://www.ndepend.com/SampleReports/OnDb4o/NDependReport.html#/?screen=Main CS 4460/7450
Graph and Matrix Rep’n NDepend CS 4460/7450
Code Hierarchy Treemap; Lines of Code NDepend CS 4460/7450
Open Source System Screen Shots • From The Source-NavigatorTM IDE • http://sourcenav.sourceforge.net/index.html CS 4460/7450
Hierarchy Browser Window CS 4460/7450
Cross-Reference Browser Window CS 4460/7450
Cross-Reference Browser Window CS 4460/7450
Open Source System Screen Shots • From jBixbe • http://www.jbixbe.com/index.html CS 4460/7450
Structure Diagram CS 4460/7450
Message Exchanges CS 4460/7450
Multi-threading CS 4460/7450
Research Examples The following are discussions of a variety of research prototypes Lots and lots of papers in Software Visualization Conference Proceedings CS 4460/7450
Pretty Printing – Common Example CS 4460/7450
More Sophisticated But not so common to apply more sophisticated graphic design Baecker & Marcus, Design Principles for the Enhanced Presentation of Computer Program Source Text, Proceedings CHI ’86 No user testing Looks nice CS 4460/7450
Baecker&Marcus Pretty Printing CS 4460/7450
SeeSoft System • Pulled-back, far away view of source code • Map one line of source to one line of pixels • Maintain indentation & length • Color code lines in meaningful way • Like taping your source code to the wall, walking far away, then looking back at it Stephen G. Eick, Joseph L. Steffen and Eric E. Sumner, Jr. “SeeSoft – A Tool for Visualizing Line-Oriented Software Statistics.” IEEE Transactions on Software Engineering, 18(11):957-968, November 1992. CS 4460/7450
SeeSoft View Selected code 15,000 lines of code in 52 files Heat map for color-coded characteristic Details of selected code CS 4460/7450
SeeSoft • Code tracking (typically means mapping a data attribute to line color) • Code modification (when, by whom) • Location of bug fixes for specific bug report • Location of code to implement a specific feature • Code coverage or hotspots • Interactive • Change color mappings • Link from heat map to code overview • Brush views – back to source code CS 4460/7450
Tarantula • Developed at GT • Utilizes SeeSoft code view methodology • Takes results of test suite run and helps developer find program faults • Key is the clever color mapping Eagan, Harrold, Jones & Stasko InfoVis ’01Jones, Harrold & Stasko ICSE ‘02 CS 4460/7450
Tarantula View Red – code executed by failed tests Green - executed by passed tests Yellow - executed by both passed and failed CS 4460/7450
Tarantula – Selective Display Failed tests only CS 4460/7450
Tarantula: Continuous Colour Mapping • Extend discrete colour mapping by • Interpolating between red and green • Adjusting brightness according to number of tests • Possibilities: • Number of passed or failed tests • Ratio of passed to failed tests • Ratio of % passed to % failed CS 4460/7450
Tarantula: Continuous Colour Mapping • For each line L • Let p and f be the percentages of passed and failed tests that executed L • If p = f = 0, colour L grey • Else, colour L according to • Hue: p / ( p + f ), where 0 is red and 1 is green • Brightness: max( p, f ) CS 4460/7450
Tarantula: Future Work • Does it help find bugs? • Seems like it should • Link red lines to the tests • Static • Dynamic CS 4460/7450
Gammatella - Visualization of Program-Execution Data for Deployed Software Orso, Jones and Harrold, Proc. Of ACM Symp. on Software Visualization, June 2003, pp. 67-76.
Gammatella: Tri-Level Representation • System level • Treemap of package/class hierarchy • Size – code lines • Smaller areas colored differently according as code lines colored differently • File level: • SeeSoft-like view of code • Statement level: • Source code (colored text) CS 4460/7450
Gammatella screen shot Multiple linked views CS 4460/7450
Gammatella • Displays program execution data • From data base of executions • Visualization of data from many executions • Code coverage and profiling data • Execution properties • OS • Java version • Errors • Etc etc etc CS 4460/7450
Color Coding • Two variables • Hue: Red to yellow to green • Intensity: Dark to light • Various attributes can be mapped to color • Execution profile: red frequent, green infrequent; intensity not used • Other mappings not discussed • What could be done??? CS 4460/7450
System-Level View Execution Bar Colored subdivisions within a module block indicate amounts of code with various usages Gray: Never executed code CS 4460/7450
Execution Bar • Each small vertical bar represents one program execution (test run) • Color code – results of test run • May be hundreds of test runs • Treemap shows information for selected test run(s) • Select one or range of runs by pointing • Select multiple non-contiguous runs via data base query on test run properties • For multiple executions, color codings are averages CS 4460/7450
Gammatella: Critique • Complete system – not just a visualization • Nicely links code to structure • Trial usage discovered useful but high-level information • Mainly relied on system view • Needs more usage to determine utility • Complex color coding – color and hue – hard to decode CS 4460/7450
CVSscan: Visualization of Code Evolution “CVSscan: Visualization of Code Evolution”, Voinea, Telea, and van Wijk, SoftVis 2005 Original presentation by Summer Adams CS 4460/7450