Proceedings IEEE International Conference on Software Maintenance. ICSM 2001
DOI: 10.1109/icsm.2001.972750
|View full text |Cite
|
Sign up to set email alerts
|

Reverse engineering of the UML class diagram from c++ code in presence of weakly typed containers

Abstract: UML diagrams, and in particular the most frequently used one, the class diagram, represent a valuable source of information even after the delivery of the system, when it enters the maintenance phase. Several tools provide a reverse engineering engine to recover it from the code.In this paper, an algorithm is proposed for the improvement of the accuracy of the UML class diagram extracted from the code. Specifically, important information about inter-class relations may be missed in a reverse engineered class d… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
18
0

Publication Types

Select...
5
4

Relationship

2
7

Authors

Journals

citations
Cited by 24 publications
(18 citation statements)
references
References 10 publications
0
18
0
Order By: Relevance
“…When a static view and a dynamic view are derived from a program, an abstraction method integrating the techniques in [2] is applied in order to obtain the comparability with the corresponding views of its specification, which includes the following steps: (1) Reuse the specification views as the templates for the program views. For each component (e.g., type, class, process, control structure, data store, data flow) in a specification view, say x, a pair (void, x) is assigned to its corresponding component in the program view; (2) If the reviewer identifies that a component y in the program P is the refinement of the component x in the specification S, change its pair (void, x) to (y, x); (3) If a component y is newly introduced to P , add it to the program view and assign it with the pair (y, void); (4) Determine the directions of relations or data flows in the program views; (5) Remove those components whose pairs have the forms similar to (void, x).…”
Section: Review Processmentioning
confidence: 99%
“…When a static view and a dynamic view are derived from a program, an abstraction method integrating the techniques in [2] is applied in order to obtain the comparability with the corresponding views of its specification, which includes the following steps: (1) Reuse the specification views as the templates for the program views. For each component (e.g., type, class, process, control structure, data store, data flow) in a specification view, say x, a pair (void, x) is assigned to its corresponding component in the program view; (2) If the reviewer identifies that a component y in the program P is the refinement of the component x in the specification S, change its pair (void, x) to (y, x); (3) If a component y is newly introduced to P , add it to the program view and assign it with the pair (y, void); (4) Determine the directions of relations or data flows in the program views; (5) Remove those components whose pairs have the forms similar to (void, x).…”
Section: Review Processmentioning
confidence: 99%
“…While in the original formulation of the analysis, sets of types are attached to variables, and are updated according to the statements encountered in a flow insensitive visit of the program, in our approach, variables are associated to the objects they reference, and such information is propagated inside the object flow graph, a novel program representation designed specifically for the static analysis we propose. In a previous paper [8], a similar flow analysis algorithm was proposed for the recovery of the class diagram in presence of weakly typed containers, which make the field types unusable for reverse engineering, when fields are containers.…”
Section: Introductionmentioning
confidence: 99%
“…Moreover, if the excluded code introduces data flows that alter the OFG, it is necessary to take them into account, in order for the result to be still conservative. An example of this situation is the presence of external container classes [14]. A* indicates that no allocation point for the given object is in the code.…”
Section: Dealing With Incomplete Systemsmentioning
confidence: 99%
“…left hand side, by adopting an approach to container analysis similar to that described in [14]. The edge between Rental-38.…”
Section: Recovery Algorithmmentioning
confidence: 99%