Software visualization in software maintenance , reverse engineering , and re-engineering : a research survey
---
paper_title: Do visualizations improve program comprehensibility? experiments with control structure diagrams for Java

paper_content:

Recently, the first in a series of planned comprehension experiments was performed to measure the effect of the control structure diagram (CSD) on program comprehensibility. Upper-division computer science students were asked to respond to questions regarding the structure and execution of a source code module written in Java. Statistical analysis of the data collected from this experiment revealed that the CSD was highly significant in enhancing the subjects' performance in this program comprehension task. The results of this initial experiment along with the planned follow-on experiments promise to shed light on fundamental questions regarding the effect of software visualizations on program comprehensibility.
---
paper_title: Experimental evaluation of software documentation formats

paper_content:

Abstract Four controlled experiments investigated the effectiveness of different documentation formats for presenting information about computer programs. Nine different documentation formats (some quite novel) were created by varying three different forms of symbology (natural language, constrained language, and ideograms) and three different spatial arrangements (sequential, branching, and hierarchical). Professional programmers used these formats as aids to comprehend (Experiment 1), code (Experiment 2), debug (Experiment 3), and modify (Experiment 4) modular-sized programs. For each programming task, a model of the cognitive activities a programmer would perform generated hypotheses about the effectiveness of different formats. Natural language was found to be less effective in assisting most of the tasks studied than a constrained language or ideograms. A smaller effect was observed (less frequently than expected) for the spatial arrangment in situations where control flow information aided the task. The largest effect in the experiments, individual differences among the participants, accounted for between a third and one-half of the variation in performance.
---
paper_title: Visual Programming Languages and the Empirical Evidence For and Against

paper_content:

Abstract The past decade has witnessed the emergence of an active visual programming research community. Yet, there has also been a noteworthy shortage of empirical evidence supporting the resulting research. This paper summarizes empirical data relevant to visual programming languages, both to show the current empirical status and to act as a call to arms for further empirical work.
---
paper_title: Comprehension and recall of miniature programs

paper_content:

Abstract Differences in the comprehensibility of programming notations can arise because their syntax can make them cognitively unwieldy in a generalized way ( Mayer, 1976 ), because all notations are translated into the same “mental language“ but some are easier to translate than others (Shneiderman & Mayer, 1979 ), or because the mental operations demanded by certain tasks are harder in some notations than in others ( Green, 1977 ). The first two hypotheses predict that the relative comprehensibility of two notations will be consistent across all tasks, whereas the mental operations hypothesis suggests that particular notations may be best suited to particular tasks. The present experiment used four notations and 40 non-programmers to test these hypotheses. Two of the notations were procedural and two were declarative, and one of each pair contained cues to declarative or procedural information, respectively. Different types of comprehension question were used (“sequential“ and “circumstantial“); a mental operations analysis predicted that procedural languages would be “matched” with sequential questions, and declarative languages with circumstantial questions. Questions were answered first from the printed text, and then from recall. Subjects performed best on “matched pairs” of tasks and languages. Perceptually-based cues improved the performance on “unmatched pairs” better than non-perceptual cues when answering from the text, and both types of cues improved performance on “unmatched pairs” in the recall stage. These results support the mental operations explanation. They also show that the mental representation of a program preserves some features of the original notation; a comprehended program is not stored in a uniform “mental language”.
---
paper_title: Metacognitive theories of visual programming: what do we think we are doing?

paper_content:

The research involved a qualitative and quantitative study of statements made by computer scientists about the ways in which they think that visual programming assists the thought processes of the programmer. This type of metacognitive knowledge has been shown in psychological experiments to have significant effects on performance in cognitive tasks. It is particularly important in the design of programming environments, where HCI factors of the environment constrain the programmer's design behaviour according to the beliefs of the environment designer. The metacognitive knowledge expressed in the visual programming literature is categorised in the paper into a range of micro-theories, the frequency of statements found in each category are compared, and the theoretical assumptions are evaluated in terms of relevant research in cognitive psychology.
---
paper_title: Program visualization: the art of mapping programs to pictures

