Estado de automatización del proceso del desarrollo con GeneXus (2023)

 


Hace 4 años publiqué una artículo sobre Estado de automatización del proceso de desarrollo con Genexus.

Con la aparición de los modelos LLM y el ChatGPT (y los modelos similares) se hace posible automatizar algunas tareas del ciclo de desarrollo que antes era imposible hacer en forma automática. 

1 ) ANALISIS - Captura de Requerimientos

Herramientas:

Issue Tracking, Mind Mappers

Dificultad:

MEDIA

Observaciones:

En esta etapa, creo que la inteligencia artificial (IA) puede mejorar significativamente la etapa de análisis de requerimientos en el desarrollo de software de las siguientes maneras: 
 Automatización en la Captura de Requerimientos: Utilizando técnicas de procesamiento de lenguaje natural (NLP), la IA puede analizar y extraer requisitos clave automáticamente de documentos, correos electrónicos y notas. 
 Validación y Consistencia de Requerimientos: Los algoritmos de IA pueden revisar los requerimientos para detectar inconsistencias, ambigüedades o conflictos, asegurando claridad y factibilidad. 
 Predicción de Impacto del Cambio: La IA puede predecir cómo los cambios en los requerimientos afectarán el proyecto en términos de tiempo, costo y recursos, facilitando la toma de decisiones informada. 
 Generación Automática de Documentación: La IA ayuda a generar documentación de requerimientos de manera automática, asegurando que todos los detalles importantes estén bien documentados y sean fácilmente accesibles."

2 ) PLANFICACION - Pago de deuda tecnica

Herramientas:

Issue Tracking

Dificultad:

MEDIA

Observaciones:

Análisis y Priorización de Requerimientos: Mediante el análisis de grandes volúmenes de datos, la IA identifica tendencias y necesidades del usuario, ayudando a priorizar los requerimientos basándose en su impacto y viabilidad.

3 ) PLANIFICACION - Planificacion de un sprint

Herramientas:

Issue Tracking, GANTT, KANBAN,

Dificultad:

MEDIA

Observaciones:

En esta etapa crucial, donde se determina la urgencia e importancia de los requerimientos, las herramientas actuales facilitan significativamente el procesamiento del feedback de usuarios y stakeholders. Esto optimiza la planificación, permitiendo un análisis detallado de demoras o márgenes de maniobra en tareas de sprints anteriores. Además, se puede mejorar notablemente la asignación de tareas entre los miembros del equipo, gracias a un mejor entendimiento de su rendimiento y las cargas de trabajo manejadas en sprints previos.

4 ) DISEÑO - Base de datos

Herramientas:

Genexus

Dificultad:

BAJA

Observaciones:

El proceso de diseño de bases de datos relacionales se ha vuelto aún más sencillo, ya que ahora es posible describir un problema y obtener un diseño preliminar que se puede ajustar progresivamente. Sin embargo, es importante destacar que las aplicaciones modernas han evolucionado para requerir múltiples bases de datos o la incorporación de variados repositorios de datos, tales como REDIS, Storage Providers, entre otros, los cuales también necesitan ser reorganizados y mantenidos adecuadamente. Además, ha surgido la necesidad de manejar bases de datos con enfoques distintos, como las orientadas a grafos, vectores, clave-valor, etc., lo cual plantea el desafío de gestionar eficientemente la evolución del modelo de datos en todas sus variantes.

5 ) DISEÑO - UX

Herramientas:

Bocetos, Prototipos

Dificultad:

MEDIA

Observaciones:

La AI puede generar automáticamente wireframes a partir de descripciones escritas o datos de entrada. Por ejemplo, al proporcionar un breve resumen de las funcionalidades deseadas, la AI puede sugerir un diseño de wireframe que incorpore esos elementos. y las mejores practicas de UX/UI. La AI puede ofrecer múltiples versiones de un wireframe, permitiendo a los diseñadores explorar diversas opciones y iterar rápidamente. Esto puede ser particularmente útil en las primeras etapas de diseño, donde la experimentación y la flexibilidad son cruciales. 

