automatic generation of abstract views for legacy software comprehension
One of the main motivations for the reverse engineering of software programs is to help with software comprehension. Although several techniques have been presented in the literature to reverse-architect software, the corresponding views usually do not help much. In fact, most of the published techniques recover the architecture of the software by focusing on the abstract properties of the components such as coupling and coherence. We claim that the recovered components should rather represent abstract functional entities whose behavior could be understood independently from the others. Then, an abstract view of the system would represent the interactions between such functional entities. In this paper we present a technique and a tool able to generate abstract sequence diagrams to represent the global working of legacy programs. This shows the main interactions between abstract functional components. When comparing the automatically generated sequence diagrams to the one a developer would produce by hand, we realized that the representation were very close. Our work could then be considered as a first step to the automatic generation of human-understandable abstract views of the working of legacy programs.
abstract view sequence diagram functional component software clustering dynamic analysis reverse-engineering