Supporting Web Application Evolution by Dynamic Analysis Giuseppe Antonio Di Lucca*, Massimiliano Di Penta*, Anna Rita Fasolino°, Porfirio Tramontana° {dilucca, dipenta}@unisannio.it, {fasolino, ptramont}@unina.it *RCOST - Research Centre on Software Technology, University of Sannio Palazzo ex Poste, via Traiano, 82100 Benevento, Italy ° Dipartimento di Informatica e Sistemistica, Università di Napoli Federico II Via Claudio, 21, 80125 Napoli, Italy Abstract The evolution of Web Applications needs to be supported by the availability of proper analysis and design documents. UML use case diagrams are certainly useful to identify features to evolve, as well as to study the Web Application evolution in terms of features added/removed or changed. Unfortunately, very often the only source of documentation available is constituted by the Web Application source code. This paper proposes an approach to abstract use case diagrams from execution traces of a Web Application. The approach is mainly based on the analysis of a graph modelling the transitions between the pages navigated along user sessions and the clustering of the navigated pages. A case study carried out to validate the proposed approach and showing its feasibility is reported in the paper. Keywords: web application reverse engineering, dynamic analysis, UML diagram abstraction 1. Introduction The rapid diffusion of Web Application (WAs), and the growth of their complexity, have raised the need for supporting their evolution with a disciplined life cycle and proper methodologies. Due to the market pressure, Web applications are characterized by a fast development and by a high rate of maintenance and evolution operations, to continuously adapt the application to the new needs. When performing maintenance/evolution activities, it is necessary to have the WA analysis and design documentation available to effectively and correctly perform the required intervention. To this aim, appropriate notations (see, for example, the Conallen’s UML extension [4]) have been proposed. However, in most cases the only source of documentation available is just the source code of the WA itself. This because the fast required development, often, does not permit the production of adequate development documentation, useful to reduce the effort of maintenance/evolution operations. The only possibility is, in this case, to recover the needed missing information by reverse engineering the WA [8]. In this paper we will focus on the reverse engineering of WA use case diagrams. These diagrams can support the WA evolution in different possible ways, such as: - identifying the features to be evolved, mapping the modification requests to use cases; - identifying the features impacted by a modification; - analyzing how the WA evolves in terms of features added, removed or changed: this can be made analyzing use case diagram snapshots taken at different releases; or - supporting the regression testing of the evolved WA. Many WA reverse engineering tasks, included the one described in this paper, are quite difficult to be performed relying only on static analysis of the code. This is already well-known for traditional software: tasks such as the recovery of design patterns [10], scenarios and sequence diagrams [16, 3] are just some examples. WAs tend to be more and more highly interactive and dynamic than traditional applications: HTML pages can be dynamically built by server pages, thus, according to the user inputs or requests, the WA user interface may 1 Proceedings of the 2005 Eighth International Workshop on Principles of Software Evolution (IWPSE’05) 1550-4077/05 $20.00 © 2005 IEEE