También podría tener integración con herramientas de diseño como Figma o Sketch y luego pasar eso a GeneXus en forma rápida.

6 ) DISEÑO - PRESENTACION USUARIO /UI / DISEÑO GRÁFICO

Herramientas:

Sketch

Dificultad:

MEDIA

Observaciones:

La integración con herramientas como Figma y otras plataformas de diseño de interfaces no ha llevado a una automatización completa, sino más bien a una externalización significativa de una parte del proceso de diseño de UI. Esta especialización presenta una dinámica interesante, aunque aún no la he explorado lo suficiente como para formar una opinión concluyente sobre su eficacia. Lo que resulta evidente es que esta integración ofrece al desarrollador GeneXus una experiencia de trabajo mejorada, al tiempo que permite al diseñador utilizar herramientas con las que está más familiarizado. Sin embargo, el aspecto crucial a considerar es la eficacia a largo plazo de esta metodología: es fundamental evaluar si esta integración contribuye a la creación de aplicaciones de alta calidad que sean sostenibles y fáciles de mantener con el tiempo.

7 ) DISEÑO - ARQUITECTURA

Herramientas:

Notepad

Dificultad:

ALTA

Observaciones:

Automatizar el diseño de arquitectura de aplicaciones en GeneXus puede ser un desafío debido a la complejidad y variabilidad de las necesidades de las aplicaciones. Sin embargo, hay varias estrategias y tecnologías que pueden utilizarse para lograr cierto grado de automatización:

Uso de Plantillas de Arquitectura: Desarrollar y utilizar plantillas de arquitectura predefinidas para diferentes tipos de aplicaciones puede ser un primer paso hacia la automatización. Estas plantillas pueden ser configuradas para cubrir escenarios comunes, reduciendo el trabajo manual en la configuración inicial.

Automatización de Decisiones de Diseño Basadas en Reglas: Implementar un sistema de reglas que tome decisiones de diseño de arquitectura basadas en parámetros predefinidos. Por ejemplo, según el tamaño del proyecto, el número de usuarios esperados, o la naturaleza de los datos manejados, el sistema podría sugerir ciertas configuraciones de base de datos o enfoques de procesamiento.

Integración con Herramientas de CI/CD: Automatizar aspectos de la arquitectura relacionados con la integración y despliegue continuos, lo que puede ayudar a implementar prácticas de desarrollo más ágiles y adaptativas. Tambien se podria colaborar con el armado de la infraestructura con herramientas como Terraform / Chef / Puppet / Ansible / Jenkins, etc

Es importante destacar que, aunque la automatización puede facilitar y acelerar el proceso de diseño de arquitectura, siempre debe haber un nivel de supervisión y ajuste manual por parte de los desarrolladores para asegurar que la arquitectura final satisfaga todas las necesidades y requisitos específicos del proyecto.

8 ) DISEÑO - API

Herramientas:

Genexus Next

Dificultad:

MEDIA

Observaciones:

Actualmente, disponemos de herramientas capaces de automatizar la generación y el mantenimiento de APIs. Por ejemplo, GeneXus Next ya automatiza la generación de APIs para operaciones como Alta, Baja, consulta y modificación de entidades definidas. Sería ventajoso integrar todo este proceso con un objeto API único, en lugar de la gestión actual a través de Business Components (BC), aunque esto representa simplemente un detalle de implementación. Adicionalmente, sería beneficioso contar con herramientas que faciliten el análisis de impacto de las APIs, de manera similar a como se realiza con las bases de datos. Esto permitiría informar y gestionar de manera más eficiente los cambios realizados en las APIs.

9 ) DISEÑO - MODULARIZACION

Herramientas:

No existe

Dificultad:

ALTA

Observaciones:

Actualmente, la modularización se realiza manualmente. Sin embargo, con el surgimiento de bases de datos vectoriales, se ha facilitado considerablemente la agrupación de objetos según su proximidad semántica, una tarea que era mucho más compleja en el pasado. A pesar de estos avances, aún no hemos progresado lo suficiente para alcanzar una automatización completa en la tarea de modularización de una base de conocimientos (KB).

