After getting the interface lined up between a LDA library, JGibbsLDA, and the Eclipse IDE that our tool will be based in, I started looking into the myriad options for visualizing the information we can generate. An incredible number of visualizations of software systems have been proposed over the years, from the 3d CodeCities which maps buildings to source files and blocks to groups of files to SeeSoft‘s line view, which simply maps a line of pixels to a line of source code in a file. The difficult part of our project is determining what visualization, or combination of visualizations, might actually be best for the information we want to visualize.
In the past, one of the visualizations that has been proposed for topics by Ducasse, et al. is the Distribution Map. This quite simply displays source documents in their respective packages, and displays the topics to which they most belong by means of the document’s color. While this view provides an interesting overview of a system and the spread of topics within it, it doesn’t seem to be the best view for our main goal, which is allowing for the exploration of unfamiliar systems. Another related view that Kuhn, et al. investigated is the rather literal Software Map, which draws a topographic-style map reflecting similarities between code documents by the distance between then, and the size of the documents by the topographic size of their “hills”.
Since one of the additional pieces of data that I’m interested in integrating into our visualizations is the structural links between source documents, another interesting view is that implemented by the X-Ray tool. One of X-Ray’s views involves drawing arrows between code elements, arrows that represent one code document’s dependency upon another. I think this information could be very useful in addition to the topic information I discussed in a previous post, and so X-Ray’s visualization is very interesting for my project.
Finally, another visualization, introduced in 1992, that I think could be interesting to use in our tool is the Tree Map. Put to good use in a number of tools that visualize how your hard drive’s space is used up, Tree Maps can be useful in any context in which you have hierarchal documents with a size property.
Having considered all of these myriad visualization options, along with a number of other possibilities, I had to select the combination which would best fit our goal of providing for the exploration of a topic map of a software system, and then implement the visualization in our Eclipse plugin.