
En informática , un sistema heredado es un método, tecnología, sistema informático o programa de aplicación antiguo , «relacionado con un sistema informático anterior u obsoleto» [ 1 ] , pero que aún se utiliza. A menudo, referirse a un sistema como «heredado» significa que sentó las bases para los estándares posteriores. Esto también puede implicar que el sistema está desactualizado o necesita ser reemplazado.
El código heredado es código fuente antiguo que ya no es compatible con hardware y entornos estándar, y es una base de código que, en algún aspecto, está obsoleta o da soporte a algo obsoleto. El código heredado puede estar escrito en lenguajes de programación, usar marcos de trabajo y bibliotecas externas, o usar arquitecturas y patrones que ya no se consideran modernos, lo que aumenta la carga mental y el tiempo de adaptación para los ingenieros de software que trabajan en la base de código. El código heredado puede tener pruebas automatizadas nulas o insuficientes , lo que hace que la refactorización sea peligrosa y propensa a introducir errores . [ 2 ] El código de larga duración es susceptible a la degradación del software , donde los cambios en el entorno de ejecución, o en el software o hardware circundante, pueden requerir mantenimiento o emulación de algún tipo para seguir funcionando. El código heredado puede estar presente para dar soporte a hardware heredado, un sistema heredado independiente o un cliente heredado que utiliza una función o versión de software antigua.
Si bien el término suele referirse al código fuente, también puede aplicarse al código ejecutable que ya no funciona en una versión posterior del sistema o que requiere una capa de compatibilidad para hacerlo. Un ejemplo sería una aplicación clásica de Macintosh que no se ejecuta de forma nativa en macOS , sino dentro del entorno Classic , o una aplicación Win16 que se ejecuta en Windows XP mediante la función Windows on Windows de XP.
Un ejemplo de hardware heredado son los puertos antiguos como PS/2 y VGA, y las CPU con conjuntos de instrucciones antiguos e incompatibles (por ejemplo, con sistemas operativos más recientes). Ejemplos de software heredado incluyen formatos de archivo antiguos como .swf para Adobe Flash o .123 para Lotus 1-2-3 , y archivos de texto codificados con codificaciones de caracteres antiguas como EBCDIC .
Descripción general

