Pattern visualization for software comprehension

Cognitive science emphasizes the strength of visual formalisms for human learning and problem solving. In software engineering, a clear, visual presentation of a system's architecture can significantly reduce the effort of comprehension. Yet, all too often the documentation of complex software systems lacks clear identification of the architectural constituents and insufficiently relates them to the source code. It is our contention that visualization of the architectural constituents within the source code model is an indispensable aid for the guided evolution of large-scale software systems. We present a prototype tool for visualizing both published, generic design patterns as well as well-thought, ad-hoc design solutions, given the reverse-engineered source code of a system. We discuss the architecture and core functionality of this tool, addressing source code reverse engineering, design repository, design representation, and design clustering. Then, we present our visualization objectives and detail our techniques for pattern visualization. A case study example helps explicate and illustrate our work.

[1]  Klaus Quibeldey-Cirkel,et al.  Using Patterns for Design and Documentation , 1997, ECOOP.

[2]  Grady Booch,et al.  Object Solutions: Managing the Object-Oriented Project , 1995 .

[3]  Paul R. Calder,et al.  The object-oriented implementation of a document editor , 1992, OOPSLA '92.

[4]  Rudolf K. Keller,et al.  A compositional approach to software design , 1998, Proceedings of the Thirty-First Hawaii International Conference on System Sciences.

[5]  Rick Kazman,et al.  The architecture tradeoff analysis method , 1998, Proceedings. Fourth IEEE International Conference on Engineering of Complex Computer Systems (Cat. No.98EX193).

[6]  Rudolf K. Keller,et al.  Design components: towards software composition at the design level , 1998, Proceedings of the 20th International Conference on Software Engineering.

[7]  Premkumar T. Devanbu GENOA - A Customizable, Language- And Front-end Independent Code Analyzer , 1992, International Conference on Software Engineering.

[8]  Lutz Prechelt,et al.  Design recovery by automated search for structural design patterns in object-oriented software , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[9]  Jiri Soukup,et al.  Implementing patterns , 1995 .

[10]  W. J. Kubitz,et al.  Biting the silver bullet: toward a brighter future for system development , 1992 .

[11]  Christopher Alexander,et al.  The Timeless Way of Building , 1979 .

[12]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[13]  Dirk Riehle Composite design patterns , 1997, OOPSLA '97.

[14]  David Harel,et al.  Biting the silver bullet: toward a brighter future for system development , 1992, Computer.

[15]  Douglas C. Schmidt,et al.  Object-oriented application frameworks , 1997, CACM.

[16]  Bonnie Lee Appleton Patterns and Software: Essential Concepts and Terminology , 1997 .