On-the-fly extraction of hierarchical object graphs

Reverse engineering techniques are usually applied to extract concrete architecture models. However, these techniques usually extract models that just reveal static architectures, such as class diagrams. On the other hand, the extraction of dynamic architecture models is particularly useful for an initial understanding on how a system works or to evaluate the impact of possible maintenance tasks. This paper describes an approach to extract hierarchical object graphs (OGs) from running systems. The proposed graphs have the following distinguishing features: (a) they support the summarization of objects in domains, (b) they support the complete spectrum of relations and entities that are common in object-oriented systems, (c) they support multithreading systems, and (d) they include a language to alert about expected (or unexpected) relations between the extracted objects. We also describe the design and implementation of a tool for visualizing the proposed OGs. Finally, we provide two case studies. The first study shows how our approach can contribute to understand the running architecture of two systems (myAppointments and JHotDraw). The second study illustrates how OGs can help to locate defective software components in the JHotDraw system.

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

[2]  Roger Riggs,et al.  A Distributed Object Model for the Java System , 1996, Comput. Syst..

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

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

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

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

[7]  Marwan Abi-Antoun Static extraction and conformance analysis of hierarchical runtime architectural structure , 2009, OOPSLA 2009.

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

[9]  Stephen Travis Pope,et al.  A cookbook for using the model-view controller user interface paradigm in Smalltalk-80 , 1988 .

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

[11]  Paolo Tonella,et al.  Reverse Engineering of Object Oriented Code , 2005, Monographs in Computer Science.

[12]  Daniel Jackson,et al.  Lightweight Extraction of Object Models from Bytecode , 2001, IEEE Trans. Software Eng..

[13]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

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

[15]  Paul Clements,et al.  Software Architecture in Practice: Addison-Wesley , 1998 .

[16]  Hugo de Brito,et al.  UMA ABORDAGEM PARA RECUPERAÇÃO DA ARQUITETURA DINÂMICA DE SISTEMAS DE SOFTWARE , 2011 .

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

[18]  Marco Tulio Valente,et al.  How Annotations are Used in Java: An Empirical Study , 2011, SEKE.

[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]  C. Chambers,et al.  ArchJava: connecting software architecture to implementation , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

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

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

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

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

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

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

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

[29]  AldrichJonathan,et al.  Static extraction and conformance analysis of hierarchical runtime architectural structure using annotations , 2009 .

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