Software visualization or software visualisation refers to the visualization of information of and related to software systems—either the architecture of its source code or metrics of their runtime behavior- and their development process by means of static, interactive or animated 2-D or 3-D visual representations of their structure, execution, behavior, and evolution.
Software system information
Software visualization uses a variety of information available about software systems. Key information categories include:
The objectives of software visualization are to support the understanding of software systems (i.e., its structure) and algorithms (e.g., by animating the behavior of sorting algorithms) as well as the analysis and exploration of software systems and their anomalies (e.g., by showing classes with high coupling) and their development and evolution. One of the strengths of software visualization is to combine and relate information of software systems that are not inherently linked, for example by projecting code changes onto software execution traces.
Software visualization can be used as tool and technique to explore and analyze software system information, e.g., to discover anomalies similar to the process of visual data mining. For example, software visualization is used to monitoring activities such as for code quality or team activity. Visualization is not inherently a method for software quality assurance. Software visualization participates to Software Intelligence in allowing to discover and take advantage of mastering inner components of software systems.
Tools for software visualization might be used to visualize source code and quality defects during software development and maintenance activities. There are different approaches to map source code to a visual representation such as by software maps Their objective includes, for example, the automatic discovery and visualization of quality defects in object-oriented software systems and services. Commonly, they visualize the direct relationship of a class and its methods with other classes in the software system and mark potential quality defects. A further benefit is the support for visual navigation through the software system.
More or less specialized graph drawing software is used for software visualization. A small-scale 2003 survey of researchers active in the reverse engineering and software maintenance fields found that a wide variety of visualization tools were used, including general purpose graph drawing packages like GraphViz and GraphEd, UML tools like Rational Rose and Borland Together, and more specialized tools like Visualization of Compiler Graphs (VCG) and Rigi.:99–100 The range of UML tools that can act as a visualizer by reverse engineering source is by no means short; a 2007 book noted that besides the two aforementioned tools, ESS-Model, BlueJ, and Fujaba also have this capability, and that Fujaba can also identify design patterns.
- Related concepts
- Johannes Bohnet, Jürgen Döllner: Analyzing Feature Implementation by Visual Exploration of Architecturally-Embedded Call-Graphs. 4th International Workshop on Dynamic Analysis, ACM, ACM Press, pp. 41–48, 2006.
- Diehl, 2002; Diehl, 2007; Knight, 2002)
- (Marcus et al., 2003; Wettel et al., 2007)
- (Staples & Bieman, 1999)
- J. Trümper et al.: Multiscale Visual Comparison of Execution Traces. Proceedings of the International Conference on Program Comprehension, IEEE Computer Society, pp. 53-62, 2013.
- (Kuhn et al., 2006, Stasko et al., 1997)
- J. Bohnet et al.: Projecting Code Changes onto Execution Traces to Support Localization of Recently Introduced Bugs. 24th ACM Symposium on Applied Computing, ACM, pp. 438–442, 2009.
- (Keim, 2002; Soukup, 2002; Burch, 2005).
- J. Bohnet, J. Döllner: Monitoring Code Quality and Development Activity by Software Maps. Proceedings of the IEEE ACM ICSE Workshop on Managing Technical Debt, pp. 9-16, 2011.
- D. Limberger et al.: Interactive Software Maps for Web-Based Source Code Analysis. Proceedings of the International Web3D Conference, ACM, pp. 8, 2013.
- Koschke, Rainer (2003). "Software visualization in software maintenance, reverse engineering, and re-engineering: a research survey". Journal of Software Maintenance and Evolution: Research and Practice. 15 (2): 87–109. doi:10.1002/smr.270.
- Stephan Diehl (May 2007). Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software. Springer Science & Business Media. p. 63. ISBN 978-3-540-46505-8.
- Roels, R., Mestereaga, P., and Signer, B. (2016). "An Interactive Source Code Visualisation Plug-in for the MindXpres Presentation Platform". Communications in Computer and Information Science (CCIS), 583, 2016
- Burch, M., Diehl, S., and Weißgerber, P. (2005). Visual data mining in software archives. Proceedings of the 2005 ACM symposium on Software visualization (SoftVis '05). ACM, New York, NY, USA, 37-46. doi:10.1145/1056018.1056024
- Diehl, S. (2002). Software Visualization. International Seminar. Revised Papers (LNCS Vol. 2269), Dagstuhl Castle, Germany, 20–25 May 2001 (Dagstuhl Seminar Proceedings).
- Diehl, S. (2007). Software Visualization — Visualizing the Structure, Behaviour, and Evolution of Software. Springer, 2007, ISBN 978-3-540-46504-1
- Eades, P. and Zhang, K. (1996). "Software Visualisation", Series on Software Engineering and Knowledge Engineering, Vol.7, World Scientific Co., Singapore, 1996, ISBN 981-02-2826-0, 268 pages.
- Gîrba, T., Kuhn, A., Seeberger, M., and Ducasse, S., "How Developers Drive Software Evolution," Proceedings of International Workshop on Principles of Software Evolution (IWPSE 2005), IEEE Computer Society Press, 2005, pp. 113–122. PDF
- Keim, D. A. (2002). Information visualization and visual data mining. IEEE Transactions on Visualization and Computer Graphics, USA * vol 8 (Jan. March 2002), no 1, p 1 8, 67 refs.
- Knight, C. (2002). System and Software Visualization. In Handbook of software engineering & knowledge engineering. Vol. 2, Emerging technologies (Vol. 2): World Scientific Publishing Company.
- Kuhn, A., and Greevy, O., "Exploiting the Analogy Between Traces and Signal Processing," Proceedings IEEE International Conference on Software Maintenance (ICSM 2006), IEEE Computer Society Press, Los Alamitos CA, September 2006. PDF
- Lanza, M. (2004). CodeCrawler — polymetric views in action. Proceedings. 19th International Conference on Automated Software Engineering, Linz, Austria, 20 24 Sept. 2004 * Los Alamitos, CA, USA: IEEE Comput. Soc, 2004, p 394 5.
- Lopez, F. L., Robles, G., & Gonzalez, B. J. M. (2004). Applying social network analysis to the information in CVS repositories. "International Workshop on Mining Software Repositories (MSR 2004)" W17S Workshop 26th International Conference on Software Engineering, Edinburgh, Scotland, UK, 25 May 2004 * Stevenage, UK: IEE, 2004, p 101 5.
- Marcus, A., Feng, L., & Maletic, J. I. (2003). 3D representations for software visualization. Paper presented at the Proceedings of the 2003 ACM symposium on Software visualization, San Diego, California.
- Soukup, T. (2002). Visual data mining : techniques and tools for data visualization and mining. New York: Chichester.
- Staples, M. L., & Bieman, J. M. (1999). 3-D Visualization of Software Structure. In Advances in Computers (Vol. 49, pp. 96–143): Academic Press, London.
- Stasko, J. T., Brown, M. H., & Price, B. A. (1997). Software Visualization: MIT Press.
- Van Rysselberghe, F. (2004). Studying Software Evolution Information By Visualizing the Change History. Proceedings. 20th International Conference On Software Maintenance. pp 328–337, IEEE Computer Society Press, 2004
- Wettel, R., and Lanza, M., Visualizing Software Systems as Cities. In Proceedings of VISSOFT 2007 (4th IEEE International Workshop on Visualizing Software For Understanding and Analysis), pp. 92 – 99, IEEE Computer Society Press, 2007.
- Zhang, K. (2003). "Software Visualization - From Theory to Practice". Kluwer Academic Publishers, Boston, April 2003, ISBN 1-4020-7448-4, 468 pages.