10 ) DISEÑO - PROGRAMACION

Herramientas:

GENEXUS

Dificultad:

ALTA

Observaciones:

Aunque todavía no es una realidad, parece casi seguro que en un futuro cercano dispondremos de asistentes virtuales especializados para apoyarnos en las tareas de programación. Estos asistentes serían similares a los actuales modelos de Large Language Model (LLM), que ya están facilitando la programación en otros lenguajes.

10bis ) DISEÑO - PRUEBAS / CASOS DE PRUEBA

Herramientas:

GXTest

Dificultad:

MEDIA

Observaciones:

La inteligencia artificial (AI) puede transformar significativamente el proceso de generación de casos de prueba en el desarrollo de software. Aquí hay algunas maneras :

Identificación Automática de Casos de Prueba: Mediante el análisis de especificaciones de software y documentación, la AI puede identificar automáticamente escenarios relevantes que requieren pruebas. Esto incluye la comprensión de los requisitos funcionales y no funcionales para generar casos de prueba pertinentes.

Generación de Datos de Prueba: La AI puede generar conjuntos de datos de prueba que simulan diferentes escenarios y condiciones de usuario. Esto es particularmente útil para pruebas de carga y rendimiento, donde se necesitan datos variados y a gran escala.

Pruebas de Regresión Inteligentes: La AI puede identificar qué partes del software han cambiado y generar automáticamente casos de prueba de regresión específicos para esas áreas, mejorando la eficiencia del proceso de prueba.

En resumen, la integración de la AI en la generación de casos de prueba no solo agiliza y mejora la cobertura de las pruebas, sino que también asegura que sean más relevantes y eficientes, alineándolas mejor con las necesidades reales y los cambios dinámicos en los proyectos de desarrollo de software.

11 ) DESARROLLO - PROGRAMACION

Herramientas:

Patterns

Dificultad:

BAJA

Observaciones:

Los patterns han mejorado bastante y se han podido generar mas cosas con los GeneXus Patterns. Quedan otras oportunidades de generar automáticamente API, test, etc

12 ) DESARROLLO - DOCUMENTACION

Herramientas:

No existe

Dificultad:

BAJA

Observaciones:

Con las herramientas de LLM se facilita la generación de documentación. Tal vez se pueda automatizar aún más, leyendo la KB y generando esquemas de los diferentes documentos que se necesitan. Documentos Técnicos para Desarrolladores, Modelo de Datos, Manuales de Usuario, etc.

13 ) DESARROLLO - BUILD e INTEGRACION

Herramientas:

Jenkins / aún da mucho trabajo automatizar

Dificultad:

MEDIA

Observaciones:

Hemos logrado un progreso significativo en la automatización de la generación de infraestructura para la Integración y Entrega Continuas (CI/CD). Sin embargo, aún hay mucho por hacer en cuanto a la automatización de la personalización de ambientes y la promoción de un ambiente a otro en el ciclo de aceptación. Es crucial formalizar más las tareas de "Build All" (que ya está automatizada), "Package All" (que está semi-automatizada) y "Deploy All" (que aún no está automatizada). Además, una vez que una aplicación está desplegada, se necesitan mecanismos que permitan habilitar su uso en un momento distinto al del despliegue. Este es un área crítica que requiere atención y desarrollo adicionales para mejorar la eficiencia y eficacia del proceso de CI/CD.

14 ) DESARROLLO - TRAZABILIDAD REQUERIMIENTOS / OBJETOS

Herramientas:

Issue Tracking

Dificultad:

ALTA

Observaciones:

En el área de integración entre sistemas de seguimiento de incidencias y GeneXus o GeneXus Server, se ha progresado muy poco, aunque existen algunos intentos de conexión entre ambos. Resulta esencial desarrollar una funcionalidad que permita identificar qué ticket o requerimiento específico ha originado los cambios. Esto facilitaría un seguimiento más efectivo y una mejor gestión de las modificaciones en los proyectos.

