IMMV: An interactive multi-matrix visualization for program comprehension (original) (raw)
Related papers
Magnify - A new tool for software visualization
Modern software systems are inherently complex. Their maintenance is hardly possible without precise up-to-date documentation. It is often tricky to document dependencies among software components by only looking at the raw source code. We address these issues by researching new software analysis and visualization tools. In this paper we focus on software visualisation. Magnify is our new tool that performs static analysis and visualization of software. It parses the source code, identifies dependencies between code units and records all the collected information in a repository based on a language-independent graph-based data model. Nodes of the graph correspond to program entities of disparate granularity: methods, classes, packages etc. Edges represent dependencies and hierarchical structure. We use colours to reflect the quality, sizes to display the importance of artefacts, density of connections to portray the coupling. This kind of visualization gives bird's-eye view of t...
Innovations in Systems and Software Engineering, 2005
The field of software visualization (SV) investigates approaches and techniques for static and dynamic graphical representations of algorithms, programs (code), and processed data. SV is concerned primarily with the analysis of programs and their development. The goal is to improve our understanding of inherently invisible and intangible software, particularly when dealing with large information spaces that characterize domains like software maintenance, reverse engineering, and collaborative development. The main challenge is to find effective mappings from different software aspects to graphical representations using visual metaphors. This paper provides an overview of the SV research, describes current research directions, and includes an extensive list of recommended readings.
DUCAT: A tool for the interactive visualization of program structure
2000
Code development for projects that are not trivial is time consuming and difficult. A well structured approach is essential to produce satisfactory results. One major problem facing the programmer is the need to conceptualize the structure of the program that is being written or maintained in order to completely understand the program while browsing it's source listing. This problem may be overcome by providing a tool that allows code to be browsed within the confines of a visual representation of the program's structure. This paper reviews the requirements for a tool to provide such a mechanism and describes the design of DUCAT (Deakin University C Analysis Tool) which addresses these requirements. DUCAT provides a call graph of a program and allows the user to browse functions individually by interacting with the call graph.
A gentle overview of software visualisation
2006
Software design is a realm of messy or “wicked” problems that are often too big, too ill-defined, and too complex for easy comprehension and solution (DeGrace and Stahl, 1998). Software itself is created, complex, abstract, and difficult to observe. Software is different from created physical artefacts, because it lacks their tangibility and visibility (eg, What does a compiler look like? What is the size, weight and shape of an operating system?). Code may be manifest, but how code works must be discovered and understood.
Visualizing program dependencies: An experimental study
Software: Practice and Experience, 1994
This paper addresses the problem of visualizing program dependencies (i.e. entities and their relations). A code visualization tool that maintains a repository of structural and functional dependencies for C programs is described. Visualization of such dependencies is accomplished by using a presentation model which combines data and control flow information. Moreover, transformation mechanisms and partitioning techniques used by the tool provide the means for managing large graphical representations. The quantitative results from an experimental study using this tool indicate that the productivity of its users was increased and that the quality of changes made during a program modification exercise was improved. Furthermore, the qualitative results have shown that its presentation model, transformation mechanisms and partitioning techniques constitute a promising platform for the comprehension and maintenance of C programs. Finally, the outcome of an empirical evaluation of the tool and the enhancement of its functionality and user interface are also discussed in this paper.
Software landscapes: Visualizing the structure of large software systems
2004
Modern object-oriented programs are hierarchical systems with many thousands of interrelated subsystems. Visualization helps developers to better comprehend these large and complex systems. This paper presents a three-dimensional visualization technique that represents the static structure of object-oriented programs using landscape-like distributions of three-dimensional objects on a two-dimensional plane. The familiar landscape metaphor facilitates intuitive navigation and comprehension. The visual complexity is reduced by adjusting the transparency of object surfaces to the distance of the viewpoint. An approach called Hierarchical Net is proposed for a clear representation of the relationships between the subsystems.
Architectural Visualization of C/C++ Source Code for Program Comprehension
2006
Abstract Structural and behavioral visualization of large-scale legacy systems to aid program comprehension is still a major challenge. The challenge is even greater when applications are implemented in flexible and expressive languages such as C and C++. In this paper, we consider visualization of static and dynamic aspects of large-scale scientific C/C++ applications. For our investigation, we reuse and integrate specialized analysis and visualization tools.
Runtime visualisation of object oriented software
Proceedings First International Workshop on Visualizing Software for Understanding and Analysis, 2000
Software is inherently dynamic, yet much of the analysis and comprehension processes focus entirely on the static source code of the software. This paper looks at how software visualisation offers a way to aid comprehension by displaying both static and dynamic aspects of a piece of software. A new visualisation is presented with specific focus on a class level summary view.