Sistema heredado

Tecnología o sistema informático antiguo que sigue en uso
En 2011, todavía se utilizaba MS-DOS en algunas empresas para ejecutar aplicaciones heredadas, como este sistema de gestión de servicios de alimentos de la Marina de los EE. UU .

En informática , un sistema heredado es un método, tecnología, sistema informático o programa de aplicación antiguo , "de, relacionado con, o que es un sistema informático anterior u obsoleto", [1] pero que todavía se utiliza. A menudo, hacer referencia a un sistema como "heredado" significa que allanó el camino para los estándares que lo seguirían. Esto también puede implicar que el sistema está desactualizado o necesita ser reemplazado.

El código heredado es un código fuente de computadora 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 admite algo obsoleto. El código heredado puede estar escrito en lenguajes de programación, usar marcos y bibliotecas externas, o usar arquitectura y patrones que ya no se consideran modernos, lo que aumenta la carga mental y el tiempo de puesta en marcha para los ingenieros de software que trabajan en la base de código. El código heredado puede tener cero o insuficientes pruebas automatizadas , lo que hace que la refactorización sea peligrosa y probablemente introduzca errores . [2] El código de larga duración es susceptible a la descomposición del software , donde los cambios en el entorno de tiempo de ejecución o 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 admitir hardware heredado, un sistema heredado separado o un cliente heredado que usa una función o versión de software antigua.

Si bien el término generalmente se refiere al código fuente, también puede aplicarse al código ejecutable que ya no se ejecuta en una versión posterior de un sistema o que requiere una capa de compatibilidad para hacerlo. Un ejemplo sería una aplicación clásica de Macintosh que no se ejecutará de forma nativa en macOS , sino que se ejecuta dentro del entorno Classic , o una aplicación Win16 que se ejecuta en Windows XP utilizando la función Windows on Windows en XP.

Un ejemplo de hardware heredado son los puertos heredados , como los puertos PS/2 y VGA, y las CPU con conjuntos de instrucciones más antiguos e incompatibles (por ejemplo, con sistemas operativos más nuevos). Los ejemplos de software heredado incluyen formatos de archivo heredados, como .swf para Adobe Flash o .123 para Lotus 1-2-3 , y archivos de texto codificados con codificaciones de caracteres heredadas, como EBCDIC .

Descripción general

Aunque no cuenta con soporte desde abril de 2014, Windows XP ha seguido utilizándose en campos como el software de sistemas operativos para cajeros automáticos .

El primer uso del término "legado" para describir sistemas informáticos probablemente se produjo en la década de 1960. [3] En la década de 1980, se utilizaba comúnmente para referirse a los sistemas informáticos existentes y distinguirlos del diseño y la implementación de nuevos sistemas. La palabra "legado" se escuchaba a menudo durante un proceso de conversión, por ejemplo, al trasladar datos del sistema heredado a una nueva base de datos.

Si bien este término puede indicar que algunos ingenieros pueden sentir que un sistema está desactualizado, 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 estar influenciada por razones económicas, como desafíos de retorno de la inversión o dependencia de un proveedor , los desafíos inherentes de la gestión de cambios o una variedad de otras razones distintas a la funcionalidad. La compatibilidad con versiones anteriores (como la capacidad de los sistemas más nuevos para manejar formatos de archivos y codificaciones de caracteres heredados ) es un objetivo que los desarrolladores de software a menudo incluyen en su trabajo.

Incluso si un sistema heredado ya no se utiliza, puede seguir afectando a la organización debido a su función histórica. Es posible que los datos históricos no se hayan convertido al nuevo formato del sistema y que existan dentro del nuevo sistema con el uso de un esquema personalizado , o que solo existan en un almacén de datos . En cualquier caso, el efecto sobre 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 pueden dificultar o confundir la comprensión de los métodos o las tecnologías utilizadas.

Las organizaciones pueden tener razones convincentes para mantener un sistema heredado, como:

  • El sistema funciona bien y el propietario no ve motivos para cambiarlo.
  • Los costos de rediseñar o reemplazar el sistema son prohibitivos porque es grande, monolítico y/o complejo.
  • La recapacitación en un nuevo sistema sería costosa en términos de pérdida de tiempo y dinero, en comparación con los beneficios apreciables previstos de reemplazarlo (que pueden ser cero).
  • El sistema requiere una disponibilidad casi constante , por lo que no puede dejarse fuera de servicio, y el coste de diseñar un nuevo sistema con un nivel de disponibilidad similar es elevado. Entre los ejemplos se incluyen los sistemas para gestionar las cuentas de los clientes en los bancos , los sistemas informáticos de reservas , el control del tráfico aéreo , la distribución de energía ( redes eléctricas ), las centrales nucleares , las instalaciones militares de defensa y sistemas como la base de datos TOPS .
  • No se entiende bien cómo funciona el sistema. Esta situación puede darse cuando los diseñadores del sistema han dejado la organización y el sistema no ha sido documentado completamente o se ha perdido la documentación.
  • El usuario espera que el sistema pueda reemplazarse fácilmente cuando sea necesario.
  • Los sistemas más nuevos realizan funciones secundarias no deseadas (especialmente para usuarios individuales o no institucionales), como a ) seguimiento y generación de informes sobre la actividad del usuario y/o b ) actualización automática que crea vulnerabilidades de seguridad " de puerta trasera " y deja a los usuarios finales dependientes de la buena fe y la honestidad del proveedor que proporciona las actualizaciones. Este problema es especialmente grave cuando estas funciones secundarias de un sistema más nuevo no se pueden desactivar.

