Software visualization in software maintenance, reverse engineering, and re-engineering: a research survey

Rainer Koschke
2003 Journal of Software Maintenance and Evolution Research and Practice  
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
more » ... gineers 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. Copyright SOFTWARE VISUALIZATION IN SOFTWARE MAINTENANCE 89 Figure 1. Extended model of visualization. RELATED RESEARCH This section introduces the conceptual model for software visualization by Roman and Cox and describes the related surveys on software visualization. Roman and Cox [1] point out the following relevant roles in, and aspects of, software visualization (I use more general terms, like 'software engineer' and 'artifact' instead of their original terms 'programmer' and 'program'; see Figure 1 ). Software engineer: the producer of the artifact to be visualized. Animator: the person who creates the mapping onto graphical representations. Viewer (also referred to as the end-user): the person who views the graphical representation. Scope: what artifact and which of its aspects are visualized? Abstraction: what kind of information is conveyed by the visualization? Specification method (and interaction): how is the visualization constructed? The specification method can range from 'hard-wired', where the viewer has no influence on the representation, to arbitrary redefinition. Graphical representation (technique, originally): how is the graphical representation used to convey the information? This aspect considers issues having to do with effective visual communication, including the visual vocabulary, the use of the specific visual elements to convey particular kinds of information, the organization of visual information, and the order in which material is represented to the viewer. Other relevant roles and aspects that are not considered by Roman and Cox are (partly pointed out by respondents of the survey): Integrator: a person who integrates the visualization tool in a more general tool suite supporting, for instance, software maintenance tasks. Task: what does the viewer try to achieve using the visualization?
doi:10.1002/smr.270 fatcat:3wnvdo5dwrcgvgge6gefj6jg5u