Know Thy Source Code. Is it mostly dead or alive?

Nowadays, even small systems contain numerous components with complex dependencies. These components differ in importance and quality. Some of them get deprecated over time and can be removed from the project. This leads to the question relevant for all architects: which parts of my source code are still alive? To answer this question we harness the graph-based model of software. We perform a dynamic analysis of internal behaviour of components by eardropping the control flow. We then augment the graph model of the system with the results of this analysis and visualize it. We render execution paths over the nodes and their connections. The vividness of colours reflects the frequency of calls. This visualization helps judging at a glance which parts of software remained unvisited during software execution. Probably those parts are actually dead, thus should absorb little further maintenance, if any. In this paper we describe proof-of-concept tools to support this approach and report results of analysis of selected open-source Java projects of various sizes.

[1]  Rainer Koschke Software Visualization for Reverse Engineering , 2001, Software Visualization.

[2]  Peng Liang,et al.  Software Architecture Documentation: The Road Ahead , 2011, 2011 Ninth Working IEEE/IFIP Conference on Software Architecture.

[3]  Kwan-Liu Ma,et al.  code_swarm: A Design Study in Organic Software Visualization , 2009, IEEE Transactions on Visualization and Computer Graphics.

[4]  Wilhelm Hasselbring,et al.  Kieker: a framework for application performance monitoring and dynamic software analysis , 2012, ICPE '12.

[5]  Robert Dabrowski,et al.  Improving software quality by improving architecture management , 2012, CompSysTech '12.

[6]  George Spanoudakis,et al.  Software Traceability : A Roadmap , 2005 .

[7]  Robert Dabrowski,et al.  On Architecture Warehouses and Software Intelligence , 2012, FGIT.

[8]  Steven P. Reiss,et al.  Dynamic detection and visualization of software phases , 2005, ACM SIGSOFT Softw. Eng. Notes.

[9]  Kwan-Liu Ma StarGate: A Unified, Interactive Visualization of Software Projects , 2008, 2008 IEEE Pacific Visualization Symposium.

[10]  Michel Wermelinger,et al.  A graph based architectural (Re)configuration language , 2001, ESEC/FSE-9.

[11]  Mary Shaw,et al.  Software architecture: reflections on an evolving discipline , 2011, ESEC/FSE '11.

[12]  Robert Dabrowski,et al.  Software Is a Directed Multigraph , 2011, ECSA.

[13]  Bran Selic,et al.  Modelling Foundations and Applications - 6th European Conference, ECMFA 2010, Paris, France, June 15-18, 2010. Proceedings , 2010, European Conference on Modelling Foundations and Applications.

[14]  Philippe Kruchten,et al.  Where Did All This Good Architectural Knowledge Go? , 2010, ECSA.

[15]  Robert Dabrowski,et al.  One Graph to Rule Them All - Software Measurment and Management , 2012, CS&P.

[16]  Ivica Crnkovic,et al.  Software architecture evolution through evolvability analysis , 2012, J. Syst. Softw..

[17]  Andrian Marcus,et al.  Source Viewer 3D (sv3D) - a framework for software visualization , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[18]  Alexander Egyed,et al.  Automating requirements traceability: Beyond the record & replay paradigm , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[19]  Steven P. Reiss Dynamic detection and visualization of software phases , 2005, WODA '05.

[20]  John Derrick,et al.  Model transformations across views , 2010, Sci. Comput. Program..