S. Ducasse and M. Lanza. The class blueprint: Visually supporting the understanding of classes. IEEE Transactions on Software Engineering, 31(1):75–90, January 2005. [pdf]
——————–
This article explains the Class Blueprint approach to software visualization. The authors built a platform, Code Crawler, that allows the user to visualize the code in a graphical form. Particularly the authors state that understanding the code structure in case of re-engeneering is one of the thasks that produce an overhead in software maintenance.
Particularly, in object-oriented programming, two main factors are responsible for the cognitive difficulty in understanding the code: the presence of late binding and inheritance. In OOP there is nosimple and top-down call decomposition. Classes are organized in inheritance hierarchies in which at every level behavior can be added, overridden, or extended.
The class blueprint approach separate the code into 5 layers that group methods and attributes. The nodes represent a class’ methods and attributes are colored according to semantic information, e.g., whether a method is abstract, overriding, etc. The nodes vary in size depending on the source code metrics information. A class blueprint contains the following layers: inizialization layer, external interface layer, internal implementation layer, accessor layer and attribute layer. In the Class Blueprint, the position of a node maps the functional role of tha node in the structure of the code.
Starting from this artefact, the authors developed a visual vocabulary of recurrent situations in the code that produce similar visual patterns in terms of node colors and flow structure. They grouped these patterns into four categories: layer-distribution based, semantics-based, call-flow-based and state-visual based.
Although the paper details extensively the method and the visual vocabulary, the experimental verification of how such system can impact on the user’s understanding is completely absent.
Tags: information visualization, reverse engineering, software visualization