Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Springer Science - 2005 - Reverse Engineering of Object Orie.pdf
Скачиваний:
17
Добавлен:
15.08.2013
Размер:
6.11 Mб
Скачать

4.6 Related Work

87

relationships (objects) are created, changed, or deleted. On the other hand, this is known only for specific program executions.

4.6 Related Work

Information about class instances is collected at run-time by research prototypes, such as those described in [42, 62, 67, 97]. In these works, creation of objects and inter-object message exchange are captured by tracing the execution of a program under given scenarios. A novel approach for the dynamic analysis of object creation and of the inter-object relationships is described in [29]. It exploits the notion of aspect, introduced by Aspect Oriented Programming [40], and its ability to intercept a well defined execution point (join point), at which information about objects can be accessed and traced.

The OFG propagation exploited for static object diagram construction is based on the type inference technique for points to analysis [3]. More details on this and other related works are provided in Chapter 2, in the context of OFG construction and flow propagation. A major difference with the works in the type inference literature consists of the object sensitive variant (see Fig. 4.4), which requires an incremental OFG construction. Edges in the OFG depend on the objects referenced by program locations (object sensitivity), which are in turn the outcome of flow propagation on the OFG. OFG construction followed by flow propagation are repeatedly performed to produce the final, object sensitive, OFG of the program. Similar problems are faced in [57], where an object sensitive variant of [3] is investigated.

Experimental results obtained by applying the presented approach to a case study are provided in [89], where the information conveyed by class diagrams, static object diagrams and dynamic object diagrams is considered. Results indicate that the object diagram provides additional information with respect to the class diagram, being focused on the way a program actually uses the objects that instantiate the declared classes. Moreover, static and dynamic views of the objects capture complementary information. The former covers all statically admissible inter-object relationships, while the latter provides accurate multiplicity data for specific scenarios. Two novel object-oriented testing criteria, Object coverage and Inter-object relationship coverage are derived in [89] from the comparison of the static object diagram and of the diagrams associated to the execution of test cases. The number of test cases should be enough as to cover all object creations or inter-object relationships displayed in the static object diagram.

This page intentionally left blank