A pesar de los problemas y riesgos relacionados con el software obsoleto, algunas empresas aún carecen de iniciativas de modernización de sus software legacy. La mayoría de ellos solo considera la reingeniería de la solución actual en caso de una emergencia, como por ejemplo una interrupción completa del sistema. Aún así, en estos días podemos ver un cambio positivo hacia la innovación. Cuando en 2018 solo el 5 por ciento de los CIO se consideraban a sí mismos «innovadores digitales», 2019 muestra que ya el 32 por ciento de ellos afirmaba desempeñar un papel de liderazgo en la innovación en toda la organización.
Para cerrar la brecha entre las ofertas actuales y las expectativas de los clientes, las empresas deben reconsiderar sus modelos de negocio y prepararlos para la tecnología digital. Sin embargo, el software legacy es solo un aspecto del problema. A veces, un problema mucho mayor es la mentalidad que conlleva. Es por eso que demostrar un caso comercial para la modernización del software es el primer desafío que debe enfrentar la parte iniciadora.
El caso de negocios para la modernización del software
Entonces, ¿por qué modernizar los sistemas legacy? Los siguientes beneficios demuestran que la modernización del sistema legacy es una parte vital de la digitalización empresarial general.
Ventaja Competitiva
Al operar en una industria dominada por gigantes tecnológicos de décadas de antigüedad, tiene la oportunidad de superar a los competidores simplemente ofreciendo una solución moderna y liviana.
Clientes/empleados felices
La experiencia del usuario y los estándares de diseño han evolucionado significativamente en los últimos años. Al introducir una interfaz de usuario moderna y elegante y experiencias intuitivas centradas en el usuario, puede mejorar la satisfacción del cliente y el rendimiento de los empleados, aumentando así sus ingresos.
Negocio listo para el futuro
Al reemplazar su sistema heredado con una solución moderna, se asegura de que su empresa esté lista para evolucionar y expandirse, manteniéndose al día con los avances tecnológicos. Además, mantenerse al día con las últimas tendencias tecnológicas crea una cultura interna de agilidad empresarial e innovación en su empresa.
Destrabar las oportunidades del big data
Las soluciones de almacenamiento obsoletas le impiden acceder a sus datos y hacer uso de ellos. Se requiere la migración y optimización de la base de datos para aprovechar con éxito las oportunidades de big data.
Mejor desempeño y confiabilidad
Las fallas de TI heredadas son una de las razones más comunes de demoras en la industria del transporte aéreo, así como en muchas otras. Por lo tanto, la modernización de los sistemas puede ayudarlo a reducir los riesgos de interrupciones y las pérdidas relacionadas.
Sin embargo, a pesar de todos los beneficios, la resistencia a la modernización suele estar muy enraizada.
Considerando los desafíos y riesgos
Normalmente se usan dos argumentos principales cuando se habla de una iniciativa de modernización de software. Esos son el tiempo y costo involucrados. De hecho, una solución que a un equipo de desarrolladores le llevó años implementar no se puede volver a crear en una semana, incluso si contrata al doble de desarrolladores para manejar la tarea. Por lo tanto, en algunos casos el costo de reingeniería de software puede exceder las inversiones iniciales.
Los desafíos derivados de la modernización de los legacy incluyen los siguientes:
- El personal generalmente no está dispuesto a adaptarse a los cambios de gestión. La motivación, la formación y el coaching los presionarán en esa dirección, pero supondrán un riesgo y costo adicionales.
- Si hay varios sistemas heredados dentro de una corporación, su modernización debe articularse y priorizarse en un programa corporativo que considere el esfuerzo requerido y la ventana de tiempo para cada sistema individualmente. Por el contrario, la modernización simultánea puede generar un impacto catastrófico que no se absorbe fácilmente.
- Inicialmente adaptado a las funcionalidades específicas de la plataforma en la que se ejecutaba la aplicación, el código heredado debe manejarse con especial cuidado, incluso si algunas partes pueden parecer que ya no son relevantes y necesitan ser reemplazadas. Por la misma razón, es importante asegurarse al migrar que el software subyacente cumplirá con las nuevas reglas y requisitos de intercambio de datos dictados por las aplicaciones cliente y los recursos de soporte.
- Tener que lidiar con innumerables líneas de código que solo abordan un proceso corporativo determinado puede ser un verdadero dolor de cabeza, especialmente si hay escasez de habilidades.
Además de los desafíos, existen múltiples riesgos a evitar. Algunos de ellos han sido descritos por un grupo de investigadores de la Universidad Carnegie Mellon en 1999. El informe «Por qué fracasan los proyectos de reingeniería» enumera las siguientes razones para el fracaso del esfuerzo de reingeniería heredado:
- La organización adopta inadvertidamente una estrategia de reingeniería defectuosa o incompleta.
- La organización hace un uso inadecuado de consultores externos y contratistas externos.
- La fuerza laboral está atada a tecnologías antiguas con programas de capacitación inadecuados.
- La organización no tiene su sistema heredado bajo control.
- Demasiada obtención y validación de requerimientos.
- La arquitectura de software no es una consideración primaria de reingeniería.
- No existe la noción de un «proceso de reingeniería» separado y distinto .
- Hay una planificación inadecuada o una resolución inadecuada para seguir los planes.
- La gerencia carece de compromiso a largo plazo.
- La gerencia predetermina las decisiones técnicas.
Por lo tanto, una reingeniería de software exitosa requiere una estrategia de modernización sólida y una gran atención al detalle.
Estimación de los costos de modernización del sistema
La forma más cara de modernizar es no modernizar en absoluto. Pero, como en cualquier proyecto de desarrollo de software, necesitará una estimación de sus esfuerzos, que generalmente se realiza utilizando metodologías y herramientas específicas.
COCOMO (Modelo de Costes Constructivos) Esta metodología fue creada en la década de 1980 y utiliza un cálculo simple: Hombre – Meses = K1 * (Miles de líneas de código) (elevado a) K2, donde K1 y K2 son los valores constantes elegidos con respecto al tamaño del equipo, su experiencia y la complejidad del sistema. Hay dos modelos en esta metodología: COCOMO I se utiliza para estimar el mantenimiento y COCOMO II calcula los esfuerzos de mantenimiento, migración y reingeniería.
FPA (Análisis de puntos de función) Otro modelo clásico, FPA, utiliza requisitos funcionales para evaluar la funcionalidad entregada al usuario, que se manifiesta en UFP o puntos de funciones no ajustados. Estos puntos se cuentan y evalúan en diferentes KPI del proyecto, como rendimiento o calidad. FPA ha inspirado marcos tan populares como ESTIMACS y SPQR/20, cada uno de los cuales considera diferentes factores en la medición de puntos de función. Mientras que SPQR se enfoca en estimar la complejidad de los algoritmos, el código y las estructuras de datos, ESTIMACS considera el lado comercial de un proyecto, como el personal o las horas de esfuerzo.
El modelo de Putnam . Esta metodología permite estimar el tiempo y el esfuerzo necesarios para terminar el proyecto si conoce su tamaño. El tamaño generalmente se mide en líneas de código. Este es fácilmente el método de estimación más simple, ya que no requiere datos difíciles de obtener: cualquier empresa puede recopilar información sobre el tiempo, el esfuerzo (horas hombre) y el tamaño de un proyecto anterior. El modelo también permite corregir el cronograma si cambia el tamaño o estimar el crecimiento del esfuerzo cuando se acerca la fecha de entrega.
Lista de verificación para una modernización exitosa de la aplicación
Aquí está nuestra lista de verificación de siete cosas a considerar para un proyecto de modernización de software exitoso:
- Evalúe el estado actual de los sistemas heredados. El software heredado no siempre se incluye en definiciones «antiguas» o «obsoletas». Hay más aspectos a evaluar a la hora de identificar el legado. Es por eso que debe evaluar todos los sistemas implementados para descubrir los problemas actuales y potenciales que pueden surgir en el futuro cercano. La evaluación debe ser sistemática y detallada: estudie todos los aspectos de su tecnología, desde el código y la arquitectura hasta el aspecto visual, teniendo en cuenta sus planes comerciales futuros para el crecimiento del producto.
- Seleccione el enfoque de modernización que sería el más rápido para ofrecer valor. Según la evaluación realizada en la primera fase, elija el enfoque de modernización que mejor se adapte a sus necesidades y le ayudará a obtener resultados rápidamente. Aparte de los enfoques de modernización, considere los productos existentes que puede utilizar en su lugar. No es necesario reinventar la rueda si existe una solución SaaS disponible a una fracción del costo. Sin embargo, si su sistema resuelve tareas bastante específicas o si desea poder construir más funciones sobre él, los servicios de desarrollo de productos personalizados pueden ser adecuados para usted. En este caso, la adopción de prácticas de desarrollo de software ágiles puede ayudarlo a acelerar el proceso y ofrecer valor rápidamente.
- Repensar la arquitectura y priorizar la simplicidad. Los sistemas heredados a menudo no funcionan según las necesidades debido a su estructura demasiado compleja. Al modernizar su sistema, menos es más en términos de arquitectura y funcionalidad. Comience implementando solo las características más importantes. Considere un enfoque de arquitectura de microservicios para hacer que su producto sea escalable. Además, asegúrese de que la aplicación recién lanzada funcione bien con el resto de las herramientas utilizadas en su empresa de forma predeterminada. Si planea cambiar alguna de las herramientas pronto, considere varias opciones posibles y tenga en cuenta sus requisitos al crear su aplicación.
- Elija la pila de tecnología para ofrecer un rendimiento y una experiencia de usuario óptimos. Cuando rediseñe su sistema, asegúrese de utilizar una pila de tecnología sólida y preparada para el futuro. La elección de tecnologías debería depender completamente de las especificaciones del producto. Consulte con su personal de TI interno o diríjase a una consultoría técnica profesional. La pila tecnológica correcta contribuye a crear un producto eficaz, confiable y eficiente. Adopte un sólido proceso de prueba y garantía de calidad para ofrecer los mejores resultados.
- Documento para el crecimiento futuro del sistema. Para evitar los mismos errores que le hicieron rediseñar su solución actual, introduzca (o adopte las mejores prácticas utilizadas por otras empresas) un conjunto de estándares de codificación y procesos internos. El código limpio y ordenado hace que su software sea más fácil de comprender, ampliar y mantener en el futuro.
- Cree un cronograma de retiro y soporte por separado para su sistema heredado. Incluso si tiene un sistema nuevo que se ejecuta sin problemas, seguirá necesitando su software heredado, por si acaso. Entonces, no lo mate todo a la vez. Documente y archive sus soluciones para que pueda acceder fácilmente a ellas y consultarlas cuando sea necesario. Por lo tanto, debe respaldar su sistema heredado durante algún tiempo y planificar retirar su sistema heredado solo cuando su nuevo producto esté en funcionamiento.
- Presupuesto para capacitación y actualizaciones del sistema. Al trabajar con los sistemas antiguos durante años, es posible que sus empleados necesiten algo de tiempo y orientación para dominar el nuevo software. Por lo tanto, prepárese para invertir en la capacitación del personal para un mejor desempeño y eficiencia. Además, planifique actualizaciones periódicas del sistema. Si no mantiene su producto actualizado, pronto se enfrentará a otro desafío de modernización.
Al trabajar con los sistemas antiguos durante años, es posible que sus empleados necesiten algo de tiempo y orientación para dominar el nuevo software. Por lo tanto, prepárese para invertir en la capacitación del personal para un mejor desempeño y eficiencia. Además, planifique actualizaciones periódicas del sistema. Si no mantiene su producto actualizado, pronto se enfrentará a otro desafío de modernización.
Mejores prácticas de modernización de software heredado
Después de realizar una evaluación exhaustiva del marco heredado, es hora de decidir las prácticas de modernización que se deben aplicar.
Estrategias de modernización y reemplazo de sistemas empresariales heredados
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.
La 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. La principal ventaja de ADM es que aborda la modernización desde una perspectiva basada en el análisis y el diseño, en lugar de las migraciones de origen a origen. El uso principal de la modernización impulsada por la arquitectura se presenta en las formas de independencia e interoperabilidad de la plataforma y el lenguaje. ADM permitirá que los proyectos con software obsoleto sean más ágiles
SABA es un marco de alto nivel para planificar problemas técnicos y organizativos durante la evolución y migración del sistema heredado. El método iterativo de SABA ayuda a tomar decisiones entre las diferentes opciones de modernización, desde descartar el software antiguo por completo hasta congelarlo o subcontratarlo. El marco aborda varios problemas del sistema heredado al mismo tiempo que proporciona un medio para analizar las implicaciones futuras de las opciones de software.
El 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. Para acceder a los datos heredados, las aplicaciones en el nuevo entorno utilizan una puerta de enlace inversa. El modelo de ingeniería inversa es una buena opción para proyectos largos y de alto costo que pueden verse afectados por el ritmo de la tecnología.
El modelo de decisión basado en el valor (VDM) de Visaggio selecciona el proceso de renovación de software más adecuado basándose en métricas técnicas y económicas. Se aplica cuando los rendimientos económicos o la calidad de un sistema heredado son menores de lo esperado y ayuda a decidir una mejor manera de revitalizar el sistema.
La contribución de DevOps permite acelerar los procesos de modernización heredados mediante la implementación rápida de nuevas versiones de software con un bajo grado de error o errores mientras sigue cumpliendo con el entorno operativo de TI de destino.
El modelo Renaissance propone una modernización en dos etapas: primero, construyendo una base sólida para la evolución del sistema, a menudo con la ayuda de la reingeniería, y segundo, aplicando la mejora continua por el resto de la vida del sistema. Este método respalda la noción de que el sistema nunca debería necesitar otra modernización, ya que se cambiará de forma iterativa.
WMU (Warrants, Maintenance, Upgrade) es un método centrado en el cliente que elige estrategias de mantenimiento basadas en la satisfacción del cliente. Para ello, se debe recopilar y analizar mucha información, como un índice de satisfacción del cliente ( Net Promoter Score , por ejemplo), la calidad de la implementación (número de quejas de los clientes), la volatilidad del mercado (como el número de competidores), el expectativas y más.