15 ) DESARROLLO - MANEJO DE SEGURIDAD

Herramientas:

Security Scanner

Dificultad:

ALTA

Observaciones:

La seguridad en las aplicaciones se ha vuelto cada vez más crítica y, al mismo tiempo, más compleja de gestionar. Esta situación se ve agravada por el creciente tamaño y número de aplicaciones en uso. Herramientas como el Security Scanner son eficaces para detectar ciertos problemas de seguridad. Por otro lado, GAM aborda eficientemente los desafíos relacionados con la autenticación y autorización. No obstante, aún queda un camino considerable por recorrer en la automatización de estos procesos de seguridad, lo que es fundamental para manejar de manera eficiente la creciente complejidad y escala de las aplicaciones modernas.

16 ) DESARROLLO - PACK DE LA SOLUCION

Herramientas:

Se puede automatizar aun da mucho trabajo

Dificultad:

ALTA

Observaciones:

Seria necesario poder tener mas control de lo que las Deployment Units llevan a cada instalación. 
Por limitación de como son las referencias en Genexus, en varias oportunidades se lleva de mas o de menos al generar el zip/war de una Deployment Unit. 
Se necesitaría también tener un "Package All" (equivalente al "Build all") para poder recorrer todas las Deployment Units y empaquete los diferentes componentes a instalar. 

17 ) PRUEBAS/TEST - CHEQUEOS UNITARIO / REGRESION

Herramientas:

GXTest - Esta mejorando mucho. Falta trabajar en generacion de datos para pruebas

Dificultad:

BAJA

Observaciones:

Se adelanto muchisimo en la generacion de pruebas unitarias mas automáticas. Se pueden establecer datos a usar en los test y generar test automaticos basicos de los objetos, chequeando contra los resultados esperados.

18 ) PRUEBAS/TEST - CHEQUEO PERFORMANCE / CARGA

Herramientas:

Se puede automatizar, da mucho trabajo aun

Dificultad:

MEDIA

Observaciones:

No es un tema que domine, pero supongo que con inteligencia artificial podremos generar estos artefactos para probar la carga de nuestro sistema de forma mucho mas fácil que hoy.

19 ) PRUEBAS/TEST - TESTING

Herramientas:

GXTest

Dificultad:

ALTA

Observaciones:

El testeo de la aplicación, sigue siendo una tarea manual y creo que va a seguir siendo lo mismo. Comprobar que los requerimientos nuevos se cumplen, va a tener que ser realizado por humanos en el futuro proximo.

20 ) PRUEBAS/TEST - ANALISIS DE IMPACTO DE LA API DE LA KB

Herramientas:

Se puede automatizar pero da mucho trabajo

Dificultad:

MEDIA

Observaciones:

Se avanzo bastante en el diseño y manejo de API. Hay herramientas automatizadas de monitoreo, que detectan diferencias. Seria bueno tener alguna integrada y poder generarle automaticamente las pruebas.

21 ) PRUEBAS/TEST - COMPARACION DE NAVEGACIONES

Herramientas:

Comparador de Navegaciones (esta desactualizado)

Dificultad:

ALTA

Observaciones:

En lo que respecta a esta herramienta, no solo no hemos visto avances, sino que también se ha observado un estancamiento en su desarrollo. Sin embargo, este problema es menos significativo en las versiones más recientes de GeneXus, ya que los cambios drásticos que solían ser comunes en versiones anteriores ya no ocurren con tanta frecuencia. A pesar de esto, sigue siendo un aspecto que requiere atención y trabajo.


Con los avances tecnológicos actuales, sería factible desarrollar un asistente inteligente que analice la base de conocimientos (KB) en GeneXus. Este asistente podría ayudarnos a identificar posibles problemas de compatibilidad que podrían surgir al instalar nuevas versiones de GeneXus. Este análisis podría basarse en un estudio detallado de las notas de lanzamiento (Release Notes) de estas nuevas versiones, proporcionando así una valiosa orientación para la transición y actualización.

