RED Project

RED stands for reverse engineering of UML sequence diagrams. The goal of this project is to develop state-of-the-art algorithms for extracting sequence diagrams from Java code.

Reverse-Engineered UML Sequence Diagrams

Sequence diagrams play a central role in UML modeling of object interactions. Reverse engineering of sequence diagram allows the automatic extraction of such diagrams from existing code. This is often necessary during iterative development. A typical scenario is to perform design recovery through reverse engineering of class diagrams and sequence diagrams in the beginning of the current iteration, based on the last iteration's code. Additional reverse engineering is also usually necessary during an iteration.

Software maintenance can also benefit from reverse-engineered sequence diagrams. These diagrams are particularly well-suited for representing interactions in object-oriented software. Automatic design recovery of object interactions for software understanding and maintenance requires effective reverse engineering of sequence diagrams.

Object interactions are an essential consideration for testing of object-oriented software. Various testing approaches consider the interactions represented by sequence diagrams as part of their coverage requirements. These coverage goals can be defined with respect to different elements of statically-constructed sequence diagrams which are extracted from the code under test. Subsequent run-time analysis during test execution can be used to determine the coverage of these diagram elements and to highlight potential test weaknesses.

Static Analyses for Reverse-Engineered Sequence Diagrams

The work on RED revealed various challenging research problems. The difficulty of these problems becomes clear when one considers commercial tools that perform reverse engineering of UML sequence diagrams from Java code. UML modeling tools can produce reverse-engineered diagrams that are incorrect or incomplete. These are not low-quality tools — in fact, they are mature, well-designed, high-quality commercial tools that are very useful during software development. However, the conceptual problems related to correct reverse engineering are complicated and require advanced static analysis techniques. We have solved several of these problems with state-of-the-art static analyses for reverse engineering of UML sequence diagrams.

The following challenges were addressed:

Testing Based on Reverse-Engineered Sequence Diagrams

Based on the reverse-engineered diagrams, we defined several control-flow coverage criteria for testing the interactions among a set of collaborating objects. The sequences of messages in the diagrams were used to define the coverage goals for the family of criteria, by generalizing traditional techniques such as branch coverage and path coverage. We also defined a run-time analysis that gathers coverage measurements for the criteria. A novel approach (based on integer linear programming) was used to estimate the complexity of each criterion. The results of this work compared different approaches for testing of object interactions and provided new insights for testers and for builders of test coverage tools [FASE05].

Visualization of Reverse-Engineered Sequence Diagrams

Effective visualization of large-scale complex reverse-engineered sequence diagrams is challending. Due to their large size and inefficient spatial design, the diagrams could easily become useless to software engineers. We investigated the visual limitations of UML sequence diagrams and developed a set of techniques for overcoming these limitations [VISSOFT05].

main page