Graph Exploration for Software Archeology

Motivation: The complexity of large software systems makes it difficult for programmers to learn their structure and organization. Ordinarily, programmers rely on human-generated documentation to obtain this information, but documentation takes time to generate and may be out-of-date. Tools like the one I propose that replace some of the overviews and walkthroughs in missing documentation can help alleviate the productivity penalty of software complexity. Program comprehension is also a critical part of software maintenance. In an ideal world, instead of expending valuable mental energy searching through and poring over thousands of lines of code, the programmer will be able visually explore the program, literally seeing how it works. If comprehension were less of an impediment to software maintenance, the reality of software evolution could be altered: instead of reimplementing a hard-to-maintain legacy system from scratch, as is often done, designers will find it plausible to adapt and reuse existing source code.

[1]  Hausi A. Müller,et al.  Cognitive design elements to support the construction of a mental model during software visualization , 1997, Proceedings Fifth International Workshop on Program Comprehension. IWPC'97.

[2]  Daniel Jackson,et al.  Alloy: a lightweight object modelling notation , 2002, TSEM.

[3]  Stephen G. Eick,et al.  Graphically Displaying Text , 1994 .