Evolutionary and collaborative software architecture recovery with Softwarenaut

Architecture recovery is an activity applied to a system whose initial architecture has eroded. When the system is large, the user must use dedicated tools to support the recovery process. We present Softwarenaut - a tool which supports architecture recovery through interactive exploration and visualization. Classical architecture recovery features, such as filtering and details on demand, are enhanced with evolutionary capabilities when multi-version information about a subject system is available. The tool allows sharing and discovering the results of previous analysis sessions through a global repository of architectural views indexed by systems. We present the features of the tool together with the architecture recovery process that it supports using as a case-study ArgoUML, a well-known open source Java system.

[1]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[2]  Stéphane Ducasse,et al.  Software Architecture Reconstruction: A Process-Oriented Taxonomy , 2009, IEEE Transactions on Software Engineering.

[3]  Marin Litoiu,et al.  Visualizing Flow Diagrams in WebSphere Studio Using SHriMP Views , 2003, Inf. Syst. Frontiers.

[4]  Lou J. Somers,et al.  Using version information in architectural clustering - a case study , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[5]  Stéphane Ducasse,et al.  Polymetric Views - A Lightweight Visual Approach to Reverse Engineering , 2003, IEEE Trans. Software Eng..

[6]  Ben Shneiderman,et al.  The eyes have it: a task by data type taxonomy for information visualizations , 1996, Proceedings 1996 IEEE Symposium on Visual Languages.

[7]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[8]  Hausi A. Müller,et al.  A reverse engineering environment based on spatial and visual software interconnection models , 1992, SDE 5.

[9]  Stéphane Ducasse,et al.  Towards A Process-Oriented Software Architecture Reconstruction Taxonomy , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[10]  IEEE-SA Standards Board , 2000 .

[11]  Mira Mezini,et al.  A Survey on Interactive Grouping and Filtering in Graph-based Software Visualizations , 2007 .

[12]  Rainer Koschke,et al.  Atomic architectural component recovery for program understanding and evolution , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[13]  Jock D. Mackinlay,et al.  Cone Trees: animated 3D visualizations of hierarchical information , 1991, CHI.

[14]  Kenny Wong,et al.  The reverse engineering notebook , 1999 .

[15]  Michele Lanza,et al.  A Flexible Framework to Support Collaborative Software Evolution Analysis , 2008, 2008 12th European Conference on Software Maintenance and Reengineering.

[16]  Giuliano Antoniol,et al.  An automatic approach to identify class evolution discontinuities , 2004, Proceedings. 7th International Workshop on Principles of Software Evolution, 2004..

[17]  Martin Pinzger,et al.  ArchView - Analyzing Evolutionary Aspects of Complex Software Systems , 2005 .

[18]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[19]  Mircea Lungu,et al.  Reverse engineering software ecosystems , 2009 .

[20]  Cristina Marinescu,et al.  McC and Mc#: Unified C++ and C# Design Facts Extractors Tools , 2007, Ninth International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC 2007).

[21]  Oscar Nierstrasz,et al.  The story of moose: an agile reengineering environment , 2005, ESEC/FSE-13.

[22]  Romain Robbes,et al.  The Small Project Observatory: Visualizing software ecosystems , 2010, Sci. Comput. Program..

[23]  Hausi A. Müller,et al.  Manipulating and documenting software structures using SHriMP views , 1995, Proceedings of International Conference on Software Maintenance.

[24]  Spiros Mancoridis,et al.  On the automatic modularization of software systems using the Bunch tool , 2006, IEEE Transactions on Software Engineering.

[25]  Meir M. Lehman Programs, life cycles, and laws of software evolution , 1980 .

[26]  Jeffery R. Westbrook,et al.  Maintaining hierarchical graph views , 2000, SODA '00.

[27]  Sander Tichelaar,et al.  Modeling Object-Oriented Software for Reverse Engineering and Refactoring , 2001 .

[28]  Michele Lanza,et al.  Interactive Exploration of Semantic Clusters , 2005, 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[29]  Wim De Pauw,et al.  Proceedings of the 2005 ACM symposium on Software visualization , 2005 .

[30]  David R. Karger,et al.  Relo: Helping Users Manage Context during Interactive Exploratory Visualization of Large Codebases , 2005, Visual Languages and Human-Centric Computing (VL/HCC'06).

[31]  Tudor Gîrba,et al.  Modeling History to Understand Software Evolution , 2005 .

[32]  Romain Robbes,et al.  Software systems as cities: a controlled experiment , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[33]  Mehdi Jazayeri On Architectural Stability and Evolution , 2002, Ada-Europe.

[34]  David Notkin,et al.  Software reflexion models: bridging the gap between source and high-level models , 1995, SIGSOFT FSE.

[35]  Li-Te Cheng,et al.  Introducing collaboration into an application development environment , 2004, CSCW.

[36]  Michele Lanza,et al.  Exploring Inter-Module Relationships in Evolving Software Systems , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[37]  Michele Lanza,et al.  Software Evolution Comprehension: Replay to the Rescue , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[38]  Michael W. Godfrey,et al.  YARN: Animating Software Evolution , 2007, 2007 4th IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[39]  Xiaomin Wu,et al.  Plugging-in visualization: experiences integrating a visualization tool with Eclipse , 2003, SoftVis '03.

[40]  Sushil Krishna Bajracharya,et al.  Sourcerer: mining and searching internet-scale software repositories , 2008, Data Mining and Knowledge Discovery.

[41]  David D. McDonald,et al.  Programs , 1984, CL.

[42]  David Garlan,et al.  Architectural Mismatch: Why Reuse Is Still So Hard , 2009, IEEE Software.

[43]  DucasseStéphane,et al.  Polymetric Views-A Lightweight Visual Approach to Reverse Engineering , 2003 .

[44]  Hausi A. Müller,et al.  Rigi: a system for programming-in-the-large , 1988, Proceedings. [1989] 11th International Conference on Software Engineering.

[45]  Daniel M. German,et al.  On the use of visualization to support awareness of human activities in software development: a survey and a framework , 2005, SoftVis '05.

[46]  David R. Karger,et al.  Relo: Helping Users Manage Context during Interactive Exploratory Visualization of Large Codebases , 2006, VL/HCC.

[47]  Malcolm Munro,et al.  Software Architecture Visualization: An Evaluation Framework and Its Application , 2008, IEEE Transactions on Software Engineering.

[48]  Michele Lanza,et al.  Softwarenaut: cutting edge visualization , 2006, SoftVis '06.

[49]  Robert L. Nord,et al.  Applied Software Architecture , 1999, Addison Wesley object technology series.

[50]  Michele Lanza,et al.  Package patterns for visual architecture recovery , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[51]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .