Soy bastante parcial a resumen de Wikipedia :
Un sistema heredado es un método antiguo, una tecnología, un sistema informático o un programa de aplicación que se sigue utilizando, generalmente porque aún funciona para las necesidades de los usuarios, aunque ahora se cuenta con una tecnología más reciente o métodos más eficientes para realizar una tarea. disponible.
Gran parte de lo que otras personas están describiendo en sus respuestas son razones por las que el código se convierte en "legado". Pero la pregunta esencial en sí misma es esta:
Pero todavía se usa en los sistemas de producción, ¿es realmente un legado? ¿Y qué lo hace legado?
El hecho de que todavía se use en producción es precisamente lo que lo hace legado . Si el código no funciona correctamente, o ya no se usa en producción, entonces ese código está "roto" o "retirado", respectivamente. Legacy significa que todavía está en uso y funciona bien, pero incorpora diseños o técnicas que ya no son de uso común.
Cualquier código o sistema que (a) le gustaría actualizar / actualizar, pero no puede, o (b) todavía está en medio de la actualización, es un sistema heredado. Esto no significa refactorización o limpieza general del código, significa cambios significativos en el diseño, posiblemente utilizando un nuevo marco o incluso una nueva plataforma.
Hay varias razones por las que los sistemas o el código podrían hacerse heredados:
-
Falta de mantenimiento regular o pudrición del software . Claramente, si la aplicación no se mantiene con regularidad, no seguirá el ritmo de los cambios importantes en el mundo del software. Esto podría deberse a un simple abandono o podría ser una elección deliberada basada en prioridades comerciales o restricciones presupuestarias.
-
Falta de pruebas. Otra respuesta hace referencia a la afirmación hiperbólica de un autor popular de cualquier código no cubierto por Pruebas siendo código legado. Esto realmente no es una definición precisa pero es una posible causa raíz; sin buenas pruebas (automatizadas o manuales), los desarrolladores se vuelven tímidos y temen hacer cambios importantes porque se preocupan por romper algo, liderando así la "putrefacción del software".
-
El bloqueo de revoluciones, un factor que a menudo se pasa por alto y es particularmente insidioso en los proyectos que utilizan grandes bibliotecas o marcos de código abierto (aunque también lo he visto con herramientas comerciales). A menudo, se realizará una personalización importante del marco / biblioteca, lo que hace que una actualización sea prohibitivamente difícil o costosa. Por lo tanto, el sistema se vuelve heredado porque se ejecuta en una plataforma más antigua (y posiblemente ya no es compatible).
-
El código fuente ya no está disponible, lo que significa que el sistema solo se puede agregar y nunca cambiar. Dado que estos sistemas se deben reescribir para actualizar, en lugar de ser revisados de forma incremental / iterativa, muchas empresas no se molestarán.
Cualquier cosa que ralentice o detenga las actualizaciones de una base de código puede hacer que esa base de código se vuelva heredada.
Ahora la pregunta separada, no declarada pero implícita es, ¿qué tiene de malo el código heredado? a menudo se usa como un término peyorativo, de ahí la pregunta:
¿Debemos evitar este etiquetado injustificado de código que funciona perfectamente?
Y la respuesta es no, no deberíamos; el etiquetado está garantizado y el término en sí mismo implica claramente que el código funciona. El punto no es que es función, sino cómo está funcionando.
En algunos casos, no hay nada de malo en el código heredado. No es una mala palabra. Los códigos / sistemas heredados no son malos. Acaban de acumular algo de polvo, a veces un poco, a veces mucho.
Legacy se vuelve obsoleto cuando el sistema ya no puede atender (todas) las necesidades del cliente. Esa etiqueta es una que debemos tener cuidado. De lo contrario, es simplemente una ecuación de costo / beneficio; si el costo de la actualización sería menor que el costo de sus beneficios (incluidos los costos de mantenimiento futuros más bajos), entonces actualice, de lo contrario, déjelo en paz. No es necesario escupir la palabra "legado" en el mismo tono que normalmente se reserva para "auditoría fiscal". Es una situación perfectamente aceptable para estar.