1 / 109

Software Visualization

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-

serge
Download Presentation

Software Visualization

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Visualization CS 4460 - Information Visualization Many slides courtesy John Stasko, with edits by J. Foley

  2. 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

  3. Challenge • Unlike much information visualization, however, software is often dynamic, thus requiring our visualizations reflect the time dimension • History views • Animation • ... CS 4460/7450

  4. 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

  5. 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

  6. 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

  7. PV is a big research Area CS 4460/7450

  8. PV is a Big Product Category • Do Google searches on • Program visualization • Code visualization • Software visualization • Lots of companies/products CS 4460/7450

  9. What Can We Visualize? ??????

  10. 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

  11. Static Code Structures Call graphs Object class hierarchy Scope of variables Code module sizes CS 4460/7450

  12. 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

  13. 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

  14. 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

  15. 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

  16. Commercial System Screen Shots CS 4460/7450

  17. Dependency Graph Ndepend commercial product; http://www.ndepend.com/SampleReports/OnDb4o/NDependReport.html#/?screen=Main CS 4460/7450

  18. Graph and Matrix Rep’n NDepend CS 4460/7450

  19. Code Hierarchy Treemap; Lines of Code NDepend CS 4460/7450

  20. Open Source System Screen Shots • From The Source-NavigatorTM IDE • http://sourcenav.sourceforge.net/index.html CS 4460/7450

  21. Hierarchy Browser Window CS 4460/7450

  22. Cross-Reference Browser Window CS 4460/7450

  23. Cross-Reference Browser Window CS 4460/7450

  24. Open Source System Screen Shots • From jBixbe • http://www.jbixbe.com/index.html CS 4460/7450

  25. Structure Diagram CS 4460/7450

  26. Message Exchanges CS 4460/7450

  27. Multi-threading CS 4460/7450

  28. 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

  29. Pretty Printing – Common Example CS 4460/7450

  30. 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

  31. Baecker&Marcus Pretty Printing CS 4460/7450

  32. 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

  33. 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

  34. 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

  35. 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

  36. Tarantula View Red – code executed by failed tests Green - executed by passed tests Yellow - executed by both passed and failed CS 4460/7450

  37. Tarantula – Selective Display Failed tests only CS 4460/7450

  38. 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

  39. 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

  40. CS 4460/7450

  41. Tarantula: Future Work • Does it help find bugs? • Seems like it should • Link red lines to the tests • Static • Dynamic CS 4460/7450

  42. 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.

  43. 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

  44. Gammatella screen shot Multiple linked views CS 4460/7450

  45. 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

  46. 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

  47. 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

  48. 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

  49. 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

  50. 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

More Related