Abstract

Abstract 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.

Highlights

  • A common definition describes software architecture as the main components of a system, including the acceptable and unacceptable relations among them [7,13,20]

  • The graphs proposed in the paper have been designed to support the following requirements: (a) they should be able to express the different types of relations available in objectoriented systems, including relations due to dynamic calls and reflection; (b) they should support the creation of coarsegrained groups of objects to increase readability and scalability; (c) they should provide means to distinguish objects created by different threads; (d) in order to provide support to dynamic architecture conformance, it should be possible to highlight relations that are expected—or that are not expected—when running a system

  • Because different object graphs (OGs) can be extracted on each execution, it is possible that some graphs do not provide enough information—including both nodes and edges—to correctly understand and locate the defective program components

Read more

Summary

Introduction

A common definition (or view) describes software architecture as the main components of a system, including the acceptable and unacceptable relations among them [7,13,20] Despite their unquestionable importance, architectural models and abstractions are usually not documented, or when they are, the available documentation normally does not reflect the actual architecture followed by the implementation of the target systems [9,16,19]. Reverse engineering techniques can be applied to reify information about a target system architecture [10,27] Those techniques extract models that reveal the static architecture, including class and package diagrams [12] or dependency structure matrices [22].

Object graphs
Alert language
Example 2
Example 1
OG tool
Running the OG tool
Dynamic architecture extraction examples
JHotDraw
Case study: corrective maintenance tasks
Bug 1850703: “Redoing Figure delete change order”
Discussion
Conclusions
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call