Análisis bottom-up en Aplicaciones COBOL y técnicas de asistencia por IA 

Una de las tareas más frecuentes en aplicaciones creadas en COBOL en entornos HOST, suelen ser aquellas que van destinadas a mantenimiento, mejoras funcionales, evolutivos o perfectivos, es decir todo aquello que no es un nuevo desarrollo desde el inicio sino que se trabajan sobre aplicaciones ya existentes.

Una de las dificultades de estas tareas es que a veces no existe “nadie” que conozca la aplicación en detalle y se necesita de un análisis previo en profundidad antes de saber qué hacer.

Esto es relativamente frecuente ya que existen muchas aplicaciones ejecutándose en estos sistemas desde hace décadas y no queda nadie en la compañía de los que crearon la aplicación.  

También nos encontramos casos de aplicaciones que se han ido desarrollando sin metodología y han ido ganando en complejidad.

En la mayoría de estos casos no queda otra que realizar un análisis para ir desgranando y entendiendo que tenemos entre manos para dar la mejor solución.

En este tipo de tarea creo que hay dos tipos de actividades imprescindibles para el análisis.

  • Enfoque de análisis bottom-up
  • Refactorización

El análisis de abajo a arriba para ir comprendiendo las piezas primero y luego ver cómo encajan en todo el puzzle es la mejor forma de encarar estas situaciones.

Una Refactorización progresiva del código conforme se va entendiendo es necesaria para facilitar el encaje global.

Esto se puede aplicar en mayor o menor alcance porque igual hay cambios que afectan a un solo programa como cambios o mejoras que afectan a toda la aplicación. Pero siempre se deberían aplicar ambas actividades.

Dentro de esta metodología bottom-up es indispensable el Análisis del Código Fuente.

Se puede hacer diferentes enfoques de este análisis pero podemos plantear uno con estos puntos:

Estudiar la estructura del código: El código COBOL suele ser altamente estructurado y utiliza divisiones y secciones para organizar la lógica del programa. Al estudiar estas divisiones y secciones, se puede obtener una visión general de cómo se relacionan las diferentes partes del código y cómo fluye la ejecución del programa.

Identificar los puntos de entrada: Un programa COBOL puede tener múltiples puntos de entrada, como programas principales, subrutinas o funciones. Identificar estos puntos de entrada es esencial para comprender dónde comienza la ejecución y cómo se relacionan diferentes módulos o programas entre sí.

Analizar la lógica de negocio: Durante el análisis del código fuente, es fundamental comprender esta lógica y cómo se implementa en COBOL. Esto implica revisar las estructuras de datos utilizadas, como por ejemplo: registros de clientes, cuentas y transacciones, y entender cómo se manipulan y procesan dentro del código.

Investigar llamadas a programas externos: Durante el análisis del código fuente, es crucial identificar las llamadas a programas externos y comprender cómo se realizan estas interacciones para detectar posibles problemas de integración.

Pues bien en estas actividades en concreto la IA nos puede ayudar ya que se le puede pasar información del código fuente y nos puede dar información sobre estos puntos.

Si bien aquí el principal problema es el de la privacidad de los datos ya que usarlo en herramientas no propias puede vulnerar la confidencialidad del software al no ser un tema meramente técnico o de sintaxis del lenguaje.

Normalmente el uso de la IA para desarrollo de software está más implantado en el mundo orientado al desarrollo Web con herramientas como COPILOT, no debería de dejar de utilizarse para entornos mas de negocio ya que quien primero lo adopte ganará sin duda una ventaja competitiva.

La técnica para esta asistencia por IA es la capacidad de leer código y explicar en lenguaje natural su funcionamiento. Con los prompt adecuados podemos acelerar todo nuestro proceso de análisis bottom-up.

Una de las mejores capacidades de la IA enfocada al mundo de la programación es la Refactorización de código, actividad fundamental que ya hemos comentado para estas tareas.