Articulo de referencia

modernización del software

La modernización de software , también conocida como modernización de sistemas heredados o modernización de plataformas , se refiere a la conversión, reescritura o adaptación de...

La modernización de software , también conocida como modernización de sistemas heredados o modernización de plataformas , se refiere a la conversión, reescritura o adaptación 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 de sistemas heredados busca conservar y ampliar el valor de la inversión realizada en dichos sistemas mediante la migración a nuevas plataformas para aprovechar 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 costos y su implementación, radica en 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 ] Dado que los expertos en la materia (SME) 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 la modernización del software es un proceso que se desarrolla dentro de un contexto organizacional. La toma de decisiones en el "mundo real" de las organizaciones empresariales a menudo debe basarse en la " racionalidad limitada ". [ 4 ] Además, existen múltiples criterios de decisión (posiblemente contradictorios); la certeza, la exhaustividad y la disponibilidad de información útil (como base para la decisión) suelen ser limitadas.

La modernización de sistemas heredados suele ser un proyecto extenso que se extiende por varios años. Dado que estos sistemas suelen ser críticos para las operaciones de la mayoría de las empresas, implementar el sistema modernizado de una sola vez conlleva un nivel inaceptable de riesgo operativo. Por ello, los sistemas heredados se modernizan generalmente de forma 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 totalmente funcional durante el proceso de modernización.

Estrategias de modernización

Existen diferentes factores impulsores y estrategias para la modernización del software:

  • La Modernización Impulsada por la Arquitectura (ADM, por sus siglas en inglés) 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 del código, y la transformación del software.
  • Enfoque centrado en el negocio: La estrategia de modernización está vinculada al valor añadido que aporta la modernización. Implica definir la intersección entre la criticidad de una aplicación para el negocio y su calidad técnica. [ 1 ] Este enfoque, impulsado por Gartner, establece el Análisis de la Cartera de Aplicaciones (APA) como requisito previo para las decisiones de modernización de una cartera de aplicaciones, con el fin de medir la salud, los riesgos, la complejidad y el coste del software, proporcionando información sobre las fortalezas y debilidades de las aplicaciones. [ 5 ]
  • La ingeniería dirigida por modelos (MDE) se está investigando como un enfoque para la ingeniería inversa y posterior ingeniería directa de código de software. [ 6 ] [ 7 ] [ 8 ]
  • Renaissance [ 9 ] Método para evaluar iterativamente sistemas heredados, desde perspectivas técnicas, comerciales y organizativas.
  • WMU (Garantías, Mantenimiento, Actualización) es un modelo para elegir estrategias de mantenimiento apropiadas basadas en el nivel de satisfacción del cliente deseado y sus efectos en el mismo. [ 10 ] [ 11 ]

Gestión de riesgos de modernización

La modernización del software [ 12 ] es un proceso arriesgado, difícil, prolongado y altamente intelectual que involucra a múltiples partes interesadas. Las tareas de modernización del software se apoyan en diversas herramientas relacionadas con la arquitectura dirigida por modelos del Object Management Group y procesos como ISO/IEC 14764:2006 o la técnica de migración y reutilización orientada a servicios (SMART). [ 13 ] La modernización del software implica diversas 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 secuenciación del trabajo.

