A. Mendelzon, J. Sametinger, Reverse Engineering by Visualizing and Querying, Software, Concepts and Tools, Vol. 16/4, pp. 170-182, Dec. 1995

he automatic extraction of high-level structural information from code is important both for software maintenance and reuse. Instead of using special purpose tools, we explore the use of a general purpose data visualization system called Hy+ for querying and visualizing information about object-oriented software systems. Hy+ supports visualization and visual query of arbitrary graph-like databases. We store information about software systems in a database and use the general purpose tool Hy+ for analyzing the source code and visualizing various relationships.
In this paper we demonstrate the use of Hy+ for evaluating software metrics, verifying constraints, and identifying design patterns. Software metrics can be used to find components with low reusability or components that are hard to understand. Checking the source code against contraints can help bring desing flaws to light, eliminate source of errors, and guarantee consistent style. Identifying desing patterns in a software system can reveal design decisions and help in understanding the code. We conclude that the flexibility achieved by using a general purpose system like Hy+ give this approach advantages over special purpose reverse-engineering tools, although specialized tools will have better performance and more knowledge of specific software engineering tasks. Combining the advantages of the two approaches is an interesting challenge.