22 ) LIBERACION/INSTALACION - MANEJO DE VERSIONES

Herramientas:

No existe

Dificultad:

ALTA

Observaciones:

Deberíamos poder modelar esta realidad en aplicaciones GeneXus, donde le podamos decir cuales son los diferentes ambientes donde la aplicación va a ejecutar y tener parametrizado las diferentes configuraciones. 
 Luego de empaquetar una aplicación (en zip, war/ear, apk, imagen docker, etc), se debe poder personalizar la configuración de la aplicación para el ambiente. Esto incluye strings de conexión a bases de datos, variables de entorno, configuraciones de seguridad, location desde donde debe consumir servicios, entre otros.
Asegurarse de que todos los servicios y recursos externos a los que la aplicación necesita conectarse estén accesibles y correctamente configurados.

23 ) LIBERACION/INSTALACION - DEPLOY

Herramientas:

No existe

Dificultad:

MEDIA

Observaciones:

Esta muy relacionado con el paso anterior. 

24 ) LIBERACION/INSTALACION - REORGANIZACION DE BASE DE DATOS

Herramientas:

Proceso semi automatizado

Dificultad:

MEDIA

Observaciones:

Sigue igual, un proceso semi automatizado.

Para bases de datos de gran tamaño, sería extremadamente útil disponer de un analizador de reorganizaciones. Este analizador debería ser capaz de dividir una reorganización en dos partes distintas:

Script BackCompatible: Este script se ejecutaría ANTES de instalar la nueva versión de la base de datos y sería compatible con la versión actual. La ejecución de este script podría realizarse días antes de la actualización para minimizar el tiempo de inactividad de la base de datos. Este script incluiría tareas como la creación de nuevos índices, la adición de atributos nulables o con valores por defecto, y la creación de nuevas tablas.

Script de Ejecución Durante la Instalación: Este script incluiría cambios que no son compatibles hacia atrás y que, por lo tanto, deben realizarse durante la instalación de la nueva versión. Esto podría abarcar la modificación de tipos de datos o longitudes de campos, la eliminación de objetos obsoletos, el renombramiento de objetos, entre otros cambios críticos.

El objetivo de este enfoque es facilitar una transición suave y eficiente durante las actualizaciones de bases de datos, minimizando los riesgos y el impacto en la disponibilidad del sistema.

El manejo de modulos, podrían manejar diferentes schemas para cada modulo y poder reorganizar con diferentes schemas. 

25 ) LIBERACION/INSTALACION - MANEJO DE METADATA (GAM, WORKFLOW, SISTEMA)

Herramientas:

Las herramientas que hay son difíciles de automatizar. 

Dificultad:

ALTA

Observaciones:

La gestión del impacto de la metadata en las aplicaciones modernas aún no está adecuadamente resuelta, a pesar de ser un aspecto crítico para el funcionamiento óptimo de los sistemas. Es esencial poder transferir la metadata, como la de GAM, Workflow y Reportes con Layout Dinámico, de un ambiente a otro de manera eficiente. Además, se vuelve imperativo poder versionar estos cambios y realizar un seguimiento detallado de los mismos. Igualmente importante es la capacidad de evaluar el impacto que dichos cambios pueden tener en el sistema.


En el contexto actual de desarrollo de software, la metadata ha adquirido una importancia considerable. Actúa como el esqueleto de información que define cómo los datos son procesados, almacenados y utilizados dentro de una aplicación. La metadata no solo mejora la comprensión y la gestión de los datos, sino que también facilita la interoperabilidad entre diferentes sistemas y módulos. En sistemas complejos, una gestión eficaz de la metadata puede significar la diferencia entre un ecosistema de software ágil y adaptable y uno que es rígido y propenso a errores. Por lo tanto, desarrollar estrategias robustas para la gestión de metadata, incluyendo su versionado, seguimiento y evaluación de impacto, es fundamental para mantener la integridad, la eficiencia y la escalabilidad de las aplicaciones modernas.