El primer uso del término «legado» para describir sistemas informáticos probablemente ocurrió en la década de 1960. [ 3 ] Para la década de 1980, se utilizaba comúnmente para referirse a los sistemas informáticos existentes y distinguirlos del diseño e implementación de nuevos sistemas. El término «legado» se escuchaba con frecuencia durante un proceso de conversión, por ejemplo, al transferir datos del sistema heredado a una nueva base de datos.
Si bien este término puede indicar que algunos ingenieros consideran que un sistema está obsoleto, un sistema heredado puede seguir utilizándose por diversas razones. Puede ser simplemente que el sistema aún satisfaga las necesidades de los usuarios. Además, la decisión de mantener un sistema antiguo puede verse influenciada por razones económicas, como los desafíos del retorno de la inversión o la dependencia de un proveedor , las dificultades inherentes a la gestión del cambio , o por otras razones distintas a la funcionalidad. La retrocompatibilidad (como la capacidad de los sistemas más recientes para manejar formatos de archivo y codificaciones de caracteres heredados ) es un objetivo que los desarrolladores de software suelen incluir en su trabajo.
Aunque un sistema heredado ya no se utilice, puede seguir teniendo un impacto en la organización debido a su función histórica. Es posible que los datos históricos no se hayan convertido al formato del nuevo sistema y que existan dentro de este mediante una conversión de esquema personalizada , o que solo existan en un almacén de datos . En cualquier caso, el impacto en la inteligencia empresarial y los informes operativos puede ser significativo. Un sistema heredado puede incluir procedimientos o terminología que ya no son relevantes en el contexto actual y que pueden dificultar o confundir la comprensión de los métodos o tecnologías utilizados.
Las organizaciones pueden tener razones de peso para mantener un sistema heredado, como por ejemplo:
- El sistema funciona bien y el propietario no ve ningún motivo para cambiarlo.
- Los costes de rediseñar o sustituir el sistema son prohibitivos debido a su gran tamaño, estructura monolítica y/o complejidad.
- La capacitación en un nuevo sistema resultaría costosa en términos de tiempo y dinero perdidos, en comparación con los beneficios apreciables previstos al reemplazarlo (que podrían ser nulos).
- El sistema requiere una disponibilidad casi constante , por lo que no puede quedar fuera de servicio, y el costo de diseñar un nuevo sistema con un nivel de disponibilidad similar es elevado. Algunos ejemplos son los sistemas para gestionar las cuentas de los clientes en los bancos , los sistemas de reservas informáticas , el control del tráfico aéreo , la distribución de energía ( redes eléctricas ), las centrales nucleares , las instalaciones de defensa militar y sistemas como la base de datos TOPS .
- El funcionamiento del sistema no se comprende bien. Esta situación puede darse cuando los diseñadores del sistema han abandonado la organización y el sistema no se ha documentado completamente o la documentación se ha perdido.
- El usuario espera que el sistema pueda reemplazarse fácilmente cuando sea necesario.
- Los sistemas más recientes realizan funciones secundarias indeseables (especialmente para usuarios individuales o no institucionales) , como el seguimiento y la generación de informes sobre la actividad del usuario y/o las actualizaciones automáticas, lo que crea vulnerabilidades de seguridad y deja a los usuarios finales a merced de la buena fe y la honestidad del proveedor de las actualizaciones. Este problema se agrava especialmente cuando estas funciones secundarias de un sistema nuevo no se pueden desactivar.
Problemas que plantea la informática heredada
Algunos ingenieros de software consideran que los sistemas heredados son potencialmente problemáticos por varias razones. [ 4 ]
- Si el software heredado se ejecuta únicamente en hardware obsoleto , el costo de mantener el sistema puede llegar a superar el costo de reemplazar tanto el software como el hardware, a menos que algún tipo de emulación o retrocompatibilidad permita que el software se ejecute en hardware nuevo. [ 5 ] [ 6 ]
- Estos sistemas pueden ser difíciles de mantener, mejorar y expandir debido a la falta general de comprensión del sistema; el personal experto se ha jubilado u olvidado sus conocimientos, y quienes se incorporaron al sector después de que se convirtiera en un sistema obsoleto nunca lo conocieron. Esto puede agravarse por la falta o pérdida de documentación. La aerolínea Comair despidió a su director ejecutivo en 2004 debido al fallo de un sistema obsoleto de programación de tripulaciones que presentó una limitación desconocida para la empresa. [ 7 ]
- Los sistemas heredados pueden presentar vulnerabilidades en sistemas operativos o aplicaciones antiguas debido a la falta de parches de seguridad disponibles o aplicados. También pueden existir configuraciones de producción que generen problemas de seguridad. Estos problemas pueden poner en riesgo el sistema heredado, haciéndolo vulnerable a ataques por parte de personas con conocimientos internos. [ 8 ]
- La integración con sistemas más recientes también puede resultar difícil, ya que el nuevo software puede utilizar tecnologías completamente distintas. La integración entre tecnologías es bastante común en informática, pero la integración entre tecnologías más recientes y otras sustancialmente más antiguas no lo es. Es posible que simplemente no exista suficiente demanda para el desarrollo de tecnología de integración. En ocasiones, algunos proveedores y entusiastas de tecnologías heredadas desarrollan este código de "conexión".
- Las limitaciones presupuestarias suelen impedir que las empresas aborden la necesidad de reemplazar o migrar un sistema heredado. Sin embargo, a menudo no consideran los crecientes costos de soporte (personal, software y hardware, como se mencionó anteriormente) ni la enorme pérdida de capacidad o continuidad del negocio que supondría un fallo del sistema heredado. Una vez comprendidos estos aspectos, y considerando el retorno de la inversión comprobado, una plataforma tecnológica nueva, más segura y actualizada resulta menos costosa que la alternativa, y se encuentra el presupuesto necesario.
- Debido a que la mayoría de los programadores veteranos están entrando en la edad de jubilación y el número de ingenieros jóvenes que los reemplazan es muy pequeño, existe una alarmante escasez de mano de obra disponible. Esto, a su vez, genera dificultades para el mantenimiento de los sistemas heredados, así como un aumento en los costos de contratación de programadores experimentados. [ 9 ]
- Algunos sistemas heredados tienen un límite estricto en su capacidad total que puede no ser suficiente para las necesidades actuales, por ejemplo, el límite de memoria de 4 GB en muchas CPU x86 antiguas , o el límite de 4 mil millones de direcciones en IPv4 .
Mejoras en los sistemas de software heredados
Cuando resulta imposible reemplazar los sistemas heredados mediante la práctica de la retirada de aplicaciones , aún es posible mejorarlos (o «renovar su interfaz»). La mayor parte del desarrollo suele centrarse en añadir nuevas interfaces a un sistema heredado. La técnica más común consiste en proporcionar una interfaz web a una aplicación de mainframe basada en terminal. Esto puede reducir la productividad del personal debido a tiempos de respuesta más lentos y acciones del operador más lentas basadas en el ratón; sin embargo, a menudo se considera una «actualización», ya que el estilo de la interfaz resulta familiar para los usuarios no expertos y es fácil de usar. John McCormick analiza estas estrategias que implican middleware . [ 10 ]
Las mejoras en la impresión resultan problemáticas porque los sistemas de software antiguos a menudo no incluyen instrucciones de formato o utilizan protocolos incompatibles con las impresoras modernas de PC/Windows. Se puede usar un servidor de impresión para interceptar los datos y convertirlos a un formato más moderno. Los documentos en formato RTF (Rich Text Format) o PostScript se pueden crear en la aplicación antigua y luego interpretarse en un PC antes de imprimirlos.
Las medidas de seguridad biométrica son difíciles de implementar en sistemas heredados. Una solución viable consiste en utilizar un servidor proxy Telnet o HTTP que actúe como intermediario entre los usuarios y el sistema central para garantizar el acceso seguro a la aplicación heredada.
En algunas organizaciones, el cambio consiste en migrar a software de automatización de procesos de negocio (ABP), que genera sistemas completos. Estos sistemas pueden integrarse con los sistemas heredados de la organización y utilizarlos como repositorios de datos . Este enfoque ofrece importantes ventajas: los usuarios quedan protegidos de las ineficiencias de sus sistemas heredados y los cambios se pueden incorporar de forma rápida y sencilla al software ABP.
Los enfoques de ingeniería inversa y directa basados en modelos también pueden utilizarse para la mejora del software heredado. [ 11 ]
Ejemplo de la NASA
Andreas M. Hein investigó el uso de sistemas heredados en la exploración espacial en la Universidad Técnica de Múnich . Según Hein, los sistemas heredados son atractivos para su reutilización si una organización cuenta con las capacidades de verificación, validación, prueba e historial operativo. [ 12 ] [ 13 ] Estas capacidades deben integrarse en diversas fases del ciclo de vida del software, como el desarrollo, la implementación, el uso o el mantenimiento. Para los sistemas de software, la capacidad de usar y mantener el sistema es crucial. De lo contrario, el sistema se volverá cada vez menos comprensible y mantenible.
Según Hein, la verificación, la validación, las pruebas y el historial operativo aumentan la confianza en la fiabilidad y la calidad de un sistema. Sin embargo, acumular este historial suele ser costoso. El programa del Transbordador Espacial de la NASA, ahora retirado , utilizó gran cantidad de tecnología de la década de 1970. Su reemplazo resultaba prohibitivo debido al elevado coste de la certificación de vuelo. El hardware original cumplía con los costosos requisitos de integración y certificación para el vuelo, pero cualquier equipo nuevo habría tenido que pasar por todo ese proceso nuevamente. Este proceso, largo y detallado, requería pruebas exhaustivas de los nuevos componentes en sus nuevas configuraciones antes de que una sola unidad pudiera utilizarse en el programa del Transbordador Espacial. Por lo tanto, cualquier sistema nuevo que iniciara el proceso de certificación se convertía de facto en un sistema heredado para cuando se aprobaba para el vuelo.
Además, todo el sistema del Transbordador Espacial, incluyendo los activos terrestres y del vehículo de lanzamiento, fue diseñado para funcionar conjuntamente como un sistema cerrado. Dado que las especificaciones no cambiaron, todos los sistemas y componentes certificados funcionaron correctamente en las funciones para las que fueron diseñados. [ 14 ] Incluso antes de que se programara la retirada del Transbordador en 2010, la NASA consideró ventajoso seguir utilizando muchas piezas de tecnología de la década de 1970 en lugar de actualizar esos sistemas y recertificar los nuevos componentes.
Perspectivas sobre el código heredado
Algunos en la ingeniería de software prefieren describir el "código heredado" sin la connotación de obsoleto. Entre las concepciones neutrales más comunes se encuentran el código fuente heredado de otra persona y el código fuente heredado de una versión anterior del software . Eli Lopian, CEO de Typemock, lo ha definido como "código que los desarrolladores temen cambiar". [ 15 ] Michael Feathers [ 16 ] introdujo una definición de código heredado como código sin pruebas , lo que refleja la perspectiva de que el código heredado es difícil de manejar en parte debido a la falta de pruebas de regresión automatizadas . También definió pruebas de caracterización para comenzar a poner a prueba el código heredado .
Ginny Hendry caracterizó la creación de código como un "desafío" para los programadores actuales, quienes deben crear código que sea "como otros legados en nuestras vidas, como las antigüedades, las reliquias familiares y las historias que se aprecian y se transmiten con cariño de generación en generación. ¿Y si el código heredado fuera algo de lo que nos sintiéramos orgullosos?". [ 17 ]
Otros usos del término legado en informática
El término «soporte para sistemas heredados » se suele usar en relación con estos sistemas. Puede referirse a una característica del software moderno. Por ejemplo, los sistemas operativos con soporte para sistemas heredados pueden detectar y utilizar hardware antiguo. También puede referirse a una función empresarial; por ejemplo, un proveedor de software o hardware que ofrece soporte o mantenimiento para productos antiguos.
Un producto "antiguo" puede ser aquel que ya no se vende, ha perdido una cuota de mercado considerable o es una versión obsoleta de un producto desactualizado. Un producto antiguo puede tener alguna ventaja sobre un producto moderno, lo que hace que resulte atractivo para los clientes conservarlo. Un producto solo es verdaderamente "obsoleto" si no ofrece ninguna ventaja a nadie ; es decir, si ninguna persona que tomara una decisión racional optaría por adquirirlo nuevo.
El término "modo heredado" suele referirse específicamente a la compatibilidad con versiones anteriores . Se dice que un producto de software que puede funcionar como si fuera una versión anterior se ejecuta en modo heredado. Esta característica es común en sistemas operativos y navegadores web, donde muchas aplicaciones dependen de estos componentes subyacentes.
En la era de las computadoras centrales, muchas aplicaciones se ejecutaban en modo heredado. En el entorno informático empresarial moderno, las arquitecturas de n o 3 niveles son más difíciles de integrar en modo heredado, ya que incluyen muchos componentes que conforman un único sistema.
La tecnología de virtualización es una innovación reciente que permite que los sistemas heredados sigan funcionando en hardware moderno mediante la ejecución de sistemas operativos y navegadores antiguos en un sistema de software que emula el hardware heredado.
Arquitectura en terrenos contaminados
Los programadores han tomado prestado el término brownfield de la industria de la construcción, donde los terrenos previamente desarrollados (a menudo contaminados y abandonados) se describen como brownfield . [ 18 ]
- La arquitectura Brownfield es un tipo de arquitectura de software o de red que incorpora sistemas heredados.
- La implementación en entornos existentes (brownfield deployment) consiste en una actualización o adición a una arquitectura de software o red ya existente, conservando los componentes heredados.
Visión alternativa
Existe una opinión alternativa favorable, que ha ido creciendo desde el final de la burbuja de las puntocom en 1999, según la cual los sistemas heredados son simplemente sistemas informáticos en funcionamiento:
El "código heredado" a menudo difiere de la alternativa sugerida, ya que funciona y se puede escalar correctamente.
Los analistas de TI estiman que el costo de reemplazar la lógica de negocio es aproximadamente cinco veces mayor que el de reutilizarla, [ 19 ] incluso sin tener en cuenta el riesgo de fallas del sistema y brechas de seguridad. Idealmente, las empresas nunca tendrían que reescribir la mayor parte de la lógica de negocio principal: la equivalencia de débitos y créditos es un requisito constante.
La industria de TI está respondiendo con la "modernización de sistemas heredados" y la "transformación de sistemas heredados": la renovación de la lógica de negocio existente con nuevas interfaces de usuario, a veces utilizando extracción de datos de pantalla y acceso habilitado por servicios a través de servicios web . Estas técnicas permiten a las organizaciones comprender sus activos de código existentes (utilizando herramientas de descubrimiento), proporcionar nuevas interfaces de usuario y de aplicación al código existente, mejorar el flujo de trabajo, contener los costos, minimizar el riesgo y disfrutar de las cualidades clásicas del servicio (tiempo de actividad cercano al 100 %, seguridad, escalabilidad, etc.). [ 20 ]
Esta tendencia también invita a reflexionar sobre qué hace que los sistemas heredados sean tan duraderos. Los tecnólogos están redescubriendo la importancia de una arquitectura sólida desde el principio, para evitar reescrituras costosas y arriesgadas. Los sistemas heredados más comunes suelen ser aquellos que adoptaron principios arquitectónicos de TI bien conocidos, con una planificación cuidadosa y una metodología rigurosa durante la implementación. Los sistemas mal diseñados a menudo no perduran, tanto por su desgaste como porque sus fallas inherentes invitan a su reemplazo. Por lo tanto, muchas organizaciones están redescubriendo el valor tanto de sus sistemas heredados como de los fundamentos teóricos de los mismos.
Véase también
Referencias
- ↑ "Merriam-Webster" . Consultado el 22 de junio de 2013 .
- ↑ Feathers, Michael C. (2005). Trabajar eficazmente con código heredado . Upper Saddle River, NJ: Prentice Hall Professional Technical Reference. pág. 15. ISBN 0-13-293174-5OCLC 660166658
- ^ Tawde, Swati (4 de diciembre de 2020). "Sistema heredado" . educaba .
- ↑ (por ejemplo, véase Bisbal et al., 1999).
- ↑ Este artículo se basa en material tomado de Legacy+system en el Free On-line Dictionary of Computing antes del 1 de noviembre de 2008 e incorporado bajo los términos de "relicencia" de la GFDL , versión 1.3 o posterior.
- ↑ Lamb, John (junio de 2008). "Los sistemas heredados siguen teniendo un lugar en la empresa" . Computer Weekly . Consultado el 27 de octubre de 2014 .
- ↑ Stephanie Overby (1 de mayo de 2005). "El desastre navideño de Comair: condenado al fracaso - CIO.com - Business Technology Leadership" . CIO.com . Consultado el 29 de abril de 2012 .
- ↑ Razermouse (3 de mayo de 2011). "El peligro de los sistemas heredados" . Mousesecurity.com. Archivado del original el 23 de marzo de 2012. Consultado el 29 de abril de 2012 .
- ↑ "Beneficios de la modernización de mainframes" . Centro de modernización . Consultado el 23 de agosto de 2017 .
- ↑ McCormick, John (2 de junio de 2000). "Middleware web para mainframe" . Gcn.com . Consultado el 29 de abril de 2012 .
- ↑ Menychtas, Andreas; Konstanteli, Kleopatra; Alonso, Juncal; Orue-Echevarria, Leire; Gorronogoitia, Jesus; Kousiouris, George; Santzaridou, Christina; Bruneliere, Hugo; Pellens, Bram; Stuer, Peter; Strauss, Oliver; Senkova, Tatiana; Varvarigou, Theodora (2014), "Modernización de software y migración a la nube utilizando la metodología y el marco de migración ARTIST", Scalable Computing: Practice and Experience , 15 (2), doi : 10.12694/scpe.v15i2.980
- ↑ AM Hein (2014), ¿Cómo evaluar los sistemas patrimoniales en las fases iniciales?, 6.ª Conferencia Internacional de Sistemas e Ingeniería Concurrente para Aplicaciones Espaciales 2014, ESA
- ↑ AM Hein (2016), Tecnologías del patrimonio en programas espaciales: metodología de evaluación y análisis estadístico , tesis doctoral, Facultad de Ingeniería Mecánica, Universidad Técnica de Múnich
- ↑ AM Hein (2014), ¿Cómo evaluar los sistemas patrimoniales en las fases iniciales?, 6.ª Conferencia Internacional de Sistemas e Ingeniería Concurrente para Aplicaciones Espaciales 2014, ESA, pág. 3
- ↑ Lopian, Eli (15 de mayo de 2018). "Definiendo el código heredado" . Recuperado el 10 de junio de 2019 .
- ↑ Michael Feathers' Working Effectively with Legacy Code ( ISBN) 0-13-117705-2)
- ↑ Ginny Hendry (11 de julio de 2014). "Siéntete orgulloso de tu legado (código)" . Recuperado el 7 de octubre de 2021 .
- ↑ "Definición de despliegue en greenfield y brownfield" . Searchunifiedcommunications.techtarget.com. Archivado del original el 11 de mayo de 2021. Consultado el 29 de abril de 2012 .
- ↑ "Consideraciones de costos para un proyecto de migración de mainframe a la nube" . Kumaran Systems . 24 de marzo de 2023.
- ↑ Comella-Dorda, Santiago (2000-04-01). "Un estudio de los enfoques de modernización de sistemas heredados" (PDF) . Biblioteca digital SEI .
Lecturas adicionales
- AM Hein, ¿Cómo evaluar los sistemas patrimoniales en sus fases iniciales? SECESA 2014, 8-10 de octubre de 2014, Universidad de Stuttgart, Alemania
- "Consejos y trucos para hardware antiguo" Archivado el 8 de julio de 2011 en Wayback Machine por Danny Budzinski, Control Design Magazine , enero de 2011.
- "El desastre navideño de Comair: un fracaso asegurado", por Stephanie Overby, revista CIO , 1 de mayo de 2005.
- "El fracaso de la computadora digital" por Adam N. Rosenberg
- Bisbal, J.; Lawless, D.; Wu, B.; Grimson, J. (1999). "Sistemas de información heredados: problemas y direcciones". IEEE Software . 16 (5): 103– 111. Bibcode : 1999ISoft..16e.103B . doi : 10.1109/52.795108 .
- Jim McGee (10 de noviembre de 2005). "Sistemas heredados: por qué la historia importa" . Enterprise Systems Journal .
- "El peligro de los sistemas heredados", por Steve R. Smith, 3 de mayo de 2011.
Enlaces externos
Contenido multimedia relacionado con sistemas heredados en Wikimedia Commons
- Sistemas heredados
- Hardware heredado
- Cambio tecnológico