This Article 
 Bibliographic References 
 Add to: 
The Class Blueprint: Visually Supporting the Understanding of Classes
January 2005 (vol. 31 no. 1)
pp. 75-90
Understanding source code is an important task in the maintenance of software systems. Legacy systems are not only limited to procedural languages, but are also written in object-oriented languages. In such a context, understanding classes is a key activity as they are the cornerstone of the object-oriented paradigm and the primary abstraction from which applications are built. Such an understanding is however difficult to obtain because of reasons such as the presence of late binding and inheritance. A first level of class understanding consists of the understanding of its overall structure, the control flow among its methods, and the accesses on its attributes. We propose a novel visualization of classes called class blueprint that is based on a semantically enriched visualization of the internal structure of classes. This visualization allows a software engineer to build a first mental model of a class that he validates via opportunistic code-reading. Furthermore, we have identified visual patterns that represent recurrent situations and as such convey additional information to the viewer. The contributions of this article are the class blueprint, a novel visualization of the internal structure of classes, the identification of visual patterns, and the definition of a vocabulary based on these visual patterns. We have performed several case studies of which one is presented in depth, and validated the usefulness of the approach in a controlled experiment.

[1] T.A. Corbi, “Program Understanding: Challenge for the 1990's,” IBM Systems J., vol. 28, no. 2, pp. 294-306, 1989.
[2] V. Basili, “Evolving and Packaging Reading Technologies,” J. Systems and Software, vol. 38, no. 1, pp. 3-12, 1997.
[3] D. Hendrix, J.H. Cross II, and S. Maghsoodloo, “The Effectiveness of Control Structure Diagrams in Source Code Comprehension Activities,” IEEE Trans. Software Eng., vol. 28, no. 5, pp. 463-477, May 2002.
[4] I. Sommerville, Software Engineering, sixth ed. Addison Wesley, 2000.
[5] A.M. Davis, 201 Principles of Software Development. McGraw-Hill, 1995.
[6] N. Wilde and R. Huitt, “Maintenance Support for Object-Oriented Programs,” IEEE Trans. Software Eng., vol. 18, no. 12, pp. 1038-1044, Dec. 1992.
[7] E. Casais and A. Taivalsaari, “Object-Oriented Software Evolution And Re-Engineering (Special Issue),” Theory and Practice of Object Systems (TAPOS), vol. 3, no. 4, pp. 233-301, 1997.
[8] A. Dunsmore, M. Roper, and M. Wood, “Object-Oriented Inspection In The Face Of Delocalisation,” Proc. ICSE 2000 22nd Int'l Conf. Software Eng., pp. 467-476, 2000.
[9] U. Dekel, “Applications of Concept Lattices To Code Inspection And Review,” technical report, Dept. of Computer Science, Technion, 2002.
[10] M.F. Kleyn and P.C. Gingrich, “Graphtrace— Understanding Object-Oriented Systems Using Concurrently Animated Views,” Proc. ACM Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 191-205, Nov. 1988.
[11] D.B. Lange and Y. Nakamura, “Interactive Visualization of Design Patterns Can Help in Framework Understanding,” Proc. ACM Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 342-357, 1995.
[12] A. Mendelzon and J. Sametinger, “Reverse Engineering by Visualizing and Querying,” Software— Concepts and Tools, vol. 16, pp. 170-182, 1995.
[13] S. Demeyer, S. Tichelaar, and S. Ducasse, “FAMIX 2.1— The FAMOOS Information Exchange Model,” technical report, Univ. of Bern, 2001.
[14] M. Lanza and S. Ducasse, “A Categorization of Classes Based on the Visualization of Their Internal Structure: The Class Blueprint,” Proc. ACM Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 300-311, 2001.
[15] D. Littman, J. Pinto, S. Letovsky, and E. Soloway, “Mental Models and Software Maintenance,” Proc. First Workshop Empirical Studies of Programmers, Soloway and Iyengar, eds., pp. 80-98, 1996.
[16] A. vonMayrhauser and A. Vans, “Identification of Dynamic Comprehension Processes During Large Scale Maintenance,” IEEE Trans. Software Eng., vol. 22, no. 6, pp. 424-437, June 1996.
[17] M. Petre, “Why Looking Isn't Always Seeing: Readership Skills and Graphical Programming,” Comm. ACM, vol. 38, no. 6, pp. 33-44, June 1995.
[18] J. Bertin, Graphische Semiologie. Walter de Gruyter, 1974.
[19] E.R. Tufte, Envisioning Information. Graphics Press, 1990.
[20] C. Ware, Information Visualization. Morgan Kaufmann, 2000.
[21] D. Ingalls, T. Kaehler, J. Maloney, S. Wallace, and A. Kay, “Back to the Future: The Story of Squeak, a Practical Smalltalk Written in Itself,” Proc. ACM Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 318-326, Nov. 1997.
[22] M. Lanza and S. Ducasse, “Polymetric Views— A Lightweight Visual Approach to Reverse Engineering,” IEEE Trans. Software Eng., vol. 29, no. 9, pp. 782-795, Sept. 2003.
[23] K.J. Lieberherr and A.J. Riel, “Contributions to Teaching Object Oriented Design and Programming,” Proc. ACM Conf. Object-Oriented Programming Systems, Languages, and Applications, vol. 24, pp. 11-22, Oct. 1989.
[24] S. Demeyer, S. Ducasse, and O. Nierstrasz, Object-Oriented Reengineering Patterns. Morgan Kaufmann, 2002.
[25] E.J. Klimas, S. Skublics, and D.A. Thomas, Smalltalk with Style. Prentice-Hall, 1996.
[26] M. Lanza, “Codecrawler— Lessons Learned in Building a Software Visualization Tool,” Proc. Conf. Software Maintenance and Reeng., pp. 409-418, 2003.
[27] S. Ducasse, M. Lanza, and S. Tichelaar, “Moose: An Extensible Language-Independent Environment for Reengineering Object-Oriented Systems,” Proc. Second Int'l Symp. Constructing Software Eng. Tools (CoSET 2000), June 2000.
[28] B.A. Price, R.M. Baecker, and I.S. Small, “A Principled Taxonomy of Software Visualization,” J. Visual Languages and Computing, vol. 4, no. 3, pp. 211-266, 1993.
[29] Software Visualization— Programming as a Multimedia Experience, J.T. Stasko, et al., eds., The MIT Press, 1998.
[30] S.R. Tilley, K. Wong, M.-A.D. Storey, and H.A. Müller, “Programmable Reverse Enginnering,” Int'l J. Software Eng. and Knowledge Eng., vol. 4, no. 4, pp. 501-520, 1994.
[31] M.P. Consens and A.O. Mendelzon, “Hy+: A Hygraph-Based Query and Visualisation System,” Proc. 1993 ACM SIGMOD Int'l Conf. Management Data, SIGMOD Record, vol. 22, no. 2, pp. 511-516, 1993.
[32] S.G. Eick, J.L. Steffen, and S.E. EricJr, “SeeSoft— A Tool for Visualizing Line Oriented Software Statistics,” IEEE Trans. Software Eng., vol. 18, no. 11, pp. 957-968, Nov. 1992.
[33] R. Kazman and S.J. Carriere, “Playing Detective: Reconstructing Software Architecture from Available Evidence,” Automated Software Eng., Apr. 1999.
[34] M.-A.D. Storey and H.A. Müller, “Manipulating and Documenting Software Structures Using Shrimp Views,” Proc. 1995 Int'l Conf. Software Maintenance, 1995.
[35] J.T. Stasko, “Tango: A Framework and System for Algorithm Animation,” Computer, vol. 23, no. 9, pp. 27-39, Sept. 1990.
[36] S.P. Reiss, “Interacting with the Field Environment,” Software— Practice and Experience, vol. 20, pp. 89-115, 1990.
[37] W.D. Pauw, R. Helm, D. Kimelman, and J. Vlissides, “Visualizing the Behavior of Object-Oriented Systems,” Proc. ACM Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 326-337, Oct. 1993.
[38] T. Richner and S. Ducasse, “Recovering High-Level Views of Object-Oriented Applications from Static and Dynamic Information,” Proc. Int'l Conf. Software Maintenance, H. Yang and L. White, eds., pp. 13-22, Sept. 1999.
[39] D.J. Jerding, J.T. Stansko, and T. Ball, “Visualizing Interactions in Program Executions,” Proc. Int'l Conf. Software Eng., pp. 360-370, 1997.
[40] J.-Y. Vion-Dury and M. Santana, “Virtual Images: Interactive Visualization of Distributed Object-Oriented Systems,” Proc. ACM Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 65-84, 1994.
[41] I. Nassi and B. Shneiderman, “Flowchart Techniques for Structured Programming,” SIGPLAN Notices, vol. 8, no. 8, Aug. 1973.
[42] D.A. Higgins and N. Zvegintzov, Data Structured Software Maintenance: The Warnier/Orr Approach. Dorset House, Jan. 1987.
[43] J.H. CrossII, S. Maghsoodloo, and D. Hendrix, “Control Structure Diagrams: Overview and Evaluation,” J. Empirical Software Eng., vol. 3, no. 2, pp. 131-158, 1998.
[44] E.R. Tufte, The Visual Display of Quantitative Information, second ed. Graphics Press, 2001.

Index Terms:
Object-oriented programming, software visualization, reverse engineering, visual patterns, smalltalk.
St?phane Ducasse, Michele Lanza, "The Class Blueprint: Visually Supporting the Understanding of Classes," IEEE Transactions on Software Engineering, vol. 31, no. 1, pp. 75-90, Jan. 2005, doi:10.1109/TSE.2005.14
Usage of this product signifies your acceptance of the Terms of Use.