For the complexity of software systems, the main works of software development, maintenance and evolution have been focused on the comprehension of existing systems. In the research field of software, the aim of reverse engineering is to identify the components and their relationships, create representations of the system in another form or at a higher level of abstraction. Reverse engineering is a useful way to program comprehension.After analyze the primary phases of reverse engineering, this paper mainly focus on the topics of the model abstraction and the model transformation. According to the dynamic property of object oriented software systems, a group of mechanism and algorithms that can be used to extract dynamic model and transform between different dynamic models of such systems are provided. All the algorithms have been implemented in XDRE (Xidian Reverse Engineering) tool. In order to verify the correctness, validity and other related performance of these algorithms, systematic experiment is conducted in the paper.(1) In order to implement the automatic transformations between different dynamic models, the relationship between UML sequence diagrams and statechart diagrams is first analyzed. The result shows that it is possible to transform between sequence diagrams and statechart diagrams. Then the main idea of BK algorithm is studied and based on which the relationship between BK algorithm and dynamic model transformation is provided. According to the feature of dynamic model transformation and the information collected by dynamic analysis, the BK algorithm is applied to automatically synthesize statechart diagrams from a set of UML sequence diagrams at two levels: object-level and process-level. Finally, a systematic experiment is conducted to prove the accurateness and validation of this approach. Analyses of the efficiency of the synthesis algorithm are provided.(2) Because of the drawbacks of flat statechart diagrams, we proposed to re-abstract such diagrams by an interactive way according to the merge patterns given by users. Using these merge patterns stored in XDRE, we can make automatically match patterns contained in the original flat statechart diagram and improve its abstract level. The algorithm of pattern matching is provided in this dissertation.(3) An approach for automatically generating hierarchical statechart diagrams based on Harel's XOR states is proposed. Introducing hierarchy to a flat statechart diagram is a common way to improve its readableness. By analyzing the semantics of XOR states, an idea of searching XOR states in flat statechart diagrams to form surperstates is proposed. The algorithm is provided in this dissertation.(4) An approach for adding UML concepts to flat statechart diagrams is provided. Whatever transformation methods are used, the result statechart diagrams are approximate to the real system's behaviors. On the other hand, these statechart diagrams are not fully satisfying the syntax and semantics of UML. By analyzing the properties of flat statechart diagrams, we find in such a case that a flat statechart diagram may contain one of two sub-diagrams or both we can add UML concepts to it. The rules and conditions to form UML internal actions, entry actions, exit actions and action expresses attached to transitions are given.(5) An approach for generating hierarchical statechart diagram according to the public methods of a class is proposed. And the approach is implemented in XDRE. |