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.
  • Business-Focus Approach: The modernization strategy is tied to the business value added by the modernization. It implies defining the intersection of the criticality to the business of an applications with its technical quality.[1] This approach pushed by Gartner puts the Application Portfolio Analysis (APA) as a prerequisite of modernization decisions for an application portfolio to measures software health, risks, complexity and cost providing insight into application strengths and weaknesses.[5]
  • Model Driven Engineering (MDE) is being investigated as an approach for reverse engineering and then forward engineering software code.[6][7][8]
  • Renaissance[9] Method for iteratively evaluating legacy systems, from technical, business, and organizational perspectives.
  • WMU (Warrants, Maintenance, Upgrade) is a model for choosing appropriate maintenance strategies based on aspired customer satisfaction level and their effects on it.[10][11]

Modernization risk management

Software modernization[12] is a risky, difficult, long, and highly intellectual process involving multiple stakeholders. The software modernization tasks are supported by various tools related to Model-driven architecture from the Object Management Group and processes such as ISO/IEC 14764:2006 or Service-Oriented Migration and Reuse Technique (SMART).[13] Software modernization implies various manual and automated tasks performed by specialized knowledge workers. Tools are supporting project participants' tasks and help organize the collaboration and sequencing of the work.

A general software modernization management approach [14] taking risks (both technological and business objectives) explicitly into account consists of:

  • Analysis the existing portfolio: measuring the technical quality and business value. Confronting the technical quality with business goals to define the right strategy: replace, no go, low priority, good candidate.
  • Identify stakeholders: all persons involved in the software modernization: developers, testers, customers, end-users, architects, …
  • Understand the requirements: requirements are divided in 4 categories: user, system, constraints and nonfunctional.
  • Create the Business Case: the business case supports the decision process in considering different approaches when decision makers need it.
  • 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.

La migración del software instalado de un ordenador antiguo a uno nuevo se puede realizar con una herramienta de migración de software. El término migración también se utiliza simplemente para referirse al proceso de transferir datos de un dispositivo de almacenamiento a otro.

Artículos, documentos 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 como para dejarlas sin usar y demasiado costosas para reproducirlas. La industria del software y los investigadores han prestado recientemente mayor atención al desarrollo de software basado en componentes para mejorar la productividad y acelerar el tiempo de comercialización. [ 25 ]

Modernización con gestión de riesgos

En general, tres clases de tecnologías 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. Tecnologías modernas, que a menudo representan el nirvana para quienes están inmersos en tecnología de décadas de antigüedad y que contienen la promesa (a menudo incumplida) de sistemas de información empresariales potentes, eficaces y de fácil mantenimiento. Tecnologías ofrecidas por los proveedores de sistemas heredados: estas tecnologías proporcionan una ruta de actualización para aquellos demasiado tímidos o prudentes para lanzarse de cabeza a la última ola de ofertas de TI. Los proveedores de sistemas heredados ofrecen estas tecnologías por una simple razón: proporcionar una ruta de actualización para la modernización del sistema que no requiera abandonar la comodidad del "matriz del mainframe". Si bien estas tecnologías pueden proporcionar un camino más fluido hacia un sistema moderno, a menudo resultan en una solución aceptable que no alcanza el ideal. [ 26 ]

Véase también

Referencias

  1. 1 2 Gardner, D: "No se trata solo de un retoque superficial, la modernización de aplicaciones extiende el ciclo de vida de los activos de código heredados" , ZDNet , 24 de octubre de 2006
  2. ^ 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. S2CID 235474042 . 
  3. 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. 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.