Un enfoque general de gestión de la modernización del software [ 14 ] que toma en cuenta explícitamente los riesgos (tanto los objetivos tecnológicos como los comerciales) consiste en:

  • Análisis de la cartera existente: medición de la calidad técnica y el valor comercial. Confrontación de la calidad técnica con los objetivos comerciales para definir la estrategia adecuada: reemplazar, descartar, baja prioridad, buen candidato.
  • Identificar a las partes interesadas: todas las personas involucradas en la modernización del software: desarrolladores, evaluadores, clientes, usuarios finales, arquitectos, etc.
  • Comprenda los requisitos: los requisitos se dividen en 4 categorías: usuario, sistema, restricciones y no funcionales.
  • Elaborar el caso de negocio: el caso de negocio respalda el proceso de toma de decisiones al considerar diferentes enfoques cuando quienes toman las decisiones lo necesitan.
  • Comprender el sistema que se va a modernizar es fundamental, ya que la documentación del software rara vez está actualizada y los proyectos son realizados por numerosos equipos, tanto internos como externos, que suelen permanecer ocultos durante largos periodos. Analizar el contenido de la aplicación y su arquitectura ayuda a comprender el sistema.
  • Comprender y evaluar la tecnología objetivo: esto permite comparar y contrastar las 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 contemplar los cambios que se produzcan durante el proceso de modernización (cambios tecnológicos, conocimiento adicional, evolución de los requisitos).
  • Conciliar la estrategia con las necesidades de las partes interesadas: es posible que las partes interesadas implícitas tengan opiniones diversas sobre lo que es importante y cuál es la mejor manera de proceder. Es fundamental lograr un consenso entre ellas.
  • 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 y las limitaciones disponibles.

Costes de modernización

  • Softcalc (Sneed, 1995a) es un modelo y una herramienta para estimar los costos de las solicitudes de mantenimiento entrantes, desarrollado a partir de 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 apoyar 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 [ 18 ].

Desafíos en la modernización de sistemas heredados

Los principales problemas de un sistema heredado incluyen sistemas muy antiguos con falta de documentación, falta de expertos en la materia/conocimiento sobre los sistemas heredados y escasez de habilidades tecnológicas en las áreas donde se implementaron dichos sistemas. [ 19 ] Los sistemas heredados típicos han existido durante 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 cuentan con cientos, si no miles, de sistemas de software. El conocimiento tecnológico y funcional, por su naturaleza, está distribuido, diluido y resulta opaco. La falta de un punto central de visibilidad para la alta dirección y los arquitectos empresariales es un problema fundamental: resulta difícil tomar decisiones de modernización sobre los sistemas de software sin contar con los datos cuantitativos y cualitativos necesarios sobre estos sistemas en toda la organización.
  • Gestión del cambio organizativo: Los usuarios deben recibir formación y capacitación para utilizar y comprender las nuevas aplicaciones y plataformas de forma eficaz.
  • Coexistencia de sistemas heredados y nuevos: Las organizaciones con una gran cantidad de sistemas heredados no pueden migrar de una sola vez. Es necesario adoptar un enfoque de modernización por fases. Sin embargo, esto conlleva sus propios desafíos, como brindar una cobertura empresarial completa con funcionalidades superpuestas bien comprendidas e implementadas, duplicación de datos y sistemas desechables para conectar los sistemas heredados con los nuevos necesarios durante las fases intermedias. [ 20 ]
  • Una gestión deficiente de la calidad estructural (véase calidad del software ) da como resultado una aplicación modernizada que presenta más problemas de seguridad, fiabilidad, rendimiento y mantenibilidad que el sistema original.
  • Costes y duración significativos de la modernización: la modernización de un sistema heredado complejo y de misión crítica puede requerir grandes inversiones, y el tiempo necesario para tener un sistema modernizado en pleno funcionamiento podría extenderse durante años, sin mencionar las incertidumbres imprevistas que puedan surgir durante 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 retorno de la inversión inmediato pueden no ser visibles en comparación con los costos de modernización que se están invirtiendo.
  • Composición de software: Hoy en día, es extremadamente raro que los desarrolladores creen código 100% original en cualquier producto creado después de 2010. [ 21 ] Suelen utilizar marcos de trabajo y componentes de software de terceros y de código abierto para obtener eficiencia, velocidad y reutilización. Esto introduce dos riesgos: 1) vulnerabilidades en el código de terceros y 2) riesgos relacionados con las licencias de código abierto.

