This paper discusses reverse engineering source code to produce UML sequence diagrams, with the aim to aid program comprehension and other software life cycle activities (e.g., verification). As a first step we produce scenario diagrams using the UML sequence diagram notation. We build on previous work, now combining static and dynamic analyses of a Java software, our objective being to obtain a lightweight instrumentation and therefore disturb the software behaviour as little as possible. We extract the control flow graph from the software source code and obtain an execution trace by instrumenting and running the software. Control flow and trace information is represented as models and UML scenario diagram generation becomes a model transformation problem. Our validation shows that we indeed reduce the execution overhead inherent to dynamic analysis, without losing in terms of the quality of the reverse-engineered information, and therefore in terms of the usefulness of the approach (e.g., for program comprehension).

Additional Metadata
Keywords Reverse engineering, Sequence diagram, Scenario diagram, Static analysis, Dynamic analysis
Publisher Department of Systems and Computer Engineering
Series SCE Technical Reports
Labiche, Y, & Kolbah, Bojana. (2011). Combining Static and Dynamic Analyses to Reverse-Engineer Scenario Diagrams. SCE Technical Reports. Department of Systems and Computer Engineering.