Problemas que plantea la informática tradicional

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 anticuado , el costo de mantenimiento del sistema puede eventualmente superar el costo de reemplazar tanto el software como el hardware, a menos que alguna forma de emulación o compatibilidad con versiones anteriores permita que el software se ejecute en hardware nuevo. [5] [6]
  • Estos sistemas pueden resultar difíciles de mantener, mejorar y ampliar debido a que existe una falta general de comprensión del sistema; el personal que era experto en el tema se ha jubilado o ha olvidado lo que sabía sobre él, y el personal que entró en el campo después de que se convirtió en un "legado" nunca se enteró de su existencia en primer lugar. Esto puede verse agravado por la falta o pérdida de documentación. La compañía aérea Comair despidió a su director ejecutivo en 2004 debido a la falla de un sistema de programación de tripulaciones anticuado que se topó con una limitación que nadie en la empresa conocía. [7]
  • Los sistemas heredados pueden tener vulnerabilidades en sistemas operativos o aplicaciones más antiguos debido a la falta de parches de seguridad disponibles o aplicados. También puede haber configuraciones de producción que provoquen problemas de seguridad. Estos problemas pueden poner en riesgo el sistema heredado de ser comprometido por atacantes o personas con conocimientos internos. [8]
  • La integración con sistemas más nuevos también puede resultar difícil porque el nuevo software puede utilizar tecnologías completamente diferentes. La integración entre tecnologías es bastante común en informática, pero la integración entre tecnologías más nuevas y otras sustancialmente más antiguas no lo es. Es posible que simplemente no haya suficiente demanda para desarrollar tecnologías de integración. Algunos de estos códigos "pegamentos" son desarrollados ocasionalmente por proveedores y entusiastas de determinadas tecnologías heredadas.
  • Las limitaciones presupuestarias suelen hacer que las empresas no aborden la necesidad de reemplazar o migrar un sistema heredado. Sin embargo, las empresas a menudo no consideran los costos crecientes de capacidad de soporte (personal, software y hardware, todos mencionados anteriormente) y no toman en cuenta la enorme pérdida de capacidad o continuidad comercial si el sistema heredado fallara. Una vez que se comprenden bien estas consideraciones, entonces, basándose en el ROI demostrado de una plataforma de tecnología nueva, más segura y actualizada, no es tan costosa como la alternativa, y se encuentra el presupuesto.
  • Debido a que la mayoría de los programadores tradicionales están entrando en 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 mantener los sistemas tradicionales, 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 más antiguas o el límite de 4 mil millones de direcciones en IPv4 .

Mejoras en los sistemas de software heredados

En los casos en que no es posible reemplazar los sistemas heredados mediante la práctica de retirar aplicaciones , aún es posible mejorarlos (o "renovarlos"). La mayor parte del desarrollo suele dedicarse a agregar nuevas interfaces a un sistema heredado. La técnica más destacada es proporcionar una interfaz basada en la Web a una aplicación mainframe basada en terminal. Esto puede reducir la productividad del personal debido a tiempos de respuesta más lentos y acciones de operador más lentas basadas en el mouse, pero a menudo se lo considera una "actualización", porque el estilo de la interfaz es familiar para los usuarios no calificados y les resulta fácil de usar. John McCormick analiza estas estrategias que involucran middleware . [10]

Las mejoras en la impresión son problemáticas porque los sistemas de software antiguos a menudo no agregan instrucciones de formato o utilizan protocolos que no se pueden utilizar en las impresoras modernas para PC o Windows. Se puede utilizar un servidor de impresión para interceptar los datos y traducirlos a un código más moderno. Se pueden crear documentos con formato de texto enriquecido (RTF) o PostScript en la aplicación antigua y luego interpretarlos en una PC antes de imprimirlos.

Las medidas de seguridad biométricas son difíciles de implementar en sistemas heredados. Una solución viable es utilizar un servidor proxy Telnet o HTTP que se ubique entre los usuarios y el mainframe para implementar un acceso seguro a la aplicación heredada.

