Existen una serie de estrategias, métodos, enfoques y técnicas para abordar modernización de aplicaciones. Aquí te proporcionamos un resumen para que puedas conducir tu proyecto de modernización de software legacy.
El siguiente diagrama es un buen mapa mental de lo que te explicaremos en los párrafos de este artículo inmediatamente a continuación:
 
														1. Estrategias de modernización y reemplazo de sistemas legacy empresariales
Una estrategia bien elegida es un patrón eficiente para administrar el proceso de modernización del sistema heredado. Estas son las estrategias de modernización heredadas más populares que debe considerar al planificar su transformación tecnológica.
Modernización impulsada por la arquitectura (ADM) es una estrategia coordinada para comprender y promover los activos de software existentes, como su funcionalidad, componentes o requisitos.
SABA es un marco de alto nivel para planificar cuestiones organizativas y técnicas durante la evolución y migración del sistema heredado.
Modelo de ingeniería inversa es una estrategia en la que las aplicaciones heredadas se migran gradualmente al nuevo entorno, pero la migración de datos heredados es la última fase del proceso de migración.
Modelo de decisión basado en el valor de Visaggio (VDM) selecciona el proceso de renovación de software más adecuado basándose en métricas técnicas y económicas.
WMU (Warrants, Maintenance, Upgrade) es un método centrado en el cliente que elige estrategias de mantenimiento basadas en la satisfacción del cliente.
2. Métodos de modernización de legacys
El sistema evoluciona influenciado por diferentes métodos de desarrollo, desde agregar una línea de código hasta una completa reimplementación. Hay dos métodos para lidiar con el problema del legado que involucran cambios estructurales importantes: revolucionario (big-bang) y evolutivo (por fases). Sin embargo, ambos tienen ventajas y desventajas.
El método revolucionario gira en torno al desarrollo y ejecución de una estrategia de sustitución de sistemas heredados. Su implementación requiere cerrar el sistema antiguo y construir uno nuevo desde cero.
El método evolutivo presupone un proceso de modernización de software sistemático, paso a paso. Suele ser menos doloroso: no interrumpe los principales procesos comerciales e implica riesgos significativamente menores para la empresa.
3. Enfoques para la modernización de sistemas heredados
A continuación, sugerimos tres enfoques de modernización para ayudarlo a elegir el que mejor se adapte a sus desafíos heredados actuales.
Migración y mejoras. Este es uno de los enfoques más populares para la modernización de aplicaciones y la forma más sencilla de asegurarse de que su producto seguirá satisfaciendo sus necesidades durante los próximos años. Presupone la migración del sistema (normalmente rehosting utilizando soluciones en la nube) y algunas mejoras menores. Esto incluye actualizaciones de UI / UX, optimización del rendimiento y migración de bases de datos.
Corrección y crecimiento. Si la pila de tecnología de productos es relativamente moderna y no representa una amenaza para el crecimiento futuro del producto, la modernización puede implicar algunas mejoras / correcciones menores. Esto podría ser la optimización de la arquitectura o la refactorización de código, las actualizaciones de UX o la optimización del rendimiento sin cambios significativos en la lógica comercial del producto. Tan pronto como se actualice el producto, puede agregar más funciones. Pueden ser integraciones de terceros o módulos personalizados.
Reingeniería de Software Completa. Considerado el enfoque más extremo, la extracción de características se basa en su estrategia comercial y perspectivas de crecimiento. Esto significa que, para rediseñar el producto, debe identificar las características que aún son cruciales para su negocio y las que ya no se utilizan o no se requieren. Después de eso, las características requeridas se priorizan y se modifican si es necesario. Tomando el sistema heredado como base, el equipo crea un producto actualizado con capacidades coincidentes pero mejor desempeño, apariencia, tecnologías modernas y arquitectura escalable. Dependiendo del análisis de funcionalidad y la priorización, el nuevo producto podría coincidir en un 100% con la versión anterior en términos de funcionalidad o carecer de algunas características que ya no son necesarias / utilizadas.
4. Técnicas de modernización de sistemas legacy
Los enfoques de modernización heredados tienen técnicas específicas aplicadas para actualizar tecnologías obsoletas.
Encapsulamiento es una técnica para reutilizar componentes de software heredados. Mientras deja el código en su entorno actual, la encapsulación lo conecta a la nueva presentación y accede a las capas a través de una API. Eso ayuda a aprovechar la aplicación y ampliar sus características y valor.
Rehosting significa mover una aplicación de mainframe sin cambios a otra infraestructura física, virtual o en la nube. Esta técnica tiene el menor costo y riesgo. Si bien los proyectos de reingeniería pueden llevar años, el rehosting es más rápido y mantiene intacta la lógica empresarial subyacente, lo que significa un impacto negativo cero en la empresa. Como resultado, el sistema funciona exactamente de la misma manera.
Replataforma – migraciones incluye un poco de actualización para ajustar el código a una nueva plataforma mientras se preserva la funcionalidad existente.
Refactorización de código presupone reestructurar y optimizar el código existente sin cambiar su comportamiento externo. La refactorización de un componente de la aplicación permite resolver problemas tecnológicos y mejorar las características y la estructura del componente.
Rearquitectura significa cambiar a una nueva arquitectura de aplicación mientras se modifica el código para aprovechar al máximo las nuevas y mejores capacidades de la plataforma. Esta técnica tiene un costo y un riesgo medios, pero también resultados medios.
Reconstrucción (rediseño) reescribe los componentes de la aplicación desde cero conservando su alcance y especificaciones. Al mismo tiempo, el rediseño de su aplicación abre la puerta a nuevas características, funcionalidades y procesos que aprovechan las capacidades de la tecnología moderna y las plataformas de terceros.
Reemplazo. A veces es mejor reemplazar la aplicación por completo con una herramienta diferente en lugar de invertir en su modernización. Si bien la reutilización de la lógica empresarial heredada existente no es posible en este caso, en este proceso puede haber algún nivel de reingeniería o personalización de paquetes y reescritura de la lógica empresarial.
 
														Técnicas de modernización ordenadas según el esfuerzo que realizan y el impacto que aportan a los componentes de la aplicación. Fuente: Gartner
Si quieres saber más detalles o los pros y contras de las distintas estrategias, métodos, enfoques y técnicas puedes leer el artículo original en: https://www.altexsoft.com/whitepapers/legacy-system-modernization-how-to-transform-the-enterprise-for-digital-future/
