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.
| Tipo de coste | Cómo se manifiesta | Pregunta para estimarlo |
|---|---|---|
| Cambios lentos o imposibles | Cada 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 alrededor | Exportaciones 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 personas | Solo una persona, interna o externa, sabe tocarlo | ¿Qué pasaría si esa persona no estuviera disponible un mes? |
| Integraciones bloqueadas | No 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 heredada | Servidores 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.
| Estrategia | Qué implica | Encaja cuando… |
|---|---|---|
| Mantener y proteger | Actualizar lo posible, aislar y documentar | El sistema funciona, cambia poco y el riesgo es asumible a corto plazo |
| Replataformar | Llevar la misma aplicación a una infraestructura o versión soportada con cambios mínimos | El código es razonable pero la plataforma está obsoleta |
| Envolver con una API | Exponer funciones del sistema antiguo para que otros programas las usen | Hay que integrar con sistemas nuevos sin tocar aún el núcleo |
| Sustitución gradual | Construir módulos nuevos que van asumiendo funciones del antiguo | El sistema es grande y crítico y no se puede parar |
| Sustitución completa | Reemplazar por un desarrollo nuevo o un producto estándar | El 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.
- 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.
- Elige una primera función acotada, con valor visible y pocas dependencias, por ejemplo la consulta de pedidos por parte de los comerciales.
- Decide qué sistema es el propietario de cada dato durante la convivencia y cómo se sincronizan, para evitar dos versiones de la verdad.
- Construye la función nueva, ponla en producción para un grupo reducido y compara resultados con el sistema antiguo.
- Cuando funcione, retira esa función del sistema antiguo y pasa a la siguiente.
- 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:
- ¿Alguno de sus componentes ha perdido el soporte de seguridad, o lo perderá pronto?
- ¿Depende de una sola persona para mantenerse?
- ¿Está bloqueando integraciones o mejoras que el negocio necesita?
- ¿Se puede dividir en partes que se migren por separado?
- ¿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
- A06:2021 – Vulnerable and Outdated Components — OWASP Top 10
Contenido informativo elaborado por colectivedata. No sustituye un análisis específico de tu caso.
Relacionado
Más sobre ingeniería de software
Todo el conocimiento- Arquitectura híbrida para fábricas y ubicaciones con conectividad limitadaEn una planta, una cantera o una estación remota, la conexión a internet se corta, se satura o simplemente no llega.
- Arquitectura multiempresa y conexión segura entre tenantsSeparar bien los datos de cada organización es solo la mitad del trabajo.
- Cómo diseñar trazabilidad de piezas por número de serieLa trazabilidad por número de serie consiste en poder contar la historia completa de cada pieza: de qué está hecha, por dónde pasó, quién intervino y qué se midió.
¿Tienes un proyecto parecido? Cuéntanos qué necesitas.