Actualización o adaptación de software heredado a prácticas y plataformas modernas
La modernización de sistemas heredados, también conocida como modernización de software o modernización de plataformas, se refiere a la conversión, reescritura o adaptación de un sistema heredado a lenguajes de programación informática , arquitecturas (por ejemplo, microservicios ), bibliotecas de software, protocolos o plataformas de hardware modernos. La transformación de sistemas heredados tiene como objetivo conservar y ampliar el valor de la inversión heredada mediante la migración a nuevas plataformas para beneficiarse de las ventajas de las nuevas tecnologías. [1]
Como base y primer paso de las iniciativas de modernización de software, la estrategia, la gestión de riesgos, la estimación de costes y su implementación, se encuentra el conocimiento del sistema que se está modernizando, el conocimiento de para qué están hechas todas las funcionalidades y el conocimiento de cómo se ha desarrollado. [2] Como los expertos en la materia (SMEs) que trabajaron en el inicio y durante todas las evoluciones de la aplicación ya no están disponibles o tienen un conocimiento parcial, y la falta de documentación adecuada y actualizada, las iniciativas de modernización comienzan con la evaluación y el descubrimiento de la aplicación utilizando inteligencia de software . [3]
Estrategias
La toma de decisiones sobre modernización de software es un proceso que se lleva a cabo dentro de un contexto organizacional. La toma de decisiones del “mundo real” en las organizaciones empresariales a menudo debe basarse en una “ racionalidad limitada ”. [4] Además de eso, existen múltiples criterios de decisión (y posiblemente contradictorios); la certeza, integridad y disponibilidad de información útil (como base para la decisión) a menudo es limitada.
La modernización de sistemas heredados suele ser un proyecto grande que dura varios años. Debido a que estos sistemas heredados suelen ser críticos para las operaciones de la mayoría de las empresas, implementar el sistema modernizado de una sola vez introduce un nivel inaceptable de riesgo operativo. Como resultado, los sistemas heredados suelen modernizarse de manera incremental. Inicialmente, el sistema consta completamente de código heredado. A medida que se completa cada incremento, el porcentaje de código heredado disminuye. Finalmente, el sistema se moderniza por completo. Una estrategia de migración debe garantizar que el sistema permanezca completamente funcional durante el esfuerzo de modernización.
Estrategias de modernización
Existen diferentes impulsores y estrategias para la modernización del software:
- La modernización impulsada por la arquitectura (ADM) es la iniciativa para estandarizar las vistas de los sistemas existentes con el fin de permitir actividades de modernización comunes como el análisis y la comprensión de código y la transformación del software.
- Enfoque centrado en el negocio: la estrategia de modernización está vinculada al valor comercial agregado por la modernización. Implica definir la intersección de la criticidad para el negocio de una aplicación con su calidad técnica. [1] Este enfoque impulsado por Gartner coloca el Análisis de la cartera de aplicaciones (APA) como un prerrequisito de las decisiones de modernización para una cartera de aplicaciones para medir la salud del software, los riesgos, la complejidad y el costo, brindando información sobre las fortalezas y debilidades de la aplicación. [5]
- La ingeniería impulsada por modelos (MDE) se está investigando como un enfoque para la ingeniería inversa y luego la ingeniería directa de código de software. [6] [7] [8]
- Renacimiento [9] Método para evaluar iterativamente sistemas heredados, desde perspectivas técnicas, comerciales y organizacionales.
- WMU (Warrants, Maintenance, Upgrade) es un modelo para elegir estrategias de mantenimiento adecuadas en función del nivel de satisfacción del cliente deseado y sus efectos sobre él. [10] [11]
Gestión de riesgos de modernización
La modernización de software [12] es un proceso riesgoso, difícil, largo y altamente intelectual que involucra a múltiples partes interesadas. Las tareas de modernización de software están respaldadas por varias herramientas relacionadas con la arquitectura basada en modelos del Object Management Group y procesos como ISO/IEC 14764:2006 o Service-Oriented Migration and Reuse Technique (SMART). [13] La modernización de software implica varias tareas manuales y automatizadas realizadas por trabajadores especializados en conocimiento. Las herramientas respaldan las tareas de los participantes del proyecto y ayudan a organizar la colaboración y la secuenciación del trabajo.
Un enfoque general de gestión de modernización de software [14] que tenga en cuenta explícitamente los riesgos (tanto tecnológicos como de objetivos comerciales) consiste en:
- Análisis del portafolio existente: medición de la calidad técnica y el valor comercial. Comparación de la calidad técnica con los objetivos comerciales para definir la estrategia adecuada: reemplazar, no seguir, baja prioridad, buen candidato.
- Identificar a las partes interesadas: todas las personas involucradas en la modernización del software: desarrolladores, probadores, clientes, usuarios finales, arquitectos, …
- Comprender los requisitos: los requisitos se dividen en 4 categorías: usuario, sistema, restricciones y no funcionales.
- Crear el caso de negocio: el caso de negocio respalda el proceso de decisión al considerar diferentes enfoques cuando los tomadores de decisiones lo necesitan.
- Entender el sistema que se va a modernizar: este es un paso fundamental, ya que la documentación del software rara vez está actualizada y los proyectos los realizan numerosos equipos, tanto internos como externos, y normalmente pasan mucho tiempo sin que nadie los vea. Extraer el contenido de la aplicación y su diseño arquitectónico ayuda a razonar sobre el sistema.
- Comprender y evaluar la tecnología objetivo: esto permite comparar y contrastar tecnologías y capacidades con los requisitos y el sistema existente.
- Definir la estrategia de modernización: [15] La estrategia define el proceso de transformación. Esta estrategia debe adaptarse a los cambios que se produzcan durante el proceso de modernización (cambios tecnológicos, conocimientos adicionales, evolución de los requisitos).
- Conciliar la estrategia con las necesidades de las partes interesadas: las partes interesadas implicadas pueden tener opiniones diferentes sobre lo que es importante y cuál es la mejor manera de proceder. Es importante que haya un consenso entre las partes interesadas.
- Estimación de recursos: una vez definidos los pasos previos, se pueden evaluar los costos. Esto permite a la gerencia determinar si la estrategia de modernización es factible dados los recursos disponibles y las limitaciones.
Costos de modernización
- Softcalc (Sneed, 1995a) es un modelo y herramienta para estimar costos de solicitudes de mantenimiento entrantes, desarrollado con base en COCOMO y FPA.
- EMEE (Early Maintenance Effort Estimation) [16] [17] es un nuevo enfoque para la estimación rápida del esfuerzo de mantenimiento antes de comenzar el mantenimiento real.
- RENAISSANCE es un método para respaldar la evolución del sistema recuperando primero una base estable mediante reingeniería y, posteriormente, mejorando continuamente el sistema mediante un flujo de cambios incrementales. El enfoque se integra con éxito con diferentes procesos de gestión de proyectos [18]
Desafíos en la modernización del legado
Los principales problemas de un sistema heredado incluyen sistemas muy antiguos con falta de documentación, falta de expertos en la materia o de conocimientos sobre los sistemas heredados y escasez de habilidades tecnológicas en las que se han implementado los sistemas heredados. Los sistemas heredados típicos existen desde hace más de dos décadas. La migración está plagada de desafíos:
- Falta de visibilidad en grandes carteras de aplicaciones: las grandes organizaciones de TI tienen cientos, si no miles, de sistemas de software. La tecnología y el conocimiento funcional están distribuidos, diluidos y son opacos por naturaleza. La falta de un punto central de visibilidad para la alta dirección y los arquitectos empresariales es un problema importante: es complicado tomar decisiones de modernización sobre los sistemas de software sin disponer de los datos cuantitativos y cualitativos necesarios sobre estos sistemas en toda la empresa.
- Gestión del cambio organizacional: los usuarios deben volver a capacitarse y equiparse para usar y comprender las nuevas aplicaciones y plataformas de manera eficaz.
- Coexistencia de sistemas heredados y nuevos: las organizaciones con una gran presencia de sistemas heredados no pueden migrar de una sola vez. Es necesario adoptar un enfoque de modernización por fases. Sin embargo, esto conlleva su propio conjunto de desafíos, como proporcionar una cobertura empresarial completa con funcionalidades superpuestas bien entendidas e implementadas, duplicación de datos y sistemas descartables para unir los sistemas heredados y los nuevos que se necesitan durante las fases intermedias. [19]
- Mala gestión de la calidad estructural (ver calidad del software ), que da como resultado una aplicación modernizada que conlleva más problemas de seguridad, confiabilidad, rendimiento y mantenibilidad que el sistema original.
- Costos y duración de modernización significativos: la modernización de un sistema heredado complejo y de misión crítica puede requerir grandes inversiones y la duración de tener un sistema modernizado en pleno funcionamiento podría ser de años, sin mencionar las incertidumbres imprevistas en el proceso.
- Compromiso de las partes interesadas: las principales partes interesadas de la organización deben estar convencidas de la inversión que se está realizando para la modernización, ya que los beneficios y el ROI inmediato pueden no ser visibles en comparación con los costos de modernización que se están invirtiendo.
- Composición de software: en la actualidad, es extremadamente raro que los desarrolladores creen código 100 % original en cualquier proyecto creado después de 2010. [20] A menudo, utilizan componentes de software y marcos de trabajo de terceros y de código abierto para ganar eficiencia, velocidad y reutilización. Esto presenta dos riesgos: 1) vulnerabilidades dentro del código de terceros y 2) riesgo de licencia de código abierto.
Por último, pero no por ello menos importante, no existe una solución única que sirva para todos los casos de modernización. Con una multitud de opciones comerciales y personalizadas disponibles para la modernización, es fundamental que los clientes, los vendedores y los ejecutores comprendan las complejidades de las distintas técnicas de modernización, sus mejores implementaciones aplicables, su idoneidad en un contexto particular y las mejores prácticas a seguir antes de seleccionar el enfoque de modernización adecuado.
Opciones de modernización
A lo largo de los años, han surgido varias opciones diferentes para modernizar los sistemas heredados, cada una de las cuales ha tenido distintos niveles de éxito y adopción. Incluso ahora, existe una variedad de posibilidades, como se explica a continuación, y no existe una “opción” para todas las iniciativas de transformación de sistemas heredados.
- Evaluación de aplicaciones: establecer una base de la cartera de aplicaciones existente utilizando inteligencia de software para comprender el estado, la calidad, la composición, la complejidad y la preparación para la nube del software para comenzar a segmentar y priorizar las aplicaciones para varias opciones de modernización.
- Descubrimiento de aplicaciones : Los componentes de las aplicaciones están fuertemente entrelazados, lo que implica el requisito de comprender la complejidad y resolver las interdependencias de los componentes del software.
- Migración: migración de lenguajes (3GL o 4GL), bases de datos (de sistemas heredados a RDBMS y de un RDBMS a otro), plataformas (de un sistema operativo a otro), a menudo utilizando convertidores automáticos o sistemas de transformación de programas para lograr una alta eficiencia. Esta es una forma rápida y rentable de transformar sistemas heredados.
- Migración a la nube: migración de aplicaciones heredadas a plataformas en la nube, a menudo utilizando una metodología como la metodología 5 Rs de Gartner para segmentar y priorizar las aplicaciones en diferentes modelos (Rehost, Refactor, Revisar, Reconstruir, Reemplazar).
- Reingeniería: técnica para reconstruir aplicaciones heredadas en una nueva tecnología o plataforma, con la misma funcionalidad o una funcionalidad mejorada, generalmente mediante la adopción de una arquitectura orientada a servicios (SOA). Esta es la forma más eficiente y ágil de transformar aplicaciones heredadas. [6] Esto requiere inteligencia de software a nivel de aplicación con sistemas heredados que no son muy conocidos o no están bien documentados.
- Re-hosting: Ejecutar las aplicaciones heredadas, sin cambios importantes, en una plataforma diferente. La lógica empresarial se conserva a medida que la aplicación y los datos se migran al entorno abierto. Esta opción solo requiere el reemplazo de middleware, hardware, sistema operativo y base de datos. [21] Esto se usa a menudo como un paso intermedio para eliminar hardware heredado y costoso. Los ejemplos más comunes incluyen aplicaciones de mainframe que se re-hostean en la plataforma UNIX o Wintel .
- Implementación de paquetes: Reemplazo de aplicaciones heredadas, en su totalidad o en parte, con software estándar (COTS) como ERP, CRM, SCM, software de facturación, etc. [22]
Un código heredado es cualquier aplicación basada en tecnologías y hardware más antiguos, como mainframes, que sigue brindando servicios básicos a una organización. Las aplicaciones heredadas suelen ser grandes y difíciles de modificar, y desecharlas o reemplazarlas a menudo también significa rediseñar los procesos comerciales de una organización. Sin embargo, cada vez más aplicaciones que se escribieron en los llamados lenguajes modernos como Java se están volviendo heredadas. Mientras que los lenguajes "heredados" como COBOL están en los primeros lugares de la lista de lo que se consideraría heredado, el software escrito en lenguajes más nuevos puede ser igualmente monolítico, difícil de modificar y, por lo tanto, ser candidato para proyectos de modernización.
De esta manera, la reimplementación de aplicaciones en nuevas plataformas puede reducir los costos operativos y las capacidades adicionales de las nuevas tecnologías pueden brindar acceso a funciones como servicios web y entornos de desarrollo integrados. [7] Una vez que se completa la transformación y se alcanza la equivalencia funcional, las aplicaciones se pueden alinear más estrechamente con las necesidades comerciales actuales y futuras mediante la incorporación de nuevas funciones a la aplicación transformada. El reciente desarrollo de nuevas tecnologías, como la transformación de programas por parte de empresas de modernización de software, ha hecho que el proceso de transformación de software heredado sea una forma rentable y precisa de preservar las inversiones heredadas y, de ese modo, evitar los costos y el impacto comercial de la migración a un software completamente nuevo.
El objetivo de la transformación de un sistema heredado es conservar el valor del activo heredado en la nueva plataforma . En la práctica, esta transformación puede adoptar varias formas. Por ejemplo, puede implicar la traducción del código fuente o algún nivel de reutilización del código existente más una capacidad de conexión de la Web al servidor para proporcionar el acceso al cliente que requiere la empresa. Si es necesaria una reescritura , se pueden extraer las reglas empresariales existentes para formar parte de la declaración de requisitos para una reescritura.
Migración de software
La migración de software es el proceso de pasar de utilizar un entorno operativo a otro que, en la mayoría de los casos, se considera mejor. Por ejemplo, pasar de Windows NT Server a Windows 2000 Server normalmente se consideraría una migración porque implica asegurarse de que se aprovechen las nuevas características, de que no sea necesario cambiar las configuraciones antiguas y de que se tomen medidas para garantizar que las aplicaciones actuales sigan funcionando en el nuevo entorno. La migración también podría significar pasar de Windows NT a un sistema operativo basado en UNIX (o viceversa). La migración puede implicar el cambio a un nuevo hardware, a un nuevo software o a ambos. La migración puede ser a pequeña escala, como la migración de un solo sistema, o a gran escala, que implique muchos sistemas, nuevas aplicaciones o una red rediseñada. [23]
Se pueden migrar datos de un tipo de base de datos a otro. Esto suele requerir que los datos estén en un formato común que pueda generarse desde la base de datos anterior y generarse en la nueva. Dado que la nueva base de datos puede estar organizada de forma diferente, puede ser necesario escribir un programa que pueda procesar los archivos que se migran.
Cuando una migración de software alcanza la equivalencia funcional, la aplicación migrada se puede alinear más de cerca con las necesidades comerciales actuales y futuras mediante la adición de nueva funcionalidad a la aplicación transformada.
La migración del software instalado de un PC antiguo a uno nuevo se puede realizar con una herramienta de migración de software. El término migración también se utiliza para referirse simplemente al proceso de mover datos de un dispositivo de almacenamiento a otro.
Artículos, ponencias y libros
Creación de software reutilizable
Debido a la evolución de la tecnología actual, algunas empresas o grupos de personas no conocen la importancia de los sistemas heredados. Algunas de sus funciones son demasiado importantes como para dejarlas sin usar y demasiado caras para reproducirlas de nuevo. La industria del software y los investigadores han prestado recientemente más atención al desarrollo de software basado en componentes para mejorar la productividad y acelerar el tiempo de comercialización. [24]
Modernización con gestión de riesgos
En general, tres clases de tecnología de sistemas de información son de interés para la modernización de sistemas heredados: Tecnologías utilizadas para construir los sistemas heredados, incluidos los lenguajes y los sistemas de bases de datos. Tecnologías modernas, que a menudo representan el nirvana para quienes están sumidos en una tecnología de décadas de antigüedad y que encierran la promesa (a menudo incumplida) de sistemas de información empresarial potentes, eficaces y de fácil mantenimiento. Tecnologías ofrecidas por los proveedores de sistemas heredados: estas tecnologías proporcionan una vía de actualización para aquellos demasiado tímidos o demasiado inteligentes como para lanzarse de cabeza a la última ola de ofertas de TI. Los proveedores de sistemas heredados ofrecen estas tecnologías por una sencilla razón: proporcionar una vía de actualización para la modernización de sistemas que no requiera abandonar la comodidad de la “matriz del mainframe”. Aunque estas tecnologías pueden proporcionar un camino más suave hacia un sistema moderno, a menudo dan como resultado una solución aceptable que no alcanza el ideal. [25]
Véase también
Referencias
- ^ ab Gardner, D: "La modernización de aplicaciones no es sólo una cuestión de retoques, sino que extiende el ciclo de vida de los activos de código heredados", ZDNet , 24 de octubre de 2006
- ^ Wolfart, Daniele; Assunção, Wesley; da Silva, Ivonei; Domingos, Diogo; Schmeing, Ederson; Villaca, Guilherme; Paza, Diogo (junio de 2021). "Modernización de sistemas heredados con microservicios: una hoja de ruta". Evaluación y Valoración en Ingeniería de Software . págs. 149-159. doi :10.1145/3463274.3463334. ISBN 9781450390538. Número de identificación del sujeto 235474042.
- ^ Bartoszuk, Cezary; Dąbrowski, Robert; Stencel, Krzysztof; Timoszuk, Grzegorz (junio de 2013). "Sobre la comprensión y evaluación rápidas del software". Actas de la 14.ª Conferencia internacional sobre sistemas y tecnologías informáticas . págs. 161–168. doi :10.1145/2516775.2516806. ISBN 9781450320214. Número de identificación del sujeto 17034416.
- ^ Racionalidad limitada de Simon. Orígenes y uso en la teoría económica
- ^ Stefan Van Der Zijden; Thomas Klinect. "Creación de un caso empresarial de modernización de aplicaciones multiplataforma".
- ^ ab Menychtas, Andreas; Santzaridou, Christina; Kousiouris, George; Varvarigou, Theodora; Orue-Echevarria, Leire; Alonso, Juncal; Gorronogoitia, Jesus; Bruneliere, Hugo; Strauss, Oliver; Senkova, Tatiana; Pellens, Bram; Stuer, Peter (2013), "Metodología y marco de trabajo ARTIST: un nuevo enfoque para la migración de software heredado a la nube" (PDF) , 2013 15th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (PDF) , 15th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC), IEEE, págs. 424–431, doi :10.1109/SYNASC.2013.62, ISBN 978-1-4799-3036-4, Número de identificación del sujeto 8150975
- ^ ab 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), CiteSeerX 10.1.1.675.6225 , doi : 10.12694/scpe.v15i2.980
- ^ El proyecto de investigación ARTIST
- ^ Ian Warren; Jane Ransom (2002). "Renacimiento: un método para apoyar la evolución de los sistemas de software". 26.ª Conferencia anual internacional sobre software y aplicaciones informáticas . pp. 415–420. CiteSeerX 10.1.1.137.7362 . doi :10.1109/CMPSAC.2002.1045037. ISBN. 978-0-7695-1727-8. Número de identificación del sujeto 16563177.
- ^ Izzet Sahin; Fatemeh 'Mariam' Zahedi (2001). "Análisis de políticas para garantía, mantenimiento y actualización de sistemas de software". Revista de mantenimiento de software: investigación y práctica . 13 (6): 469–493. doi :10.1002/smr.242.
- ^ Jussi Koskinen; Jarmo Ahonen; Heikki Lintinen; henna sívula; Tero Tilus. "Estimación del valor empresarial de las modernizaciones de software".
- ^ "Migración de VB6. ¿Por qué comprometer la seguridad de los datos cuando se puede migrar a plataformas más modernas?".
- ^ Lewis, G.; Morris, E.; Smith, D.; O'Brien, L. (2005). "Técnica de reutilización y migración orientada a servicios (SMART)". 13.º Taller internacional IEEE sobre tecnología de software y práctica de ingeniería (STEP'05) . págs. 222–229. doi :10.1109/step.2005.24. hdl :10344/2208. ISBN 0-7695-2639-X.S2CID18912663 .
- ^ Lewis, Grace A.; Plakosh, Daniel; Seacord, Robert C. (2003). Modernización de sistemas heredados: tecnologías de software, procesos de ingeniería y prácticas comerciales. Addison-Wesley Professional. págs. 27–37. ISBN 0321118847.
- ^ Mobilize.Net. "Una vía rápida hacia la modernización del software | Mobilize.Net". www.mobilize.net . Consultado el 19 de marzo de 2021 .
- ^ Andrea De Lucia; Eugenio Pompella y Silvio Stefanucci (julio de 2002). "Estimación del esfuerzo para el mantenimiento correctivo del software" (PDF) . Actas de la 14.ª conferencia internacional sobre ingeniería del software e ingeniería del conocimiento - SEKE '02 . SEKE '02 Ischia, Italia. pág. 409. doi :10.1145/568760.568831. ISBN 978-1581135565.S2CID10627249 .
{{cite book}}
: CS1 maint: location (link) CS1 maint: location missing publisher (link) - ^ De Lucia, A.; Fasolino, AR; Pompelle, E. (2001). "Un marco de trabajo de toma de decisiones para la gestión de sistemas heredados". Actas de la Conferencia Internacional IEEE sobre Mantenimiento de Software. ICSM 2001. págs. 642–651. doi :10.1109/ICSM.2001.972781. ISBN 0-7695-1189-9. Número de identificación del sujeto 32184332.
- ^ Koskinen, Jussi; Lintinen, Heikki; sívula, henna; Tilus, Tero. "Evaluación de métodos de estimación de modernización de software utilizando NIMSAD Meta Framework". Publicaciones del Instituto de Investigaciones en Tecnologías de la Información . CiteSeerX 10.1.1.106.2633 .
- ^ Santhosh G. Ramakrishna; VV (mayo de 2007). "Modernización del legado logístico" (PDF) . Infosys Technologies Limited.
- ^ C. Ghezzi (2018). "Apoyando la evolución confiable". En Gruhn, Volker; Striemer, Rüdiger (eds.). La esencia de la ingeniería de software. págs. 32-33. doi :10.1007/978-3-319-73897-0. ISBN 978-3-319-73897-0.S2CID 49187426 .
- ^ "Modernización de mainframe en pocas palabras". Centro de modernización . Consultado el 23 de agosto de 2017 .
- ^ Serie, AS (ISO 9001:2008). Modernización de sistemas heredados: transformación hacia una empresa ágil. Documento técnico sobre modernización de sistemas heredados
- ^ SearchCIO.com
- ^ SK Mishra; DS Kushwaha; AK Misra (julio-agosto de 2009). "Creación de componentes de software reutilizables a partir de un sistema heredado orientado a objetos mediante ingeniería inversa". The Journal of Object Technology . 8 (5): 133–152. doi : 10.5381/jot.2009.8.5.a3 .
- ^ Moltke, H. v. (miércoles, 22 de enero de 2003, 21:55). Modernización con gestión de riesgos. Jawaharlal Nehru, Discurso ante el Parlamento de Nueva Delhi,: Seacord.book.