Visualizing the Evolution of Software Systems

In contrast with software development that typically takes 1-2 years, software maintenance lasts for many years after the first release deployed Software changes and evolves for several reasons that range from the correction of faults to the introduction of new functionality.

The execution of maintenance operations has the effect of increasing the size and the complexity of the system and gradually decays the original design and the overall quality of the software. The problem of understanding the evolu- tion of software is vital in todays software industry.

Software visualization has been widely employed to comprehend source code and to show the evolution of software systems. In particular, a number of metaphors and supporting tools based on 2D and 3D techniques have been proposed in the literature.

Although these techniques are useful for comprehending a subject software and its evolution (e.g., software change ), they often fail to show significant information (e.g., public attributes, methods, and the presence of comment in source code ).

In this paper, we propose a metaphor to visualize evolving object oriented software system. In particular, a release of a subject software is visualized as a forest of trees that a maintainer (or simply a user ) can navigate and interact with.

Visual properties of trees (e.g., trunks, branches, and leaves ) are mapped according to well defined rules with the metrics extracted from source code. The maintainer can go also through the releases of the subject software to understand its evolution at three different granularity levels: system, package, and class.

A 3D interactive environment implementing this metaphor is proposed as well. It provides features to navigate in the forest as a freefly 3D virtual camera. Our prototype also implements zoom features and visualizes the names of the classes to promote the comprehension at fine-grained level. Although the metaphor is for any object oriented programming language, the current implementation of the prototype supports Java and C++.

The prototype can be easily extended to visualize software systems implemented with different programming languages. It is only needed to implement a tool for extracting the considered metrics from code implemented with those programming languages.

In order to assess the validity of the approach and of Code-Trees, we have conducted a preliminary empirical investigation as a case study. We used medium open source software systems. Two of these systems were implemented in Java and one in C++. The results seem encouraging,

To read this external content in full, download the complete paper from the author online archives at ResearchGate. 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.