26 ) MANTENIMIENTO/MONITOREO - ANALISIS DE ERRORES / PROCESO DE LOGS

Herramientas:

No existe

Dificultad:

MEDIA

Observaciones:

En el ámbito del análisis de errores, la inteligencia artificial (IA) puede simplificar considerablemente el proceso, facilitando la detección de los objetos específicos que requieren cambios para prevenir la recurrencia de errores. Con el uso de IA, al identificar un error y analizar el call stack correspondiente, se puede rastrear eficazmente hasta la fuente del problema. Esto incluye no solo el objeto donde se originó el error, sino también aquellos objetos que contribuyen a su aparición. De esta manera, la IA puede proporcionar recomendaciones claras y detalladas para soluciones efectivas, las cuales serían comprensibles y aplicables por parte de los desarrolladores de GeneXus. Este enfoque no solo mejora la eficiencia en la resolución de problemas, sino que también ayuda a identificar y abordar las causas fundamentales, mejorando así la calidad y estabilidad del software desarrollado.

27 ) MANTENIMIENTO/MONITOREO - PERFORMANCE-ANALISIS

Herramientas:

Registro de incidentes / Herramienta de monitoreo

Dificultad:

BAJA

Observaciones:

Se ha logrado un progreso significativo en la observabilidad de las aplicaciones, lo que facilita la detección temprana de demoras y problemas. Esta mejora es particularmente valiosa en aplicaciones de gran escala, donde se hace imprescindible automatizar el proceso de monitoreo. La automatización permite identificar y resolver problemas de rendimiento antes de que los usuarios los perciban y reporten, mejorando así la experiencia del usuario y la eficiencia operativa del sistema.

28 ) MANTENIMIENTO/MONITOREO - HELP DESK

Herramientas:

Registro de incidentes

Dificultad:

MEDIA

Observaciones:

En la mesa de ayuda deberia ser mas facil el registro de incidentes y se puede tener un bot que solucione los casos repetitivos o que ya han sucedido

29 ) TAREAS DE APOYO - INSTALACION DE GENEXUS

Herramientas:

No existe

Dificultad:

ALTA

Observaciones:

No tenemos nada automatizado, ni automatizable en la instalación de GeneXus. Se mejoro con la instalacion de modulos, pero aun no es posible hacer una instalación y replicarla en un grupo de desarrollo de forma fácil. La instalación de una extensión nueva (o una versión de un pattern) implica un trabajo a realizar en varias maquinas que no ha podido ser automatizado.

30 ) TAREAS DE APOYO - AMBIENTE DE DESARROLLO / tomcat/ iis/ etc

Herramientas:

No existe

Dificultad:

ALTA

Observaciones:

La automatización de la instalación de los pre-requisitos para el ambiente de desarrollo es factible, aunque implica un esfuerzo considerable. Sería muy beneficioso contar con un conjunto de plantillas de instalación básica, las cuales podrían descargarse para simplificar y agilizar este proceso. Estas plantillas facilitarían significativamente la configuración inicial, reduciendo la carga de trabajo y mejorando la eficiencia en la preparación de entornos de desarrollo.

31 ) TAREAS DE APOYO - INSTALACION MANTENIMIENTO GXSERVER

Herramientas:

Dificultad:  ALTA

Observaciones:

Lo mismo que para GeneXus, no ha avanzado demasiado. Tal vez se soluciones con las proximas versiones.

32 ) TAREAS DE APOYO - CAPACITACION

Herramientas:

Dificultad: ALTA

Observaciones:

La generacion de manuales, videos de como usar la aplicacion, es una tarea que lleva mucho tiempo. Si bien hay algunas herramientas que ayudan en el proceso aun son tareas poco automatizadas.
Además le vamos a agregar asistentes a las aplicaciones, que la van a hacer mas fáciles de usar, por lo que los usuarios van a necesitar menos capacitacion para usar los sistemas. 

* La imagen fue generada con Bing
* El texto fue corregido y mejorado con ChatGPT. 

Comentarios

Entradas más populares de este blog

Aplicación monolítica o distribuida?

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.