Ir al contenido
Nicolás Amorosi

Universidad Adventista del Plata

Sistemas heredados

Dos sistemas, dos tipos de herencia. Uno es una aplicación de escritorio en Progress 4GL que paga a los proveedores de la universidad. El otro, una plataforma web moderna escrita por otros desarrolladores. Desde septiembre de 2026, los dos son mi responsabilidad.

El problema

Proveedores es el sistema de cuentas a pagar de dos empresas: proveedores, facturas, pagos con retenciones, libro IVA compras y los archivos que se envían al fisco y a los bancos. Es un cliente Windows en Progress 4GL de unas 53.000 líneas en 77 fuentes, cuya historia vive en viejos archivos de versionado RCS.

VID gestiona las convocatorias de protocolos de investigación de la universidad: presentación, evaluación metodológica y científica, presupuesto y votación. La construyeron otros desarrolladores; la tomé como responsable técnico.

Restricciones

  • Nada corre contra producción: el análisis trabaja sobre código fuente y definiciones de esquema.
  • El nuevo sistema de cuentas a pagar apunta a PostgreSQL 18, con un front end en React y Vite.
  • De junio a noviembre, VID solo admite correcciones de bugs.

Qué construí

Herramientas de arqueología de código en Python —182 líneas en total—: un extractor de archivos de historia RCS ,v, un parser de definiciones de esquema .df de Progress y un cruce de qué programa toca qué tabla. Entre las tres procesaron 1.789 archivos y 5.774 revisiones.

Un plan de migración en tres pasos: cargar las tablas legacy uno a uno en un esquema de staging, transformar con SQL y conciliar los totales contra el sistema viejo.

Un prototipo en React y Vite guiado por configuración —pantallas genéricas de listado, reporte y proceso generadas desde config— que se mostró al equipo de contaduría con datos de prueba dos días después de arrancar.

Para VID: un entorno local reproducible, documentación del código heredado, una revisión de seguridad y una matriz que rastrea 20 bugs reportados por usuarios hasta su causa raíz.

Lo difícil

Leer

Historia RCS

1.789 archivos, 5.774 revisiones

Esquemas .df

Tablas y campos reales

Fuentes 4GL

77 programas, ~53 mil líneas

Mapa de tablas, programas e historia

Mover

  1. Staging

    Tablas legacy cargadas uno a uno

  2. Transformar

    SQL plano

  3. Conciliar

    Totales contrastados con el sistema viejo

PostgreSQL 18

De fuentes opacas a un mapa, y de ahí a una base nueva, sin tocar producción en ningún momento.

Leer 4GL sin ejecutarlo

Con producción fuera de alcance, las únicas fuentes confiables eran el código y el esquema. Los .df dieron las tablas y campos reales, el cruce mostró qué programas los leen y escriben, y el historial de revisiones mostró qué cambió y cuándo. Setenta y siete fuentes opacas se convirtieron en un mapa.

Primero las garantías

La reescritura parte de reglas que hace cumplir la propia base de datos: numeración de comprobantes correcta aun con escrituras concurrentes, montos guardados como decimales exactos y asientos que tienen que balancear antes de poder guardarse.

Causas, no síntomas

Veinte problemas reportados por usuarios de VID —de husos horarios, identificación de usuarios y envío de emails— rastreados cada uno hasta el código responsable y agrupados por causa raíz, para que un solo arreglo cierre varios reportes.

Resultado

  • Proveedores: análisis completo y un prototipo funcionando frente a sus usuarios en la primera semana.
  • VID: 20 problemas rastreados hasta su causa, código documentado y un entorno local que cualquiera del equipo puede reproducir.

El código pertenece al cliente y es privado. Las figuras son ilustraciones con datos de ejemplo; en esta página no aparece ningún registro real.