Saltar al contenido

Ingeniería de software

Cuándo conviene modernizar un software legacy

Que un programa sea antiguo no es motivo suficiente para sustituirlo: muchos sistemas veteranos funcionan bien y concentran años de conocimiento del negocio. La pregunta útil es otra: cuánto te cuesta seguir con él, qué riesgos asumes y si existe una forma de modernizarlo por partes sin jugarte la operación en un solo cambio.

Publicado
Revisado
Lectura
5 min
Por
colectivedata

Qué entendemos por software legacy

Llamamos legacy a un sistema que sigue siendo necesario para el negocio pero que se ha vuelto difícil de cambiar, mantener o proteger. No es una cuestión de edad: una aplicación de hace cinco años puede ser legacy si nadie entiende su código, y una de hace veinte puede no serlo si está bien documentada y su plataforma sigue soportada.

Algunos ejemplos típicos: una aplicación de escritorio que solo funciona en una versión antigua de Windows; un programa de gestión hecho por un desarrollador que ya no está; una base de datos de Access compartida en red; un sistema web construido sobre un framework abandonado; o un ERP muy personalizado que no se puede actualizar sin romper las adaptaciones.

El coste de oportunidad: lo que cuesta no cambiar

El coste de mantener un sistema antiguo rara vez aparece como una partida en la contabilidad. Se reparte en horas de trabajo manual, proyectos que no se hacen y riesgos que nadie ha valorado. Para decidir con criterio conviene hacerlo visible.

Costes visibles y ocultos de un sistema legacy
Tipo de costeCómo se manifiestaPregunta para estimarlo
Cambios lentos o imposiblesCada modificación tarda semanas o se descarta porque «el programa no lo permite»¿Qué mejoras se han aplazado en el último año por culpa del sistema?
Trabajo manual alrededorExportaciones a hoja de cálculo, datos que se teclean dos veces, informes montados a mano¿Cuántas horas a la semana se dedican a rodear las limitaciones?
Dependencia de personasSolo una persona, interna o externa, sabe tocarlo¿Qué pasaría si esa persona no estuviera disponible un mes?
Integraciones bloqueadasNo se puede conectar con la tienda online, el nuevo CRM o un cliente que pide intercambio electrónico¿Qué oportunidades comerciales exigen integraciones que hoy no son viables?
Infraestructura heredadaServidores o puestos que no se pueden actualizar porque el programa dejaría de funcionar¿Qué equipos se mantienen solo por este sistema?

No hace falta precisión contable. Basta con una estimación razonable para compararla con el coste de modernizar y ver si la conversación tiene sentido.

Seguridad: el riesgo que más se subestima

Un sistema que depende de un sistema operativo, una base de datos o unas librerías sin soporte deja de recibir parches de seguridad. Las vulnerabilidades que se descubren a partir de entonces quedan abiertas de forma indefinida. OWASP incluye este problema entre sus riesgos principales para aplicaciones web bajo la categoría de componentes vulnerables y desactualizados, y recomienda mantener un inventario de versiones y vigilar los componentes que ya no reciben mantenimiento.

  • Inventaría de qué depende el sistema: versión del sistema operativo, motor de base de datos, lenguaje o entorno de ejecución, librerías y componentes de terceros.
  • Comprueba cuáles han llegado al fin de su soporte oficial y desde cuándo.
  • Revisa cómo se autentican los usuarios: contraseñas compartidas, usuarios genéricos o ausencia de registros de acceso son señales de riesgo.
  • Identifica qué datos sensibles contiene y quién puede llegar a ellos, incluidas copias en carpetas compartidas.

Las opciones: de retocar a sustituir

Modernizar no siempre significa reescribir. Hay un abanico de opciones con riesgos y costes muy distintos, y a menudo la respuesta combina varias según la parte del sistema.