El cambio que se está llevando a cabo en algunas organizaciones consiste en pasar a un software de procesos empresariales automatizados (ABP) que genere sistemas completos. Estos sistemas pueden interactuar con los sistemas heredados de las organizaciones y utilizarlos como repositorios de datos . Este enfoque puede proporcionar una serie de beneficios importantes: los usuarios quedan aislados de las ineficiencias de sus sistemas heredados y los cambios se pueden incorporar de forma rápida y sencilla en el software ABP.

Los enfoques de ingeniería inversa y directa basados ​​en modelos también se pueden utilizar para mejorar el 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 tiene las capacidades de verificación, validación, prueba e historial operativo. [12] [13] Estas capacidades deben integrarse en varias fases del ciclo de vida del software, como el desarrollo, la implementación, el uso o el mantenimiento. En el caso de los sistemas de software, la capacidad de uso y mantenimiento del 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ó una gran cantidad de tecnología de la década de 1970. Su reemplazo tenía un costo prohibitivo debido al costoso requisito de certificación de vuelo. El hardware original completó el costoso requisito 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 requirió pruebas exhaustivas de los nuevos componentes en sus nuevas configuraciones antes de que una sola unidad pudiera usarse en el programa del transbordador espacial. Por lo tanto, cualquier sistema nuevo que inició el proceso de certificación se convierte en un sistema heredado de facto en el momento en que se aprueba para el vuelo.

Además, todo el sistema del transbordador espacial, incluidos los activos terrestres y de lanzamiento, fue diseñado para funcionar en conjunto como un sistema cerrado. Como las especificaciones no cambiaron, todos los sistemas y componentes certificados funcionaron bien en las funciones para las que fueron diseñados. [14] Incluso antes de que se programara el retiro 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 estar obsoleto. Entre las concepciones neutrales más frecuentes 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, director ejecutivo de Typemock, lo ha definido como "código que los desarrolladores tienen miedo de cambiar". [15] Michael Feathers [16] introdujo una definición de código heredado como código sin pruebas , que refleja la perspectiva de que el código heredado es difícil de trabajar en parte debido a la falta de pruebas de regresión automatizadas . También definió las 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: crear código que sea «como otros legados en nuestras vidas, como las antigüedades, las reliquias y las historias que se aprecian y transmiten con cariño de una generación a la siguiente. ¿Qué pasaría si el código heredado fuera algo de lo que estuviéramos orgullosos?». [17]

Usos adicionales del términoLegadoEn informática

El término "soporte heredado" se utiliza a menudo en relación con los sistemas heredados. El término puede hacer referencia a una característica del software moderno. Por ejemplo, los sistemas operativos con "soporte heredado" pueden detectar y utilizar hardware más antiguo. El término también puede utilizarse para hacer referencia a una función empresarial; por ejemplo, un proveedor de software o hardware que ofrece soporte o mantenimiento de software para productos más antiguos.

Un producto "hereditario" puede ser un producto que ya no se vende, que ha perdido una cuota de mercado sustancial o que es una versión de un producto que no está vigente. Un producto hereditario puede tener alguna ventaja sobre un producto moderno que lo haga atractivo para los clientes. Un producto solo es verdaderamente "obsoleto" si no ofrece ninguna ventaja a nadie , es decir, si ninguna persona que tome 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 es capaz de funcionar como si fuera una versión anterior de sí mismo "se ejecuta en modo heredado". Este tipo de característica es común en los sistemas operativos y navegadores de Internet, donde muchas aplicaciones dependen de estos componentes subyacentes.

En la era de los mainframes , 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 implementar en modo heredado, ya que incluyen muchos componentes que forman un solo sistema.

La tecnología de virtualización es una innovación reciente que permite que los sistemas heredados continúen funcionando en hardware moderno ejecutando sistemas operativos y navegadores más antiguos en un sistema de software que emula el hardware heredado.

Arquitectura de terrenos abandonados

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 red que incorpora sistemas heredados.
  • La implementación de Brownfield es una actualización o adición a una arquitectura de software o red existente que conserva los componentes heredados.

Visión alternativa

Existe una opinión favorable alternativa, que ha ido en aumento desde el fin de la burbuja puntocom en 1999, según la cual los sistemas heredados son simplemente sistemas informáticos en uso funcional:

El " código heredado " a menudo difiere de su alternativa sugerida en cuanto a su funcionamiento y escalabilidad reales.

—  Bjarne Stroustrup, creador de C++

Los analistas de TI estiman que el costo de reemplazar la lógica empresarial es aproximadamente cinco veces mayor que el de reutilizarla, [19] incluso descontando el riesgo de fallas del sistema y violaciones de seguridad. Lo ideal sería que las empresas nunca tuvieran que reescribir la mayor parte de la lógica empresarial básica: débitos = créditos es un requisito perenne.