paper_content:

In this paper program visualization is defined as a mapping from programs to graphical representations. Simple forms of program visualization are frequently encountered in software engineering. For this reason current advances in program visualization are likely to influence future developments concerning software engineering tools and environments. This paper provides a new taxonomy of program visualization research. The proposed taxonomy becomes the vehicle through which we carry out a systernatic review of current systems, techniques, trends, and ideas in program visualization.
---
paper_title: Software visualization in software maintenance , reverse engineering , and re-engineering : a research survey

paper_content:

Software visualization is concerned with the static visualization as well as the animation of software artifacts, such as source code, executable programs, and the data they manipulate, and their attributes, such as size, complexity, or dependencies. Software visualization techniques are widely used in the areas of software maintenance, reverse engineering, and re-engineering, where typically large amounts of complex data need to be understood and a high degree of interaction between software engineers and automatic analyses is required. This paper reports the results of a survey on the perspectives of 82 researchers in software maintenance, reverse engineering, and re-engineering on software visualization. It describes to which degree the researchers are involved in software visualization themselves, what is visualized and how, whether animation is frequently used, whether the researchers believe animation is useful at all, which automatic graph layouts are used if at all, whether the layout algorithms have deficiencies, and--last but not least--where the medium-term and long-term research in software visualization should be directed. The results of this survey help to ascertain the current role of software visualization in software engineering from the perspective of researchers in these domains and give hints on future research avenues.
---
paper_title: How do program understanding tools affect how programmers understand programs

paper_content:

Abstract In this paper, we explore the question of whether program understanding tools enhance or change the way that programmers understand programs. The strategies that programmers use to comprehend programs vary widely. Program understanding tools should enhance or ease the programmer's preferred strategies, rather than impose a fixed strategy that may not always be suitable. We present observations from a user study that compares three tools for browsing program source code and exploring software structures. In this study, 30 participants used these tools to solve several high-level program understanding tasks. These tasks required a broad range of comprehension strategies. We describe how these tools supported or hindered the diverse comprehension strategies used.
---
paper_title: Do visualizations improve program comprehensibility? experiments with control structure diagrams for Java

paper_content:

Recently, the first in a series of planned comprehension experiments was performed to measure the effect of the control structure diagram (CSD) on program comprehensibility. Upper-division computer science students were asked to respond to questions regarding the structure and execution of a source code module written in Java. Statistical analysis of the data collected from this experiment revealed that the CSD was highly significant in enhancing the subjects' performance in this program comprehension task. The results of this initial experiment along with the planned follow-on experiments promise to shed light on fundamental questions regarding the effect of software visualizations on program comprehensibility.
---
paper_title: Why looking isn't always seeing: readership skills and graphical programming

paper_content:

Many believe that visual programming techniques are quite close to developers. This article reports on some fascinating research focusing on understanding how textual and visual representations for software differ in effectiveness. Among other things, it is determined that the differences lie not so much in the textual-visual distinction as in the degree to which specific representations support the conventions experts expect
---
paper_title: Visual Programming Languages and the Empirical Evidence For and Against

paper_content:

Abstract The past decade has witnessed the emergence of an active visual programming research community. Yet, there has also been a noteworthy shortage of empirical evidence supporting the resulting research. This paper summarizes empirical data relevant to visual programming languages, both to show the current empirical status and to act as a call to arms for further empirical work.
---
paper_title: FADE: Graph Drawing, Clustering, and Visual Abstraction

paper_content:

