Migración automática de software: de GWT a Angular

Soporte para la automatización de la migración de interfaces de aplicaciones web: el caso de GWT a Angular

Durante la evolución de una aplicación, a veces es necesario migrar su implementación a un lenguaje de programación diferente y/o a un marco de interfaz gráfica de usuario (GUI). Los frameworks de GUI web, en particular, evolucionan a un ritmo rápido. Por ejemplo, en 2018 hubo dos versiones principales de Angular, tres versiones principales de React.js y cuatro versiones de Vue.js. Esto obliga a las empresas a actualizar sus sistemas de software con regularidad para evitar quedarse estancados en tecnologías antiguas.En Berger-Levrault, necesitamos migrar nuestras aplicaciones del marco GWT a Angular. Tenemos 8 aplicaciones que utilizan GWT. Cada aplicación tiene más de 1,5 MLOC (millones de líneas de código) y representa más de 400 páginas web. En este trabajo, proponemos un enfoque en cuatro pasos que utiliza el meta-modelo para representar la GUI a un alto nivel de abstracción.

Metamodelos

Modelo GUI
Modelo de diseño
Acérquese a

Nuestras limitaciones

Identificamos las siguientes limitaciones para nuestro caso de estudio:

  • De GWT a Angular. En el contexto de la colaboración con Berger-Levrault, nuestro enfoque de migración debe trabajar con Java GWT como lenguaje de origen y TypeScript Angular como de destino.
  • Adaptabilidad del enfoque. Nuestro enfoque debe ser lo más adaptable posible a diferentes contextos. Por ejemplo, puede utilizarse con diferentes lenguajes de origen y destino y ser ajustado por un desarrollador para que se adapte a sus necesidades.
  • Mantener el aspecto visual. La migración debe mantener el aspecto visual de la aplicación de destino lo más parecido posible al original.
  • Conservación de la calidad del código. Nuestro enfoque debe producir un código que resulte familiar a los desarrolladores de la aplicación fuente. En la medida de lo posible, el código de destino debe mantener la misma estructura, identificadores y comentarios.
  • Automático. Una solución automática hace que el enfoque sea más accesible. Sería más fácil utilizar un enfoque automático en un sistema grande.

Implantaciones de importación

En parte debido a la complejidad de configurar una herramienta que se ejecute automáticamente y capture todas las pantallas de aplicaciones web tan grandes, nos basamos en el análisis estático para crear nuestro modelo. Los resultados obtenidos hasta ahora parecen indicar que será suficiente. La creación del modelo de la interfaz gráfica de usuario se divide en dos pasos: la extracción del modelo del código fuente y la extracción del modelo de la interfaz gráfica de usuario. Para el metamodelo del código fuente, utilizamos el metamodelo Java de Moose que viene con un extractor Java.

Para el segundo paso de la extracción, nuestra herramienta crea el modelo de GUI a partir del modelo de código fuente y de un análisis del archivo de configuración XML. Las entidades que queremos extraer son, en primer lugar, las páginas. Analizamos el archivo de configuración XML en el que se define la información sobre las páginas. A continuación, la herramienta busca las páginas de negocio y los widgets.

Una página de negocios es definida por una clase Java GWT que implementa la interfaz IPageMetier. Un Widget está definido por una clase que es una subclase de la clase GWT Widget. Entonces, tanto para las páginas de negocio como para los widgets, la herramienta busca dónde se llaman sus constructores y de ahí deduce y crea un enlace entre el widget y su contenedor.

Por último, para detectar los atributos que pertenecen a un widget, la herramienta detecta en qué variable Java se ha asignado el widget. Luego, busca los métodos invocados sobre esta variable. Si invoca un método "setX", crea un atributo.

Más ...

Scroll al inicio