On-the-Fly and Non-invasive Extraction of Runtime Architectures Using Hierarchical Object Graphs

Reverse engineering techniques are usually applied to extract concrete architecture models. However, these techniques usually extract diagrams that just reveal static architectures, such as class diagrams. On the other hand, the extraction of dynamic architecture models can be particularly useful for an initial understanding of how a system works or to evaluate the impact of a possible maintenance task. This paper describes an approach to extract hierarchical object graphs from running systems. The proposed graphs have several features that -- when combined -- make them valuable when compared to similar approaches, including: (a) support to the hierarchization of objects in domains, (b) support to the full spectrum of relations and entities that are common in object-oriented systems, (c) support to multithreading systems, (d) support to a language to alert about expected (or unexpected) relations between extracted objects. We also describe the design and implementation of a tool for visualizing the proposed object graphs. Finally, we show how our approach can contribute for understanding the running architecture of two systems.

[1]  Vineet Sinha,et al.  Using dependency models to manage complex software architecture , 2005, OOPSLA '05.

[2]  Martin Fowler,et al.  Patterns of Enterprise Application Architecture , 2002 .

[3]  David Notkin,et al.  ArchJava: connecting software architecture to implementation , 2002, ICSE '02.

[4]  Ricardo Terra,et al.  Static Architecture-Conformance Checking: An Illustrative Overview , 2010, IEEE Software.

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

[6]  Paolo Tonella Reverse engineering of object oriented code , 2005, ICSE.

[7]  Nicolas Anquetil,et al.  Experiments with clustering as a software remodularization method , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[8]  Marwan Abi-Antoun,et al.  Static extraction of sound hierarchical runtime object graphs , 2009, TLDI '09.

[9]  Daniel Jackson,et al.  Lightweight extraction of object models from bytecode , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[10]  Ricardo Terra,et al.  Towards a Dependency Constraint Language to Manage Software Architectures , 2008, ECSA.

[11]  Ricardo Terra,et al.  A dependency constraint language to manage object-oriented software architectures , 2009 .

[12]  Lionel C. Briand,et al.  Toward the Reverse Engineering of UML Sequence Diagrams for Distributed Java Software , 2006, IEEE Transactions on Software Engineering.

[13]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[14]  Hong Yan,et al.  DiscoTect: a system for discovering architectures from running systems , 2004, Proceedings. 26th International Conference on Software Engineering.

[15]  Nicolas Anquetil,et al.  Ten Years Later, Experiments with Clustering as a Software Remodularization Method , 2009, 2009 16th Working Conference on Reverse Engineering.

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

[17]  Mary Shaw,et al.  "The Golden Age of Software Architecture" Revisited , 2009, IEEE Software.

[18]  Marwan Abi-Antoun,et al.  Static extraction and conformance analysis of hierarchical runtime architectural structure using annotations , 2009, OOPSLA '09.

[19]  Jens Knodel,et al.  Static evaluation of software architectures , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[20]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[21]  Ricardo Terra,et al.  A dependency constraint language to manage object‐oriented software architectures , 2009, Softw. Pract. Exp..

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

[23]  Hong Yan,et al.  Discovering Architectures from Running Systems , 2006, IEEE Transactions on Software Engineering.

[24]  Ricardo Terra,et al.  Verificação Estática de Arquiteturas de Software utilizando Restrições de Dependência , 2008, SBCARS.