# Sistema heredado

Un sistema heredado o sistema legacy es un sistema informático (equipos informáticos o aplicaciones) que ha quedado obsoleto pero que sigue siendo utilizado por el usuario (generalmente, una organización o empresa) y no se quiere o no se puede reemplazar o actualizar de forma sencilla.

## Introducción

Las compañías gastan mucho dinero en sistemas informáticos y, para obtener un beneficio de esa inversión, el software o el hardware debe utilizarse varios años. El tiempo de vida de los sistemas informáticos es muy variable, pero muchos sistemas grandes se pueden llegar a utilizar hasta más de 20 años. Muchos de estos sistemas antiguos aún son importantes para sus respectivos negocios, es decir, las empresas cuentan con los servicios suministrados por estos sistemas y cualquier fallo en estos servicios tendría un efecto serio en el funcionamiento de la organización. Estos sistemas antiguos reciben el nombre de sistemas heredados.
Lo habitual es que los sistemas heredados, los que ya suponen un problema para una empresa u organización por la dificultad para sustituirlos, no sean los mismos sistemas que originalmente se empezaron a utilizar en la empresa. Muchos factores externos e internos, como el estado de las economías nacional e internacional, los mercados cambiantes, los cambios en las leyes, los cambios de administración o la reorganización estructural, conducen a que los negocios experimenten cambios continuos. Estos cambios generan o modifican los requerimientos del sistema de información, por lo que este va sufriendo cambios conforme cambian los negocios. Por esta razón, los sistemas heredados incorporan un gran número de actualizaciones hechas a lo largo de su vida útil. Muchas personas diferentes pueden haber estado involucradas en la realización de estas modificaciones a lo largo del tiempo, y es inusual para cualquier usuario o administrador del sistema tener un conocimiento completo del mismo, sobre todo cuando este tiene una cierta envergadura , esto sin tener en cuenta la inversión horas/hombre requerida para capacitar a los trabajadores del área de sistemas para familiarizarlos con el mismo y sean capaces de mantenerlo (entre 2 y cuatro años ) .

## Riesgos de la migración de un sistema heredado

Los sistemas heredados son considerados potencialmente problemáticos por numerosos ingenieros de software por diversos motivos. Dichos sistemas a menudo operan en ordenadores obsoletos y lentos, cuyo mantenimiento tiene elevados costes y son difíciles de actualizar por falta de componentes adecuados o de mantenimiento.
Los negocios por lo general reemplazan sus equipos y maquinaria con sistemas más modernos. Sin embargo, desechar un sistema informático y reemplazarlo con hardware y software moderno conduce a riesgos de negocio significativos. Reemplazar un sistema heredado es una estrategia de negocios arriesgada por varias razones:
* Rara vez existe una especificación completa de los sistemas heredados. Si existe una especificación, no es probable que tenga los detalles de todos los cambios hechos en el sistema. Por lo tanto, no existe ninguna forma directa de especificar un nuevo sistema que sea funcionalmente idéntico al sistema que se utiliza.
* Los procesos de negocios y las formas en que los sistemas heredados operan a menudo están intrincadamente entrelazados. Estos procesos se diseñaron para aprovechar los servicios del software y evitar sus debilidades. Si el sistema se reemplaza, estos procesos también tendrán que cambiar, con costos y consecuencias impredecibles.
* Las reglas de negocio importantes están contenidas en el software y no suelen estar anotadas en ningún documento de la empresa. Una regla de negocio es una restricción que aparece en algunas funciones del negocio y romper esa restricción puede tener consecuencias impredecibles para este. Por ejemplo, las reglas para valorar el riesgo de la aplicación de una política de una compañía de seguros pueden estar contemplados en su software. Si a estas reglas no se les da mantenimiento, la compañía puede aceptar políticas de riesgo altas que conduzcan a costosas reclamaciones.
* El desarrollo de nuevo software es por sí mismo arriesgado, ya que pueden existir problemas inesperados. Puede ser, por ejemplo, que no se entregue a tiempo con el precio previsto.

## Costes de mantenimiento de un sistema heredado

Seguir utilizando los sistemas heredados evita los mencionados riesgos del reemplazo, pero hacer cambios al sistema existente en vez de cambiarlo por uno más moderno puede ser más costoso puesto que este es cada vez más viejo. Las razones de este coste de mantenimiento de sistemas que ya tienen una cierta antigüedad son:
* Las diversas partes del sistema pueden haber sido implementadas por diferentes equipos. Por lo tanto, existen estilos de programación no consistentes a lo largo del sistema.
* Parte del sistema o todo él pudo implementarse utilizando un lenguaje de programación que ahora es obsoleto. Es difícil encontrar personal que tenga conocimiento de estos lenguajes de programación, por lo que se requiere consultoría externa costosa para dar mantenimiento al sistema.
* A menudo, la documentación del sistema no es adecuada y no está actualizada. En algunos casos, la única documentación existente es el código fuente del sistema. En los casos más graves el código fuente pudo haberse perdido y solo está disponible la versión ejecutable del sistema.
* Por lo general, muchos años de mantenimiento dañan la estructura del sistema, haciéndola cada vez más difícil de comprender. Tal vez se agregaron nuevos programas que interactúan con otras partes del sistema de una forma adyacente.
* El sistema se pudo optimizar para la utilización del espacio o para la velocidad de ejecución más que para comprenderlo del todo. Esto provoca dificultades importantes a los programadores que conocen las técnicas modernas de ingeniería de software pero no conocen los trucos de programación utilizados por quienes desarrollaron el sistema original (quienes probablemente desconocían los conceptos de la ingeniería de software actual).
* Los datos procesados por el sistema se conservan en diferentes archivos que pueden tener estructuras o formatos incompatibles. Puede existir duplicación de datos y los datos mismos pueden no estar actualizados, ser imprecisos o estar incompletos.

## Alternativas

Los negocios que tienen sistemas informáticos anticuados se enfrentan a un dilema fundamental. Si continúan utilizando los sistemas heredados y realizan los cambios requeridos, sus costos se incrementarán de forma inevitable. Si deciden reemplazar sus sistemas heredados con nuevos sistemas, esto tendrá un coste y puede ocurrir que los nuevos sistemas no provean apoyo efectivo al negocio como lo hacen los sistemas heredados.

### Mantener el sistema heredado

Muchos negocios están buscando técnicas de ingeniería de software que prolonguen el tiempo de vida de los sistemas heredados y que reduzcan los costos de seguir utilizando estos sistemas.

### La Arquitectura Orientada a Servicios (SOA)

Una solución a este tipo de casuísticas tan complejas podría ser la implementación de una arquitectura orientada a servicios o SOA (por sus siglas en inglés), donde las aplicaciones de los sistemas heredados podrían ser publicadas como servicios. El carácter modular de una SOA, también hace que sea fácil poder adaptarse a los cambios de mercado con la simple creación o publicación de servicios sin tener que depender de una macro-estructura tan compleja. Aun así habría que tener en cuenta los posibles riesgos que entraña.

### Solución monolítica

Otra solución a los sistemas heredados puede ser la aplicación de un sistema integrado y monolítico que reemplace los sistemas legados, con procesos de negocio estándares para los diferentes requerimientos de la organización. Algunas de las soluciones monolíticas más famosas son la implementación de sistemas ERP.