Alejandría

Busca en Alejandría

Técnicas

GenAI para código legado

Explora lógica y dependencias de sistemas heredados con IA.

01

En pocas palabras

Utilizar IA generativa para explorar sistemas heredados, resumir lógica, localizar reglas del negocio y relacionar dependencias.

Qué problema resuelve

Incorporación lenta de desarrolladores y comprensión difícil de sistemas grandes o poco documentados.

Cuándo utilizarlo

Mantenimiento, investigación de incidentes y preparación de modernizaciones. Ejemplo: rastrear cómo se calcula una comisión, identificar sus llamadas y proponer pruebas que documenten el comportamiento.

02

De la idea a la práctica

Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.

Cómo funciona

La IA resume fragmentos relevantes y conecta funciones, llamadas y reglas del negocio. La recuperación por búsqueda y, en escenarios grandes, grafos de relaciones ayudan a seleccionar el código que necesita el análisis.

Ejemplo: comprender una regla de negocio

Una solicitud útil al asistente podría ser:

Rastrea el cálculo de comisión desde el endpoint hasta la persistencia.
Identifica condiciones, dependencias y efectos secundarios.
Cita archivos y funciones para cada conclusión.
Señala lo que no puedes confirmar y sugiere pruebas de caracterización.

Combinar análisis estático e IA

Técnica Aporta
Parsers y AST (tree-sitter, compiladores) Estructura exacta: funciones, llamadas, tipos
Grafo de dependencias y llamadas Qué invoca a qué, incluidos programas batch y procedimientos almacenados
Linaje de datos Qué programas leen y escriben cada tabla o archivo
Búsqueda (texto y semántica) Encontrar dónde se trata un concepto de negocio
LLM Explicar en lenguaje natural, resumir, proponer hipótesis

El grafo da los hechos verificables; el LLM los interpreta. Pedir al modelo que explique un sistema de un millón de líneas sin esa estructura produce resúmenes plausibles pero incompletos.

Flujo de comprensión

  1. Inventario: lenguajes (COBOL, PL/SQL, RPG, Java antiguo), programas, jobs, tablas, interfaces.
  2. Grafo: dependencias entre programas y datos.
  3. Explicación por capas: de cada módulo (qué hace), de cada flujo (cómo se procesa un pago), de cada regla (cómo se calcula la mora).
  4. Catálogo de reglas de negocio con referencia a archivo y líneas.
  5. Validación con expertos y con ejecución: pruebas de caracterización que fijan el comportamiento observado.
  6. Uso: documentación, decisión de modernización, diseño del sistema nuevo (strangler fig).

Ejemplo de entrada en el catálogo de reglas

## R-017 Cálculo de intereses de mora

- Origen: `COBMORA.cbl`, párrafo 3200-CALC-MORA (líneas 410–468)
- Regla: interés diario = saldo vencido × tasa de mora anual / 360, desde el día siguiente al vencimiento.
- Excepciones observadas: no se cobra mora si el atraso es ≤ 3 días (constante WS-GRACIA).
- Dudas: la tasa se lee de TBL-TASAS por producto; falta confirmar si aplica tope legal.
- Verificación: prueba de caracterización `MoraCaracterizacionTest` con 12 casos.
- Validado por: Operaciones de cartera, 2026-10-10.

Riesgos y controles

Riesgo Control
Explicaciones inventadas o incompletas Exigir citas a archivo y línea; validar con expertos y pruebas
Comportamiento real distinto del código leído (configuración, datos, JCL) Observar ejecuciones y datos reales
Código y datos sensibles enviados a terceros Modelos con acuerdos adecuados o ejecución en infraestructura propia
Reproducir defectos históricos en el sistema nuevo Distinguir «lo que hace» de «lo que debería hacer» con negocio

Entregables útiles para la gerencia

Mapa del sistema con módulos críticos y su riesgo, catálogo de reglas validado, estimación de esfuerzo por módulo basada en tamaño y acoplamiento, y una propuesta de primeras piezas a modernizar. Para la ejecución de la migración, ver AI for code migrations.

Criterios de implementación

Comprueba las conclusiones contra código y ejecución. Antes de cambiar una regla, captura el comportamiento actual con pruebas de caracterización. Distingue la intención documentada del comportamiento observado y controla qué código puede salir del entorno autorizado.

Continúa en las fuentes

Documentación oficial para verificar detalles y explorar más.