La modernización de sistemas heredados, también conocida como modernización de software o modernización de plataforma, se refiere a la conversión, reescritura o portación de un sistema heredado a un lenguaje de programación de computadora, librerías de software, protocolos o plataforma de hardware modernos. La transformación de sistemas heredados 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.Gardner, D: "Not just a nip and tuck, application modernization extends the lifecycle of legacy code assets", ZDNet, October 24, 2006

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 debe basarse en una “racionalidad limitada”. 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 de sistemas heredados es a menudo un proyecto grande y 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 del 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 una aplicación con su calidad técnica. 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. La ingeniería dirigida por modelos (MDE) se está investigando como un enfoque para la ingeniería inversa que pueda luego usarse para ingeniería directa. Renaissance: 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 según el nivel esperado de satisfacción del cliente y sus efectos en él.

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 del software están respaldadas por diversas herramientas relacionadas con la arquitectura basada en modelos de la OMG (Grupo de gestión de objetos) y procesos como ISO/IEC 14764:2006 o la técnica de migración y reutilización orientada a servicios (SMART). 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 tiene en cuenta los riesgos (tanto los tecnológicos como los de los objetivos del negocio) y consiste en:

Analizar la cartera existente: midiendo la calidad técnica y el valor empresarial. Confrontando la calidad técnica con los objetivos comerciales para definir la estrategia correcta: reemplazar, no migrar, prioridad baja, buen candidato. Identificar a las partes interesadas: todas las personas involucradas en la modernización del software: desarrolladores, testers, clientes, usuarios finales, arquitectos, etc. Comprender los requisitos: los requisitos se dividen en 4 categorías: de usuario, de sistema, limitaciones y no funcionales. Crear el caso de negocio: el caso de negocio da soporte al proceso de decisión al considerar diferentes enfoques cuando los tomadores 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 objetivo: esto permite comparar y contrastar tecnologías y capacidades con los requisitos y el sistema existente. Definir estrategia de modernización: 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. Esto 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 o "Early Maintenance Effort Estimation" en inglés) 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

Desafíos en la modernización de sistemas heredados Los principales problemas con un sistema heredado incluyen sistemas muy antiguos con falta de documentación, falta de expertos/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 principal: 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 de cambios organizativos: los usuarios deben volver a capacitarse y equiparse 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 de una sola vez. Es necesario adoptar un enfoque de modernización por etapas. Sin embargo, esto trae su propio conjunto de desafíos, como la proporción de una cobertura del negocio completa con una funcionalidad superpuesta bien entendida e implementada, duplicación de datos y desarrollo de sistemas desechables para unir los sistemas heredados con los nuevos durante las fases intermedias. Gestión deficiente de la calidad estructural (ver calidad del software): lo que resulta en una aplicación modernizada que conlleva más problemas de seguridad, rendimiento, confiabilidad y mantenimiento que el sistema original. Costos y duración significativos de la modernización: la modernización de un sistema heredado complejo de misión crítica puede requerir grandes inversiones y tener un sistema modernizado en pleno funcionamiento podría tomar 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 del software: es extremadamente raro que los desarrolladores creen código 100% original en estos días en cualquier cosa construida después de 2010. A menudo utilizan marcos y componentes de software de código abierto y de terceros para ganar eficiencia, velocidad y capacidad de 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 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 la modernización de sistemas heredados; 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 (Rehost, Refactor, Revise, Rebuild, Replace).