Estrategias de modernización y cuándo encajan
EstrategiaQué implicaEncaja cuando…
Mantener y protegerActualizar lo posible, aislar y documentarEl sistema funciona, cambia poco y el riesgo es asumible a corto plazo
ReplataformarLlevar la misma aplicación a una infraestructura o versión soportada con cambios mínimosEl código es razonable pero la plataforma está obsoleta
Envolver con una APIExponer funciones del sistema antiguo para que otros programas las usenHay que integrar con sistemas nuevos sin tocar aún el núcleo
Sustitución gradualConstruir módulos nuevos que van asumiendo funciones del antiguoEl sistema es grande y crítico y no se puede parar
Sustitución completaReemplazar por un desarrollo nuevo o un producto estándarEl sistema es pequeño, o el proceso ha cambiado tanto que el antiguo ya no representa la realidad

Migración gradual: cómo cambiar sin apagar

Para sistemas críticos, la sustitución por partes suele ser más segura que un cambio total en una fecha. La idea es que el sistema nuevo vaya asumiendo funciones una a una, mientras el antiguo sigue haciendo el resto, hasta que deja de ser necesario.

  1. Mapea las funciones del sistema actual y quién usa cada una. Muchas veces aparecen funciones que nadie usa y que no hace falta migrar.
  2. Elige una primera función acotada, con valor visible y pocas dependencias, por ejemplo la consulta de pedidos por parte de los comerciales.
  3. Decide qué sistema es el propietario de cada dato durante la convivencia y cómo se sincronizan, para evitar dos versiones de la verdad.
  4. Construye la función nueva, ponla en producción para un grupo reducido y compara resultados con el sistema antiguo.
  5. Cuando funcione, retira esa función del sistema antiguo y pasa a la siguiente.
  6. Planifica el apagado final: migración de los datos históricos que se necesiten, archivo del resto y baja de la infraestructura.

Un ejemplo ilustrativo: una distribuidora con un programa de gestión antiguo podría empezar por un portal web de pedidos para clientes que lee y escribe en la base de datos existente a través de una capa de integración. Después, mover la gestión de tarifas; más adelante, el almacén. El núcleo contable podría quedarse donde está o pasar a un producto estándar al final.

Riesgos de modernizar (y cómo reducirlos)

  • Perder reglas de negocio implícitas: el código antiguo hace cosas que nadie recuerda. Se reduce extrayendo reglas con casos reales antes de reescribir y comparando resultados.
  • Datos de mala calidad: años de registros con criterios cambiantes. Se reduce con limpieza previa y cargas de prueba repetibles.
  • Convivencia que se eterniza: dos sistemas en paralelo durante años duplican el coste. Se reduce fijando fechas de retirada por función.
  • Rechazo de los usuarios: quienes dominan el sistema antiguo pierden eficiencia al principio. Se reduce implicándolos en el diseño y formando con sus propios casos.
  • Querer mejorarlo todo a la vez: mezclar modernización técnica con un rediseño completo del proceso multiplica el riesgo. Conviene separar ambas decisiones o abordarlas por fases.

Criterios para decidir

Modernizar tiene sentido cuando el coste de seguir, sumado al riesgo, supera razonablemente al de cambiar. Estas preguntas ayudan a ordenarlo:

  1. ¿Alguno de sus componentes ha perdido el soporte de seguridad, o lo perderá pronto?
  2. ¿Depende de una sola persona para mantenerse?
  3. ¿Está bloqueando integraciones o mejoras que el negocio necesita?
  4. ¿Se puede dividir en partes que se migren por separado?
  5. ¿Están documentadas, o se pueden documentar, las reglas que aplica?

Si varias respuestas apuntan a cambiar, el siguiente paso no es presupuestar una reescritura, sino hacer un diagnóstico: inventario técnico, mapa de funciones y propuesta de fases. Con esa información podemos estudiar contigo qué conviene mantener, qué envolver y qué sustituir primero.

Fuentes

Contenido informativo elaborado por colectivedata. No sustituye un análisis específico de tu caso.