A fast algorithm(FADE) for the 2D drawing, geometric clustering and multilevel viewing of large undirected graphs is presented. The algorithm is an extension of the Barnes-Hut hierarchical space decomposition method, which includes edges and multilevel visual abstraction. Compared to the original force directed algorithm, the time overhead is O(e + n log n) where n and e are the numbers of nodes and edges. The improvement is possible since the decomposition tree provides a systematic way to determine the degree of closeness between nodes without explicitly calculating the distance between each node. Different types of regular decomposition trees are introduced. The decomposition tree also represents a hierarchical clustering of the nodes, which improves in a graph theoretic sense as the graph drawing approaches a lower energy state. Finally, the decomposition tree provides a mechanism to view the hierarchical clustering on various levels of abstraction. Larger graphs can be represented more concisely, on a higher level of abstraction, with fewer graphics on screen.
---
paper_title: Software visualization in software maintenance , reverse engineering , and re-engineering : a research survey

paper_content:

Software visualization is concerned with the static visualization as well as the animation of software artifacts, such as source code, executable programs, and the data they manipulate, and their attributes, such as size, complexity, or dependencies. Software visualization techniques are widely used in the areas of software maintenance, reverse engineering, and re-engineering, where typically large amounts of complex data need to be understood and a high degree of interaction between software engineers and automatic analyses is required. This paper reports the results of a survey on the perspectives of 82 researchers in software maintenance, reverse engineering, and re-engineering on software visualization. It describes to which degree the researchers are involved in software visualization themselves, what is visualized and how, whether animation is frequently used, whether the researchers believe animation is useful at all, which automatic graph layouts are used if at all, whether the layout algorithms have deficiencies, and--last but not least--where the medium-term and long-term research in software visualization should be directed. The results of this survey help to ascertain the current role of software visualization in software engineering from the perspective of researchers in these domains and give hints on future research avenues.
---
paper_title: Interprocedural slicing using dependence graphs

paper_content:

A slice of a program with respect to a program point p and variable x consists of all statements of the program that might affect the value of x at point p. This paper concerns the problem of interprocedural slicing — generating a slice of an entire program, where the slice crosses the boundaries of procedure calls. To solve this problem, we introduce a new kind of graph to represent programs, called a system dependence graph, which extends previous dependence representations to incorporate collections of procedures (with procedure calls) rather than just monolithic programs. Our main result is an algorithm for interprocedural slicing that uses the new representation. ::: The chief difficulty in interprocedural slicing is correctly accounting for the calling context of a called procedure. To handle this problem, system dependence graphs include some data-dependence edges that represent transitive dependencies due to the effects of procedure calls, in addition to the conventional direct-dependence edges. These edges are constructed with the aid of an auxiliary structure that represents calling and parameter-linkage relationships. This structure takes the form of an attribute grammar. The step of computing the required transitive-dependence edges is reduced to the construction of the subordinate characteristic graphs for the grammar's nonterminals.
---
paper_title: Real-Time Object-Oriented Modeling

paper_content:

Abstract The "architecture" of a software system refers to its highest-level modular decomposition and the interrelationship patterns between its modules. An architecture serves as a blueprint for implementation and also as the chief determinant of a system's ability evolve. Consequently, there is an increased interest in methods for specifying and validating software architectures. One such method is based on the ROOM mode ling language which combines the object paradigm with mode ling abstractions devised specifically for distributed real-time software. To overcome the treacherous "architectural decay" phenomenon, whereby, over time, software diverges increasingly from its specification, ROOM formally constrains the implementation to its architectural specification. This is achieved primarily through full automated code generation, a technique that is panicularly challenging in real-time applications where stringent performance and memory requirements are the norm.
---
paper_title: Evaluating stereo and motion cues for visualizing information nets in three dimensions

paper_content:

