Process Description
   This process aims at building UML 2.0 sequence diagrams from the analysis of execution traces. We believe the new definition of sequence diagrams in UML2.0 offers the right level of abstraction to capture and visualize implicit behaviors thanks to the loop and alt fragments. Moreover, sequence diagrams allow the designer to understand the interactions between objects that are an important source of implicit behavior and that are difficult to identify only looking at the code.
   The most important information that allows us to capture high-level behaviors is the identification and the analysis of the evolution of the system’s states at runtime. The proposed process is based on execution traces analysis. The traces are composed of the sequence of methods that are called and state vectors before and after each method calls. These state vectors allow us to identify similar states between several traces and we can deduce loops and alternatives from this information.
   The above figure summarizes our four-step process for reversing high level behaviors.
- In the first step, a set of test cases is executed on the program. This produces a set of execution traces that are modelled as basic sequence diagrams (strict sequence of messages) annotated with state vectors.
- In the second step, the state vectors of each basic sequence are analyzed to produce an automaton that reflects the evolution of the system state for this particular execution.
- In the third step, we combine information from the set of execution traces. This consists in composing all the automata produced form the execution traces in a single automaton.
- In the fourth step, transforms the automaton into a high-level sequence diagram.