The past, present and future of software visualisation

Andrew McCluskey

Visualisation

  • A form of analysis
  • Specifically – how do I take some data and present it in a more intuitive, understandable or interesting way.
  • Often applied to large datasets
  • Example: Most people will have a mental visualisation of how their code ‘looks’

Crossing Borders

Static vs. Dynamic Software Analysis

Static Analysis
  • Before Runtime
  • Detect simple problems
    • Semicolons?
    • Code smells?
  • Examples
    • Lint Tools
    • Compilers
Dynamic Analysis
  • At Runtime
  • Can detect emergent behaviour
    • Memory Leaks
    • Deadlocks
  • Examples
    • Valgrind (C)
    • VisualVM (Java)

Early Software Visualisation

  • 1966, Bell Labs dynamic visualisation of a linked list, much like last example

UML

Widely used visualisation of software artefacts

UML Class Diagram: Static or Dynamic?

UML Object Diagram: Static or Dynamic?

Modern Software Visualisation

Code Cities

  • Packages become blocks
  • Classes become buildings
  • Height/width of building
    • Complexity
    • Lines
    • Methods
  • GoCity – GoLang cities

Colony

  • Visualise NPM dependencies
  • Force directed graph
    • Module dependency encourages locality
  • Force directed graph
    • Function interaction
    • Class coupling

Jive

  • 2D realtime visualisation
  • Java
  • Stack depth
  • Heap allocation behaviour

Future Directions

3D Printing

  • Intangible software -> physical model
  • Physical, interactive model v. 3D on a monitor

Multi-user, VR Code Cities

  • Oculus Rift + Microsoft Kinect v2 – Fittkau et al.
  • Integrate a VR software city with Kataribe - Ichinose, et al.
  • How about using as an IDE?

Further Reading

VR Learning: vCoder

VR Learning: vCoder

Questions