The process is based on model-driven
reengineering techniques used to mainly obtain (i) a new RIA front end
to interact with the legacy system and (ii) a server-side connection
layer to allow this interaction.
The defined approach is fundamentally organized in two different stages: (1) generation of a conceptual representation of the legacy WA; and (2) generation of the RIA front-end and its infrastructure. Three information extraction plans have been defined, marked as RE-C-D, RE-S-S and RE-S-D, and one restructuring process, FE-RIA. Our purpose is to obtain information from three complementary views of the same system: (1) the dynamic runtime view at client-side; (2) the static view of the system source code at server-side; (3) and the dynamic view of user interaction trace from server-side runtime log.
Our main efforts have been focused on applying static analysis techniques to the legacy Web Application code at server side.
Reverse Engineering at Server Side (RE-S-S)
The next figure describes the main steps of our model driven reverse engineering process carried out at server side by means of static analysis techniques.
As input, our process takes the source code of a Struts-based WA (JSP, Java, XML) to perform a static analysis. First of all, we use MoDisCo discoverers to generate models directly from the source code (text-to-model transformation). MoDisCo gives us a model representation of every source code resource of the WA (every JSP, Java, or XML file). However, MoDisco discoverer outputs not Struts-aware models, i.e Struts main concepts are not first level entities. So those models are complete but too complex to derive navigational models from them. In this work we have adapted MoDisco to create Struts-aware models from our legacy application. We then use these models to produce a representation of the WA on a higher level of abstraction conformed to our MVC (Struts) metamodel. This transformation is specified by the definition of ATL Rules. On this stage, our main concern is to get an accurate specification of the navigational aspect of the WA. With that purpose, we build a MVC (Struts) model that collects all the interaction flows (and the elements involved) defined on the web layer, generating a comprehensive view of the navigational concern.