Control Flow Analysis for Reverse Engineering of Sequence Diagrams

Reverse engineering of UML sequence diagrams plays an important role in iterative development and in software maintenance. In static analysis for such reverse engineering, an open question is how to map control-flow graphs to the control-flow primitives of the recently-introduced new generation of UML. Our work presents the first algorithm that solves this problem. We also propose transformations of the reverse-engineered diagrams in order to improve diagram comprehension. Our extensive experiments show that these techniques are efficient and effective. We also describe a test coverage tool based on the sequence diagrams, and discuss its use for the evaluation of a real-world test suite.

[1]  Craig Larman,et al.  Applying UML and patterns , 1997 .

[2]  Robert E. Tarjan,et al.  A fast algorithm for finding dominators in a flowgraph , 1979, TOPL.

[3]  Olga Nicole Volgin Analysis of Flow of Control for Reverse Engineering of Sequence Diagrams , 2005 .

[4]  Barbara G. Ryder,et al.  Points-to analysis for Java based on annotated constraints , 2000 .

[5]  Laurie J. Hendren,et al.  Optimizing Java Bytecode Using the Soot Framework: Is It Feasible? , 2000, CC.

[6]  Lionel C. Briand,et al.  A UML-Based Approach to System Testing , 2001, Software and Systems Modeling.

[7]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[8]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[9]  Paolo Tonella,et al.  Reverse engineering of the interaction diagrams from C++ code , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[10]  Falk Fraikin,et al.  SeDiTeC-testing based on sequence diagrams , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[11]  Nick Mitchell,et al.  Visualizing the Execution of Java Programs , 2001, Software Visualization.

[12]  G. Ramalingam,et al.  On loops, dominators, and dominance frontiers , 2002, TOPL.

[13]  A. Jefferson Offutt,et al.  UML-Based Integration Testing for Component-Based Software , 2003, ICCBSS.

[14]  Stéphane Ducasse,et al.  Using dynamic information for the iterative recovery of collaborations and roles , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[15]  Lionel C. Briand,et al.  Towards the reverse engineering of UML sequence diagrams , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[16]  Hausi A. Müller,et al.  Shimba—an environment for reverse engineering Java software systems , 2001, Softw. Pract. Exp..

[17]  Robert V. Binder,et al.  Testing Object-Oriented Systems: Models, Patterns, and Tools , 1999 .

[18]  Atanas Rountev,et al.  Static and dynamic analysis of call chains in java , 2004, ISSTA '04.

[19]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[20]  A. Jefferson Offutt,et al.  Using UML Collaboration Diagrams for Static Checking and Test Generation , 2000, UML.

[21]  Robert E. Tarjan Testing flow graph reducibility , 1973, STOC '73.

[22]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[23]  R. Kollmann,et al.  Capturing Dynamic Program Behaviour with UML Collaboration Diagrams , 2001, CSMR.

[24]  Thomas Schmitt,et al.  JAVAVIS: Automatic Program Visualization with Object and Sequence Diagrams Using the Java Debug Interface (JDI) , 2001, Software Visualization.