La industria de TI está respondiendo con una "modernización del legado" y una "transformación del legado": renovando la lógica empresarial existente con nuevas interfaces de usuario, a veces utilizando capturas de pantalla y acceso habilitado para 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 para el 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 volviendo a aprender la importancia de una arquitectura sólida desde el principio, para evitar reescrituras costosas y riesgosas. Los sistemas heredados más comunes tienden a ser aquellos que adoptaron principios arquitectónicos de TI bien conocidos, con una planificación cuidadosa y una metodología estricta durante la implementación. Los sistemas mal diseñados a menudo no duran, tanto porque se desgastan como porque sus fallas inherentes invitan a ser reemplazados. Por lo tanto, muchas organizaciones están redescubriendo el valor tanto de sus sistemas heredados como de los fundamentos teóricos de esos sistemas.

Véase también

Referencias

  1. ^ "Merriam-Webster" . Consultado el 22 de junio de 2013 .
  2. ^ Feathers, Michael C. (2005). Cómo trabajar eficazmente con código heredado. Upper Saddle River, NJ: Prentice Hall Professional Technical Reference. p. 15. ISBN 0-13-293174-5.OCLC 660166658  .
  3. ^ Tawde, Swati. "Sistema heredado". educaba .
  4. ^ (por ejemplo, ver Bisbal et al., 1999).
  5. ^ Este artículo se basa en material tomado de Legacy+system en el Diccionario gratuito en línea de informática antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de licencia" del GFDL , versión 1.3 o posterior.
  6. ^ Lamb, John (junio de 2008). «Los sistemas heredados siguen teniendo un lugar en la empresa». Computer Weekly . Consultado el 27 de octubre de 2014 .
  7. ^ Stephanie Overby (1 de mayo de 2005). "El desastre navideño de Comair: destinado al fracaso - CIO.com - Liderazgo en tecnología empresarial". CIO.com . Consultado el 29 de abril de 2012 .
  8. ^ Razermouse (3 de mayo de 2011). "El peligro de los sistemas heredados". Mousesecurity.com. Archivado desde el original el 23 de marzo de 2012. Consultado el 29 de abril de 2012 .
  9. ^ "Beneficios de la modernización del mainframe". Centro de modernización . Consultado el 23 de agosto de 2017 .
  10. ^ McCormick, John (2000-06-02). "Middleware de mainframe y web". Gcn.com . Consultado el 29 de abril de 2012 .
  11. ^ 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 cloudificación utilizando la metodología y el marco de migración ARTIST", Scalable Computing: Practice and Experience , 15 (2), doi : 10.12694/scpe.v15i2.980
  12. ^ AM Hein (2014), ¿Cómo evaluar los sistemas patrimoniales en las primeras fases?, 6.ª Conferencia internacional sobre sistemas e ingeniería concurrente para aplicaciones espaciales 2014, ESA
  13. ^ AM Hein (2016), Tecnologías patrimoniales 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
  14. ^ AM Hein (2014), ¿Cómo evaluar los sistemas históricos en las primeras fases?, 6.ª Conferencia internacional sobre sistemas e ingeniería concurrente para aplicaciones espaciales 2014, ESA, pág. 3
  15. ^ Lopian, Eli (15 de mayo de 2018). «Definición del código heredado» . Consultado el 10 de junio de 2019 .
  16. ^ Cómo trabajar eficazmente con código heredado, de Michael Feathers ( ISBN 0-13-117705-2 ) 
  17. ^ Ginny Hendry (11 de julio de 2014). "Enorgullécete de tu legado (Código)" . Consultado el 7 de octubre de 2021 .
  18. ^ "Definición de implementación en áreas nuevas y en áreas industriales abandonadas". Searchunifiedcommunications.techtarget.com . Consultado el 29 de abril de 2012 .
  19. ^ "Consideraciones de costos para un proyecto de migración de mainframe a la nube". Kumaran Systems .
  20. ^ Comella-Dorda, Santiago (1 de abril de 2000). "Un estudio sobre los enfoques de modernización de los sistemas heredados" (PDF) . Biblioteca Digital SEI .

Lectura adicional

  • AM Hein, ¿Cómo evaluar los sistemas patrimoniales en las primeras fases? SECESA 2014, 8-10 de octubre de 2014, Universidad de Stuttgart, Alemania
  • "Consejos y trucos para hardware antiguo" por Danny Budzinski, Control Design Magazine , enero de 2011
  • "El desastre navideño de Comair: destinado al fracaso", por Stephanie Overby, CIO Magazine , 1 de mayo de 2005
  • "El fracaso de la computadora digital" de 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. 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.
  • Medios relacionados con Sistemas heredados en Wikimedia Commons
Obtenido de "https://es.wikipedia.org/w/index.php?title=Sistema_legado&oldid=1237289489"