This article concerns the benefits of presenting abstract data in 3D. Two experiments show that motion cues combined with stereo viewing can substantially increase the size of the graph that can be preceived. The first experiment was designed to provide quantitiative measurements of how much more (or less) can be understood in 3D than in 2D. The 3D display used was configured so that the image on the monitor was coupled to the user's actual eye positons (and it was updated in real-time as the user moved) as well as bring in stereo. Thus the effect was like a local “virtual reality” display located in the vicinity of the computer monitor. The results from this study show that head-coupled stereo viewing can increase the size of an abstract graph that can be understood by a factor of three; using stereo alone provided an increase by a factor of 1.6 and head coupling along produced an increase by a factor of 2.2. The second experiment examined a variety of motion cues provided by head-coupled perspective (as in virtual reality displays), head-guided motion and automatic rotation, respectively, both with and without stereo in each case. The results show that structured 3D motion and stereo viewing both help in understanding, but that the kind of motion is not particularly important; all improve performance, and all are more significant than stereo cues. These results provide strong reasons for using advanced 3D graphics for interacting with a large variety of information structures.
---
paper_title: Visualizing Object Oriented Software in Three Dimensions

paper_content:

There is increasing evidence that it is possible to perceive and understand increasingly complex information systems if they are displayed as graphical objects in a three dimensional space. Object-oriented software provides an interesting test case - there is a natural mapping from software objects to visual objects. In this paper we explore two areas. 1) Information perception: we are running controlled experiments to determine empirically if our initial premise is valid; how much more (or less) can be understood in 3D than in 2D? 2) Layout: our strategy is to combine partially automatic layout with manual layout. This paper presents a brief overview of the project, the software architecture and some preliminary empirical results.
---
paper_title: Validating Graph Drawing Aesthetics

paper_content:

Designers of graph drawing algorithms and systems claim to illuminate application data by producing layouts that optimize measurable aesthetic qualities. Examples of these aesthetics include symmetry (where possible, a symmetrical view of the graph should be displayed), minimize edge crossings (the number of edge crossings in the display should be minimized), and minimize bends (the total number of bends in polyline edges should be minimized). ::: The aim of this paper is to describe our work to validate these claims by performing empirical studies of human understanding of graphs drawn using various layout aesthetics. This work is important since it helps indicate to algorithm and system designers what are the aesthetic qualities most important to aid understanding, and consequently to build more effective systems.
---

Title: Software Visualization in Software Maintenance, Reverse Engineering, and Re-engineering: A Research Survey

Section 1: INTRODUCTION
Description 1: Introduce the concept of software visualization and its relevance to software maintenance, reverse engineering, and re-engineering. Discuss the motivations for the research survey conducted.

Section 2: SURVEY META DATA
Description 2: Provide background information on the survey, including its goals, methodology, and participants.

Section 3: QUESTIONNAIRE
Description 3: List the original questions asked in the research survey.

Section 4: ANSWERS
Description 4: Summarize the responses to the survey questions, including the background of respondents, their opinions on software visualization, and specific insights from the survey data.

Section 5: SCOPE
Description 5: Summarize the variety of software artifacts that are visualized according to the survey responses, covering different phases of the software life cycle.

Section 6: REPRESENTATION
Description 6: Discuss representation issues in software visualization, including symbology, graphical representations, and automatic layout algorithms.

Section 7: VISUALIZED ARTIFACTS
Description 7: Provide an overview of the various artifacts visualized by the respondents, detailing the types of diagrams and visualization methods used.

Section 8: APPROPRIATENESS OF VISUALIZATION
Description 8: Discuss whether the respondents believe their chosen visualization methods are appropriate for their tasks.

Section 9: GRAPHS
Description 9: Examine the usage and implementation of graph layouts in software visualization, including automatic and manual layout methods.

Section 10: CHALLENGES AND RESEARCH DIRECTIONS
Description 10: Identify current challenges in software visualization and discuss future research directions based on responses to mid-term and long-term questions.

Section 11: CONCLUSIONS
Description 11: Summarize the main findings of the research survey and outline the concerns of viewers, integrators, and visualization researchers, as well as general challenges in software visualization for maintenance, reverse engineering, and re-engineering.