Summary: | Son numerosas las empresas que se enfrentan actualmente a la modernización de los sistemas heredados (legacy systems) que fueron desarrollados con entornos RAD (Rapid Application Development), con el objetivo de beneficiarse de las nuevas plataformas y tecnologías. Como parte de estos sistemas, las interfaces gráficas de usuario (GUIs, Graphical User Interfaces) son una parte importante, dado que es lo que los usuarios ven y manipulan. En las modernizaciones de GUIs de aplicaciones creadas con entornos RAD los desarrolladores deben tratar con dos problemas no triviales. El primero consiste en que el layout de la GUI (esto es, la organización espacial de los controles en las ventanas de la aplicación), se define implícitamente por las coordenadas que definen las posiciones de los controles. Sin embargo, para sacar provecho de las características que ofrecen las tecnologías actuales de GUIs se hace necesario un modelo de layout explícito de alto nivel. El segundo problema es que los desarrolladores tienen que tratar con el código de los manejadores de eventos que con frecuencia mezclan diferentes aspectos la aplicación, como la presentación y la lógica de negocio. Además, afrontar la migración de la GUI de un sistema heredado, esto es, programar de nuevo la interfaz es costoso para las empresas. Esta tesis pretende abordar estos problemas por medio de una arquitectura de Desarrollo de Software Dirigido por Modelos (DSDM) que automatice la migración de la interfaz de de aplicaciones creadas con entornos RAD. Para tratar con el primer problema proponemos un enfoque que descubre el layout que está implícito en las coordenadas de los controles. La idea subyacente consiste en trasladar el sistema de posicionamiento basado en coordenadas a una representación basada en relaciones entre controles, y entonces usar esta representación para inferir el layout en términos de gestores de layout (layout managers). Hemos desarrollado dos versiones de este enfoque: una solución voraz y otra más sofisticada basada en un algoritmo exploratorio. Con el objeto de tratar con el segundo problema hemos creado un enfoque de ingeniería inversa que analiza los manejadores de eventos de las aplicaciones creadas con entornos RAD. En nuestra solución, el código de los manejadores de eventos se transforma en una representación intermedia que captura el comportamiento de alto nivel del código. Esta representación facilita la separación de aspectos. En particular nos ha permitido separar los aspectos arquitecturales del código original e identificar las interacciones existentes entre los controles. Todos los modelos generados en el proceso de ingeniería inversa se han integrado en un modelo de Interfaz de Usuario Concreta que representa los diferentes aspectos que abarca una GUI. Tanto las dos propuestas de inferencia del layout como el análisis de los manejadores de eventos han sido testeados con aplicaciones reales que fueron desarrolladas en Oracle Forms. La versión del algoritmo de inferencia exploratorio fue adicionalmente testeada con esbozos (wireframes) de la interfaz, lo que demuestra la utilidad de la solución de inferencia del layout en escenarios distintos a la migración. === Businesses are more and more modernising the legacy systems they developed with Rapid Application Development (RAD) environments, so that they can benefit from new platforms and technologies. As a part of these systems, Graphical User Interfaces (GUIs) pose an important concern, since they are what users actually see and manipulate. When facing the modernization of GUIs of applications developed with RAD environments, developers must deal with two non-trivial issues. The first issue is that the GUI layout is implicitly provided by the position of the GUI elements (i.e. coordinates). However, taking advantage of current features of GUI technologies often requires an explicit, high-level layout model. The second issue is that developers must deal with event handling code that typically mixes concerns such as GUI and business logic. In addition, tackling a manual migration of the GUI of a legacy system, i.e., re-programming the GUI, is time-consuming and costly for businesses. This thesis is intended to address these issues by means of an MDE architecture that automates the migration of the GUI of applications created with RAD environments. To deal with the first issue we propose an approach to discover the layout that is implicit in widget coordinates. The underlying idea is to move from a coordinate-based positioning system to a representation based on relative positions among widgets, and then use this representation to infer the layout in terms of layout managers. Two versions of this approach has been developed: a greedy solution and a more sophisticated solution based on an exploratory algorithm. To deal with the second issue we have devised a reverse engineering approach to analyse event handlers of RAD-based applications. In our solution, event handling code is transformed into an intermediate representation that captures the high-level behaviour of the code. From this representation, separation of concerns is facilitated. Particularly it has allowed us to achieve the separation of architectural concerns from the original code, and the identification of interactions among widgets. All the generated models in the reverse engineering process have been integrated into a Concrete User Interface (CUI) model that represents the different aspects that are embraced by a GUI. The two layout inference proposals and the event handler analysis have been tested with real applications that were developed in Oracle Forms. The exploratory version of the layout inference approach was in addition tested with wireframes, which pose a different context in which the layout inference problem is also useful.
|