Two papers for Nicole Winter's talk on 1/24/96:
PROVIDE - Thomas G. Moher
FIELD - Steven P. Reiss
Another important feature that arises from PROVIDE's relatively high level of data visualization abstraction is the ability for the user to define atomic transitions consisting of multiple lines of code. In a very low abstraction visualization system, this ability is not of any use or significance as the meaning of the data, one step through the execution at a time, is technically always precise. However, given the paper's example of a pie chart, where all the wedges in the pie are updated in a series of lines of code, viewing the data display after each line is meaningless - and potentially misleading to the user. For high abstraction levels, this atomic transition specification is of great value and I am surprised it has not been brought up again in any of the later papers we have seen. I can't come up with an explanation myself and will see if there are any comments in class.
The user is also able to modify data through manipulating the pictures or modify the source code during execution. The program will then unroll back to the point where the data/code was modified and recalculate all states after this point - thus maintaining a consistent history.
Question: How does it handle programs where the execution path is determined by user input? How would it handle an event-driver program?
PROVIDE seems to implement some powerful abstractions and mechanisms for debugging purposes. I especially liked being able to step through one's code backwards or jump backwards to a breakpoint. However, I realize this is quite difficult to implement with very large software systems as it would require a huge database.
FIELD uses a central server that can be queried by the client applications used for visualizations. The server receives messages from the executing program and can send these messages to requesting clients. This allows for dynamic visualizations of the data browsers as well as the state visualizers. This is significant as the data browsers are now able to interact with the executing code and provide more feedback during debugging than just providing information on simple static relationships.
FIELD has the following components:
Since there is too much information in large scale system software to easily visualize everything, FIELD takes two approaches for ease of understanding:
This is accomplished through the various browsing tools listed above: In these views, the user is able to expand and collapse nodes, display only selected nodes, or display portions of subgraphs.
This is accomplished through information encoding. Colors and symbols are used to represent information about relationships, sizes, dates, status, etc of the relevant data. However, I believe FIELD is trying to do too much at once. In the description of the class browser alone I was able to count some 7 different colors, 3 fill tones, and about 13 possible combinations of symbols - all giving different information about the class data. Neither the colors or symbols seem to be covered by redundant information methods, forcing the user to rely on their memory of all the different meanings. If the user were color-blind or the system were used on a monochrome monitor, the information is lost. Also, the system relies on color to denote size, date, and other relationships. Color scales are not really intuitive to humans. It is hard to remember the exact order of the color spectrum and the relationships between the color ordering.
Question: How can we improve FIELD's method of information coding so the user has less to remember (or can remember the meanings more easily)? Idea: Maybe the user can double-click on a piece of data and a pop-up window would give all the information the encoding gives spelled out in plain English.
I agree with the author's claim that FIELD has successfully integrated various UNIX tools into a visual environment. However, I am left wondering as to how successful this achievement is at improving program understanding. The author claims the environment does help improve understanding the dynamic behavior of the program but does not much improve understanding of the static structure. The author's attributes this to the time it takes to generate the visualizations and the time it takes to learn all the features of all the tools. I am surprised by these results. For the purposes of debugging (interaction with the dynamic behavior of a program) I don't see many of these tools to be very useful. I am mostly interested in the data structure display whereas, as the author of the program I'm debugging, I am already familiar with the class definitions, file dependencies, call flow, etc. Where I would imagine these tools to be most useful would be in learning the static structure of a program. When one is given another person's code to modify, restructure, etc (as is often the case in industry), the hardest initial task is understanding the layout of that code. I would imagine all the browsing tools would be very useful at this point.
Question: If the author claims the system was not very good for understanding the static program structure, how useful are many of these tools at all?