La modernización heredada, también conocida como modernización de software , modernización de aplicaciones o modernización de plataforma, se refiere a la conversión, reescritura o portabilidad de un sistema heredado a lenguajes de programación , arquitecturas (por ejemplo, microservicios ), bibliotecas de software, protocolos o plataformas de hardware modernos . La transformación heredada tiene como objetivo retener y extender el valor de la inversión heredada a través de la migración a nuevas plataformas para beneficiarse de las ventajas de las nuevas tecnologías. [1]
Estrategias
La toma de decisiones de modernización de software es un proceso dentro de algún contexto organizacional. La toma de decisiones del "mundo real" en las organizaciones empresariales a menudo tiene que basarse en una "racionalidad limitada". [2] Además de eso, existen múltiples (y posiblemente conflictivos) criterios de decisión; la certeza, la integridad y la disponibilidad de información útil (como base para la decisión) suelen ser limitadas.
La modernización del sistema heredado es a menudo un gran proyecto de varios años. Debido a que estos sistemas heredados a menudo son críticos en las operaciones de la mayoría de las empresas, la implementación del sistema modernizado de una sola vez introduce un nivel inaceptable de riesgo operativo. Como resultado, los sistemas heredados generalmente se modernizan 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 siga siendo completamente funcional durante el esfuerzo de modernización.
Estrategias de modernización
Existen diferentes impulsores y estrategias para la modernización del software:
- Architecture Driven Modernization (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 de software.
- Enfoque de enfoque empresarial: la estrategia de modernización está vinculada al valor empresarial añadido por la modernización. Implica definir la intersección de la criticidad para el negocio de las aplicaciones con su calidad técnica. [1] Este enfoque impulsado por Gartner coloca el Análisis de la cartera de aplicaciones (APA) como un requisito previo de las decisiones de modernización de una cartera de aplicaciones para medir el estado, los riesgos, la complejidad y el costo del software, proporcionando información sobre las fortalezas y debilidades de las aplicaciones. [3]
- Model Driven Engineering (MDE) se está investigando como un enfoque para la ingeniería inversa y luego el código de software de ingeniería directa. [4] [5] [6]
- Renaissance [7] Método para evaluar iterativamente sistemas heredados, desde perspectivas técnicas, comerciales y organizacionales.
- WMU (Warrants, Maintenance, Upgrade) es un modelo para elegir las estrategias de mantenimiento adecuadas en función del nivel de satisfacción del cliente esperado y sus efectos en él. [8] [9]
Gestión de riesgos de modernización
La modernización del software es un proceso arriesgado, difícil, largo y altamente intelectual que involucra a múltiples partes interesadas. Las tareas de modernización de software son compatibles con diversas herramientas relacionadas con la arquitectura dirigida por modelos del Grupo de Gestión de Objetos y procesos tales como ISO / IEC 14764: 2006 o Service-Oriented Migración y Técnica Reciclar (SMART). [10] La modernización del software implica varias tareas manuales y automatizadas realizadas por trabajadores del conocimiento especializados. Las herramientas apoyan las tareas de los participantes del proyecto y ayudan a organizar la colaboración y la secuencia del trabajo.
Un enfoque general de gestión de la modernización del software [11] que tiene en cuenta los riesgos (tanto los objetivos tecnológicos como los de negocio) consiste en:
- Analizar la cartera existente: medir la calidad técnica y el valor empresarial. Confrontar la calidad técnica con los objetivos comerciales para definir la estrategia adecuada: reemplazar, no pasar, prioridad baja, buen candidato.
- Identificar a las partes interesadas: todas las personas involucradas en la modernización del software: desarrolladores, probadores, clientes, usuarios finales, arquitectos,…
- Comprenda los requisitos: los requisitos se dividen en 4 categorías: usuario, sistema, restricciones y no funcional.
- Crear el caso de negocio: el caso de negocio respalda el proceso de decisión al considerar diferentes enfoques cuando los responsables de la toma de decisiones lo necesitan.
- Comprender el sistema que se va a modernizar: este es un paso crítico ya que la documentación del software rara vez está actualizada y los proyectos son realizados por numerosos equipos, tanto internos como externos y generalmente fuera de la vista durante mucho tiempo. Extraer el contenido de la aplicación y el diseño de su arquitectura ayudan a razonar sobre el sistema.
- Comprender y evaluar la tecnología de destino: esto permite comparar y contrastar tecnologías y capacidades con los requisitos y el sistema existente.
- Definir la estrategia de modernización: [12] la estrategia define el proceso de transformación. Esta estrategia debe adaptarse a los cambios que ocurren durante el proceso de modernización (cambios de tecnología, conocimiento adicional, evolución de requisitos).
- Conciliar la estrategia con las necesidades de las partes interesadas: las partes interesadas implícitas pueden tener diferentes opiniones sobre lo que es importante y cuál es la mejor manera de proceder. Es importante tener un consenso entre las partes interesadas.
- Estimar recursos: cuando se definen los pasos anteriores, se pueden evaluar los costos. Permite a la dirección determinar si la estrategia de modernización es viable dados los recursos y limitaciones disponibles.
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 (Estimación del esfuerzo de mantenimiento temprano) [13] [14] es un nuevo enfoque para la estimación rápida del esfuerzo de mantenimiento antes de comenzar el mantenimiento real.
- RENACIMIENTO es un método para respaldar la evolución del sistema recuperando primero una base estable mediante la reingeniería y, posteriormente, mejorando continuamente el sistema mediante una serie de cambios incrementales. El enfoque se integra con éxito con diferentes procesos de gestión de proyectos [15]
Desafíos en la modernización heredada
Los problemas principales con un sistema heredado incluyen sistemas muy antiguos con falta de documentación, falta de pymes / conocimiento 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 por naturaleza distribuidos, diluidos y opacos. Ningún punto central de visibilidad para la alta dirección y los arquitectos empresariales es un problema fundamental : es un desafío tomar decisiones de modernización sobre los sistemas de software sin tener 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 estar equipados para usar y comprender las nuevas aplicaciones y plataformas de manera efectiva.
- Coexistencia de sistemas heredados y nuevos: las organizaciones con una gran cantidad de sistemas heredados no pueden migrar a la vez. Es necesario adoptar un enfoque de modernización por etapas. Sin embargo, esto conlleva su propio conjunto de desafíos, como proporcionar una cobertura comercial completa con una funcionalidad superpuesta bien entendida e implementada, duplicación de datos; sistemas desechables para unir los sistemas heredados y nuevos necesarios durante las fases intermedias. [dieciséis]
- Mala gestión de la calidad estructural (ver calidad del software ), lo que resulta en una aplicación modernizada que conlleva más seguridad, rendimiento de confiabilidad y problemas de mantenimiento que el sistema original.
- Costos y duración significativos de la modernización: la modernización de un sistema heredado de misión crítica compleja 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 un ROI inmediato pueden no ser visibles en comparación con los costos de modernización que se están invirtiendo.
- Composición de software: es extremadamente raro que los desarrolladores creen código 100% original en estos días en cualquier cosa construida después de 2010. [17] A menudo utilizan marcos de trabajo y componentes de software de terceros y de código abierto para ganar eficiencia, velocidad y reutilización. Esto introduce dos riesgos: 1.) vulnerabilidades dentro del código de terceros y 2.) riesgo de licencias de código abierto.
Por último, pero no menos importante, no existe una solución única que se adapte a todos los tipos de opciones 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 diversas técnicas de modernización, sus mejores implementaciones aplicables, la idoneidad en un contexto particular y las mejores prácticas a seguir antes. seleccionar el enfoque de modernización adecuado.
Opciones de modernización
A lo largo de los años, han surgido varias opciones diferentes para la modernización heredada; cada una de ellas tuvo un éxito y una adopción variables. Incluso ahora, existe una gama de posibilidades, como se explica a continuación, y no existe "la opción" para todas las iniciativas de transformación heredadas.
- Evaluación de aplicaciones: Basar la cartera de aplicaciones existente utilizando inteligencia de software para comprender el estado, la calidad, la composición, la complejidad y la preparación de la nube del software para comenzar a segmentar y priorizar aplicaciones para varias opciones de modernización.
- Descubrimiento de aplicaciones : los componentes de las aplicaciones están fuertemente entrelazados, lo que implica un requisito para comprender la complejidad y resolver las interdependencias de los componentes de software.
- Migración: migración de idiomas (3GL o 4GL), bases de datos (heredado a RDBMS y de un RDBMS a otro), plataforma (de un sistema operativo a otro sistema operativo), a menudo utilizando analizadores y convertidores automatizados para una alta eficiencia. Esta es una forma rápida y rentable de transformar los sistemas heredados.
- Migración a la nube: migración de aplicaciones heredadas a plataformas en la nube que a menudo utilizan una metodología como la metodología de las 5 R de Gartner para segmentar y priorizar aplicaciones en diferentes modelos (Rehospedaje, Refactorización, Revisión, Reconstrucción, Reemplazo).
- Reingeniería: una técnica para reconstruir aplicaciones heredadas en nueva tecnología o plataforma, con la misma funcionalidad o mejorada, generalmente mediante la adopción de Arquitectura Orientada a Servicios (SOA). Esta es la forma más eficiente y ágil de transformar aplicaciones heredadas. [4] Esto requiere inteligencia de software a nivel de aplicación con sistemas heredados que no son bien conocidos o documentados.
- Rehospedaje: 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 necesita el reemplazo de middleware, hardware, sistema operativo y base de datos. [18] Esto se usa a menudo como un paso intermedio para eliminar hardware antiguo y costoso. Los ejemplos más comunes incluyen aplicaciones de mainframe que se vuelven a alojar en la plataforma UNIX o Wintel .
- Implementación del paquete: Reemplazo de aplicaciones heredadas, en su totalidad o en parte, con software estándar (COTS) como ERP, CRM, SCM, software de facturación, etc. [19]
Un código heredado es cualquier aplicación basada en tecnologías y hardware más antiguos, como mainframes, que continúa brindando servicios básicos a una organización. Las aplicaciones heredadas suelen ser grandes y difíciles de modificar, y eliminarlas o reemplazarlas a menudo 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 ocupan los primeros lugares en la lista de lo que se consideraría heredado, el software escrito en lenguajes más nuevos puede ser igual de monolítico, difícil de modificar y, por lo tanto, candidato a proyectos de modernización.
Volver a implementar aplicaciones en nuevas plataformas de esta manera puede reducir los costos operativos, y las capacidades adicionales de las nuevas tecnologías pueden proporcionar acceso a funciones como servicios web y entornos de desarrollo integrados. [5] Una vez que se completa la transformación y se alcanza la equivalencia funcional, las aplicaciones pueden alinearse más estrechamente con las necesidades comerciales actuales y futuras mediante la adició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 del proceso de transformación heredado una forma rentable y precisa de preservar las inversiones heredadas y, por lo tanto, evitar los costos y el impacto comercial de la migración a software completamente nuevo.
El objetivo de la transformación heredada es retener el valor del activo heredado en la nueva plataforma . En la práctica, esta transformación puede tomar varias formas. Por ejemplo, podría implicar la traducción del código fuente o algún nivel de reutilización del código existente más una capacidad de Web a host para proporcionar el acceso de cliente requerido por la empresa. Si es necesaria una reescritura , las reglas comerciales existentes se pueden extraer 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 del uso de un entorno operativo a otro entorno operativo que, en la mayoría de los casos, se cree que es mejor. Por ejemplo, pasar de Windows NT Server a Windows 2000 Server generalmente se consideraría una migración porque implica asegurarse de que se aprovechen las nuevas funciones, que no sea necesario cambiar la configuración anterior y tomar medidas para garantizar que las aplicaciones actuales continúen funcionando en la nueva. ambiente. La migración también podría significar pasar de Windows NT a un sistema operativo basado en UNIX (o al revés). La migración puede implicar el cambio a nuevo hardware, nuevo software o ambos. La migración puede ser a pequeña escala, como la migración de un solo sistema, o a gran escala, que involucra muchos sistemas, nuevas aplicaciones o una red rediseñada. [20]
Se pueden migrar datos de un tipo de base de datos a otro tipo de base de datos. Por lo general, esto requiere que los datos estén en algún formato común que se pueda generar desde la base de datos anterior e ingresar en la nueva. Dado que la nueva base de datos puede estar organizada de manera diferente, puede ser necesario escribir un programa que pueda procesar los archivos migrados.
Cuando una migración de software alcanza la equivalencia funcional, la aplicación migrada se puede alinear más estrechamente 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 una PC antigua a una nueva se puede realizar con una herramienta de migración de software. La migración también se usa para referirse simplemente al proceso de mover datos de un dispositivo de almacenamiento a otro.
Artículos, trabajos y libros
Creación de software reutilizable
Debido a la evolución de la tecnología actual, algunas empresas o grupos de personas desconocen la importancia de los sistemas heredados. Algunas de sus funciones son demasiado importantes para dejarlas sin utilizar y demasiado caras para reproducirlas de nuevo. La industria del software y los investigadores recientemente han prestado más atención al desarrollo de software basado en componentes para mejorar la productividad y acelerar el tiempo de comercialización. [21]
Modernización gestionada por riesgos
En general, tres clases de tecnología de sistemas de información son de interés en la modernización de sistemas heredados: Tecnologías utilizadas para construir los sistemas heredados, incluidos los lenguajes y los sistemas de bases de datos. Las tecnologías modernas, que a menudo representan el nirvana para quienes están inmersos en una tecnología de décadas de antigüedad y que mantienen 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 brindan una ruta de actualización para aquellos que son demasiado tímidos o inteligentes para saltar 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 ruta de actualización para la modernización del sistema que no requiere dejar la comodidad del "útero 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 llega a la ideal. [22]
Ver también
- Migración del sistema
- Migración de datos
Referencias
- ^ a b Gardner, D: "No solo un pellizco, la modernización de la aplicación extiende el ciclo de vida de los activos de código heredado" , ZDNet , 24 de octubre de 2006
- ^ Racionalidad limitada de Simon. Orígenes y uso en teoría económica
- ^ Stefan Van Der Zijden; Thomas Klinect. "Construyendo un Business Case de Modernización de Aplicaciones Multiplataforma" . Cite journal requiere
|journal=
( ayuda ) - ^ a b Menychtas, Andreas; Santzaridou, Christina; Kousiouris, George; Varvarigou, Theodora; Orue-Echevarria, Leire; Alonso, Juncal; Gorronogoitia, Jesús; Bruneliere, Hugo; Strauss, Oliver; Senkova, Tatiana; Pellens, Bram; Stuer, Peter (2013), "ARTIST Methodology and Framework: A Novel Approach for the Migration of Legacy Software on the Cloud" (PDF) , 2013 15º Simposio Internacional sobre Algoritmos Simbólicos y Numéricos para Computación Científica , 15º Simposio Internacional sobre Simposio Simbólico y Numérico Algoritmos para la informática científica (SYNASC), IEEE, págs. 424–431, doi : 10.1109 / SYNASC.2013.62 , ISBN 978-1-4799-3036-4, S2CID 8150975
- ^ a b Menychtas, Andreas; Konstanteli, Kleopatra; Alonso, Juncal; Orue-Echevarria, Leire; Gorronogoitia, Jesús; Kousiouris, George; Santzaridou, Christina; Bruneliere, Hugo; Pellens, Bram; Stuer, Peter; Strauss, Oliver; Senkova, Tatiana; Varvarigou, Theodora (2014), "Modernización y cloudificación de software utilizando la metodología y el marco de migración ARTIST", Computación escalable: práctica y experiencia , 15 (2), 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 del sistema de software". 26ª Conferencia Internacional Anual de Aplicaciones y Software Informático . págs. 415–420. CiteSeerX 10.1.1.137.7362 . doi : 10.1109 / CMPSAC.2002.1045037 . ISBN 978-0-7695-1727-8. S2CID 16563177 .
- ^ Izzet Sahin; Fatemeh 'Mariam' Zahedi (2001). "Análisis de políticas de 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 Sivula; Tero Tilus. "Estimación del valor empresarial de las modernizaciones de software" . Cite journal requiere
|journal=
( ayuda ) - ^ 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 / paso.2005.24 . hdl : 10344/2208 . ISBN 0-7695-2639-X. S2CID 18912663 .
- ^ 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 del software correctivo" (PDF) . Actas de la 14ª conferencia internacional sobre ingeniería de software e ingeniería del conocimiento - SEKE '02 . SEKE '02 Ischia, Italia. pag. 409. doi : 10.1145 / 568760.568831 . ISBN 978-1581135565. S2CID 10627249 .Mantenimiento de CS1: ubicación ( enlace )
- ^ De Lucia, A .; Fasolino, AR; Pompelle, E. (2001). "Un marco de decisión para la gestión de sistemas heredados". Actas IEEE International Conference on Software Maintenance. ICSM 2001 . págs. 642–651. doi : 10.1109 / ICSM.2001.972781 . ISBN 0-7695-1189-9. S2CID 32184332 .
- ^ Koskinen, Jussi; Lintinen, Heikki; Sivula, Henna; Tilus, Tero. "Evaluación de métodos de estimación de modernización de software utilizando el Meta Framework de NIMSAD" (PDF) . 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 heredada: transformación en una empresa ágil. Un documento técnico sobre la modernización heredada
- ^ 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" . La revista de tecnología de objetos . 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 gestionada por riesgos. Jawaharlal Nehru, Discurso al Parlamento de Nueva Delhi: Seacord.book.