Por último, pero no menos importante, no existe una solución universal para la modernización. Con una amplia gama de opciones comerciales y personalizadas disponibles, es fundamental que clientes, vendedores y ejecutores comprendan las complejidades de las diversas técnicas de modernización, sus mejores implementaciones, su idoneidad en un contexto particular y las mejores prácticas a seguir antes de seleccionar el enfoque adecuado.

Opciones de modernización

A lo largo de los años, han surgido diversas opciones para la modernización de sistemas heredados, cada una con distinto grado de éxito y adopción. Incluso hoy en día, existe un abanico de posibilidades, como se explica a continuación, y no hay una única opción válida para todas las iniciativas de transformación de sistemas heredados.

  • Evaluación de aplicaciones: Establecer una línea base del portafolio 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, con el fin de comenzar a segmentar y priorizar las aplicaciones para diversas opciones de modernización.
  • Descubrimiento de aplicaciones : Los componentes de las aplicaciones están fuertemente interconectados, lo que implica la necesidad de comprender la complejidad y resolver las interdependencias de los componentes de software.
  • Migración: Migración de lenguajes (3GL o 4GL), bases de datos (de sistemas heredados a RDBMS y viceversa), plataformas (de sistemas operativos a sistemas operativos), a menudo mediante convertidores automatizados o sistemas de transformación de programas para lograr una alta eficiencia. Este es un método rápido y rentable para 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 de las 5 R de Gartner para segmentar y priorizar las aplicaciones en diferentes modelos (Reubicar, Refactorizar, 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 la 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 bien conocidos ni están bien documentados.
  • Reubicación: Ejecutar las aplicaciones heredadas, sin cambios importantes, en una plataforma diferente. La lógica de negocio se conserva mientras la aplicación y los datos se migran al entorno abierto. Esta opción solo requiere el reemplazo del middleware, el hardware, el sistema operativo y la base de datos. [ 22 ] 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 reubican en una plataforma UNIX o Wintel .
  • Implementación de paquetes: Reemplazo de aplicaciones heredadas, en su totalidad o en parte, con software comercial (COTS) como ERP, CRM, SCM, software de facturación, etc. [ 23 ]

El código heredado es cualquier aplicación basada en tecnologías y hardware antiguos, como los mainframes, que sigue prestando servicios esenciales a una organización. Las aplicaciones heredadas suelen ser grandes y difíciles de modificar, y su eliminación o sustitución a menudo implica también la reingeniería de los procesos de negocio de la organización. Sin embargo, cada vez más aplicaciones escritas en lenguajes modernos como Java se están convirtiendo en heredadas. Si bien lenguajes como COBOL encabezan la lista de lo que se considera heredado, el software escrito en lenguajes más recientes puede ser igual de monolítico, difícil de modificar y, por lo tanto, susceptible de ser objeto de proyectos de modernización.

La reimplementación de aplicaciones en nuevas plataformas de esta manera 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 completada la transformación y alcanzada la equivalencia funcional, las aplicaciones pueden alinearse más estrechamente con las necesidades comerciales actuales y futuras mediante la adición de nuevas funcionalidades 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 convertido el proceso de transformación de sistemas heredados en 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 un software completamente nuevo.

El objetivo de la transformación de sistemas heredados es conservar el valor de los activos heredados en la nueva plataforma . En la práctica, esta transformación puede adoptar diversas formas. Por ejemplo, podría implicar la traducción del código fuente o la reutilización de código existente, junto con la incorporación de una funcionalidad de acceso web para proporcionar al cliente el acceso requerido por la empresa. Si es necesario reescribir el código , las reglas de negocio existentes pueden extraerse para formar parte de la declaración de requisitos para dicha reescritura.

Migración de software

La migración de software es el proceso de pasar de un entorno operativo a otro que, en la mayoría de los casos, se considera mejor. Por ejemplo, migrar de Windows NT Server a Windows 2000 Server se considera una migración porque implica aprovechar las nuevas funciones, conservar la configuración anterior y garantizar que las aplicaciones actuales sigan funcionando en el nuevo entorno. La migración también puede significar pasar de Windows NT a un sistema operativo basado en UNIX (o viceversa). Puede implicar el cambio a nuevo hardware, nuevo software o ambos. Puede ser a pequeña escala, como la migración de un solo sistema, o a gran escala, involucrando muchos sistemas, nuevas aplicaciones o una red rediseñada. [ 24 ]

Es posible migrar datos de una base de datos a otra. Esto generalmente requiere que los datos estén en un formato común que permita la salida de la base de datos antigua y la entrada de la nueva. Dado que la nueva base de datos puede estar organizada de manera diferente, puede ser necesario escribir un programa para procesar los archivos migrados.

Cuando una migración de software alcanza la equivalencia funcional, la aplicación migrada puede alinearse mejor con las necesidades empresariales actuales y futuras mediante la adición de nuevas funcionalidades a la aplicación transformada.

The migration of installed software from an old PC to a new PC can be done with a software migration tool. Migration is also used to refer simply to the process of moving data from one storage device to another.

Articles, papers and books

Creating reusable software

Due to the evolution of technology today some companies or groups of people don’t know the importance of legacy systems. Some of their functions are too important to be left unused, and too expensive to reproduce again. The software industry and researchers have recently paid more attention towards component-based software development to enhance productivity and accelerate time to market.[25]

Risk-managed modernization

In general, three classes of information system technology are of interest in legacy system modernization: Technologies used to construct the legacy systems, including the languages and database systems. Modern technologies, which often represent nirvana to those mired in decades-old technology and which hold (the often unfulfilled) promise of powerful, effective, easily maintained enterprise information systems. Technologies offered by the legacy system vendors – These technologies provide an upgrade path for those too timid or wise to jump head-first into the latest wave of IT offerings. Legacy system vendors offer these technologies for one simple reason: to provide an upgrade path for system modernization that does not necessitate leaving the comfort of the “mainframe womb.” Although these technologies can provide a smoother road toward a modern system, they often result in an acceptable solution that falls short of the ideal.[26]

See also

References

  1. 12Gardner, D: "Not just a nip and tuck, application modernization extends the lifecycle of legacy code assets", ZDNet, October 24, 2006
  2. Wolfart, Daniele; Assunção, Wesley; da Silva, Ivonei; Domingos, Diogo; Schmeing, Ederson; Villaca, Guilherme; Paza, Diogo (June 2021). "Modernizing Legacy Systems with Microservices: A Roadmap". Evaluation and Assessment in Software Engineering. pp. 149–159. doi:10.1145/3463274.3463334. ISBN 9781450390538. S2CID 235474042.
  3. Bartoszuk, Cezary; Dąbrowski, Robert; Stencel, Krzysztof; Timoszuk, Grzegorz (June 2013). "On quick comprehension and assessment of software". Proceedings of the 14th International Conference on Computer Systems and Technologies. pp. 161–168. doi:10.1145/2516775.2516806. ISBN 9781450320214. S2CID 17034416 . 
  4. La racionalidad limitada de Simon. Orígenes y uso en la teoría económica.
  5. Stefan Van Der Zijden; Thomas Klinect. "Creación de un caso empresarial de modernización de aplicaciones multiplataforma" .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  6. 1 2 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), "ARTIST Methodology and Framework: A Novel Approach for the Migration of Legacy Software on the Cloud" (PDF) , 15.º Simposio Internacional sobre Algoritmos Simbólicos y Numéricos para la Computación Científica (2013 ) (PDF) , 15.º Simposio Internacional sobre Algoritmos Simbólicos y Numéricos para la Computación Científica (SYNASC), IEEE, pp. 424–431 , doi : 10.1109/SYNASC.2013.62 , ISBN  978-1-4799-3036-4, S2CID 8150975 
  7. 1 2 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), CiteSeerX 10.1.1.675.6225 , doi : 10.12694/scpe.v15i2.980 
  8. El proyecto de investigación ARTIST
  9. Ian Warren; Jane Ransom (2002). «Renaissance: A Method to Support Software System Evolution». 26.ª Conferencia Internacional Anual sobre Software y Aplicaciones Informáticas . págs. 415–420 . CiteSeerX 10.1.1.137.7362 . doi : 10.1109/CMPSAC.2002.1045037 . ISBN   978-0-7695-1727-8. S2CID 16563177 . 
  10. Izzet Sahin; Fatemeh 'Mariam' Zahedi (2001). "Análisis de políticas para garantía, mantenimiento y actualización de sistemas de software". Journal of Software Maintenance: Research and Practice . 13 (6): 469– 493. doi : 10.1002/smr.242 .
  11. Jussi Koskinen; Jarmo Ahonen; Heikki Lintinen; henna sívula; Tero Tilus. "Estimación del valor empresarial de las modernizaciones de software" .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  12. "Migración a VB6. ¿Por qué comprometer la seguridad de los datos cuando se puede migrar a plataformas más modernas? "
  13. Lewis, G.; Morris, E.; Smith, D.; O'Brien, L. (2005). "Técnica de migración y reutilización orientada a servicios (SMART)". 13.º Taller Internacional IEEE sobre Tecnología de Software y Práctica de Ingeniería (STEP'05) . pp. 222–229 . doi : 10.1109/step.2005.24 . hdl : 10344/2208 . ISBN  0-7695-2639-X. S2CID 18912663 . 
  14. Lewis, Grace A.; Plakosh, Daniel; Seacord, Robert C. (2003). Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices . Addison-Wesley Professional. pp. 27–37 . ISBN  0321118847.
  15. 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 .
  16. Andrea De Lucia; Eugenio Pompella y Silvio Stefanucci (julio de 2002). «Estimación del esfuerzo para el mantenimiento correctivo de software» (PDF) . Actas de la 14.ª conferencia internacional sobre ingeniería de software e ingeniería del conocimiento - SEKE '02 . SEKE '02 Ischia, Italia. pág. 409. doi : 10.1145/568760.568831 . ISBN  978-1581135565. S2CID 10627249 . {{cite book}}: CS1 maint: ubicación ( enlace ) CS1 maint: falta el editor de ubicación ( enlace )
  17. De Lucia, A.; Fasolino, AR; Pompelle, E. (2001). "Un marco de decisión 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. S2CID 32184332 . 
  18. ^ 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 . 
  19. "Desafíos de la modernización de sistemas heredados" . dev.to. 2 de diciembre de 2025. Consultado el 2 de diciembre de 2025 .
  20. Santhosh G. Ramakrishna; VV (mayo de 2007). "Modernización del legado logístico" (PDF) . Infosys Technologies Limited.
  21. C. Ghezzi (2018). «Apoyando la evolución confiable». En Gruhn, Volker; Striemer, Rüdiger (eds.). La esencia de la ingeniería de software . pp. 32–33 . doi : 10.1007/978-3-319-73897-0 . ISBN  978-3-319-73897-0. S2CID 49187426 . 
  22. "Modernización de mainframes en pocas palabras" . Modernization Hub . Consultado el 23 de agosto de 2017 .
  23. Serie, AS (ISO 9001:2008). Modernización de sistemas heredados: transformación en una empresa ágil. Un documento técnico sobre la modernización de sistemas heredados.
  24. SearchCIO.com
  25. SK Mishra; DS Kushwaha; AK Misra (julio-agosto de 2009). "Creación de componentes de software reutilizables a partir de sistemas heredados orientados a objetos mediante ingeniería inversa" . The Journal of Object Technology . 8 (5): 133– 152. doi : 10.5381/jot.2009.8.5.a3 .
  26. Moltke, H. v. (miércoles, 22 de enero de 2003, 21:55). Modernización con gestión de riesgos. Discurso de Jawaharlal Nehru ante el Parlamento, Nueva Delhi: Seacord.book.