Durante mi carrera, tuve que trabajar en el desafío de modernizar varios productos de software. Como se explica en mi artículo, “Equilibrio de la deuda técnica”, debemos desarrollar un plan para avanzar. El esfuerzo para elevar el listón debe evaluarse continuamente para estar listo para tomar cualquier decisión de “hacer o morir”.
En nuestro mundo digital en rápida evolución, ¡todas las compañías de software deben enfrentar esta situación!
La modernización del software, también conocida como modernización heredada, se refiere al trabajo de convertir, reescribir o portar un programa heredado para llevarlo a los últimos estándares en informática y software. Esto incluye cosas como lenguaje de programación moderno, bibliotecas de software, protocolos, tecnologías en la nube (arquitectura sin servidor, microservicios, etc.), plataformas de hardware, etc.
- ¿Por qué es importante elegir el SDLC correcto al desarrollar un sistema?
- ¿Cómo hacen la transición los programadores del uso de código abierto para crearlo?
- ¿Qué es un buen software para gestionar un proyecto con mis compañeros de estudios?
- ¿Qué habilidades debo aprender para convertirme en un desarrollador full-stack?
- ¿Puede el comprobador manual cambiar al perfil de BI?
Quizás este sea un buen lugar para definir software heredado , para ayudarnos a comprender mejor lo que está en juego cuando hablamos de modernización de software.
El software heredado es cualquier aplicación empresarial basada en tecnología más antigua que todavía se utiliza para admitir las funciones centrales de una empresa u organización. Son monolíticos, no tienen módulos o código reutilizables, y son difíciles de entender o modificar.
El software heredado a menudo está muy parcheado, envuelto y construido encima, lo que significa que cualquier intento de modernizarlos podría tener efectos catastróficos (significa un alto TCO). Además, tales “jeroglíficos” antiguos a menudo requieren hardware antiguo que ya no se fabrica nuevo. El mantenimiento de tales sistemas a menudo requiere horas de búsqueda por parte de TI de hardware obsoleto en subastas y foros en línea, que, francamente, difícilmente puede considerarse profesional, especialmente para las grandes corporaciones.
La modernización del software no es un proyecto para entrar a la ligera o descuidadamente, ni es algo que pueda ignorarse. Hay demasiado en juego en este mundo digital muy volátil y en rápida evolución para ignorar esta área crítica.
Si bien es fácil (y completamente erróneo) pensar que la gran mayoría de los sistemas actuales se basan exclusivamente en Java y en sistemas basados en la web, la realidad es que la mayoría de las grandes organizaciones aún ejecutan sus aplicaciones críticas en entornos heredados.
Mientras se avanza lentamente, a menudo cuando la necesidad finalmente triunfa sobre la terquedad ejecutiva, se han gastado billones en aplicaciones COBOL a principios del siglo XXI, solo, y decenas de miles de millones de transacciones COBOL continúan ocurriendo, todos los días. Según un artículo de febrero de 2017 de Alexander Ziegel sobre el blog de capacitación y uso de IBM, el 80 por ciento de las transacciones comerciales diarias del mundo dependen de COBOL.
Si bien COBOL, originalmente diseñado en 1959, ya no es popular para la creación de nuevo software, debido al menos en parte a la disminución del número de programadores experimentados, sigue siendo la columna vertebral de muchas aplicaciones comerciales. Gran parte del trabajo de programación que se realiza con COBOL en 2017 se centra en la modernización y la migración a nuevos sistemas.
Además, con algunas estimaciones recientes que sugieren que del 60% al 80% del presupuesto de TI de una empresa promedio se gasta solo en el mantenimiento de sistemas y aplicaciones mainframe existentes, se está volviendo demasiado costoso y lento para no considerar la modernización del software.
Al mismo tiempo, debe tenerse en cuenta el hecho de que, si bien una empresa se desarrolla a lo largo de los años, se basa en una gran acumulación de experiencia y estrategia, incluso algo inestimable, en su software heredado existente que no puede descartarse simplemente en aras de la modernización . A menudo, estas son las cosas que le dan a una empresa su ventaja competitiva en su nicho.
Hay una serie de factores que han obstaculizado o ralentizado el progreso de la modernización del software de lo que algunos han calificado con precisión como “bomba de tiempo” de programas muy parcheados. El costo de actualizar estos gigantes a menudo patentados para ejecutarse en la nube y los sistemas SaaS es muy desalentador, sin embargo, el costo de no actualizar ya no se puede ignorar. Muchos de estos sistemas han estado funcionando con soporte vital de TI durante demasiado tiempo y tienen un riesgo inminente de morir en cualquier momento.
Por lo tanto, los pasos que se toman en el proceso de modernización a menudo deben ser incrementales, abordando primero los riesgos más apremiantes.
Algunos de los riesgos que simplemente deben considerarse que existen en prácticamente todos los sistemas heredados son:
- El hardware (infraestructura) está obsoleto y las piezas son cada vez más difíciles de encontrar.
- Cada vez es más difícil encontrar ingenieros que conozcan el idioma.
- La tecnología ya no es respaldada por sus proveedores.
- El costo de mantenimiento está aumentando más allá de los niveles aceptables en un mercado cada vez más competitivo
Quizás la razón número uno, hoy, en el siglo XXI, por la cual muchas compañías no han abordado el tema de la modernización del software, o simplemente han “pateado la lata” aún más adelante, es porque no han evaluado adecuadamente su situación. . El hecho es que cualquier compañía con planes para continuar más allá de este año necesita evaluar los riesgos y las recompensas involucradas en mantener el status quo versus la modernización.
En muchos casos, simplemente evaluar y evaluar el sistema existente con todos sus defectos y el potencial de una falla catastrófica debería ser un incentivo suficiente para la modernización del software, independientemente de lo que cueste, ya que el costo de no hacerlo es impensable.
Por lo tanto, el primer paso que debe tomar cualquier empresa que se ejecute en un sistema heredado pero que planee continuar más allá de 2017 es una evaluación completa de sus sistemas. Esto debe incluir tanto las aplicaciones heredadas como la infraestructura, ya que son co-dependientes. El costo de no hacer nada debe compararse cuidadosamente con el costo de hacer algo. Las expectativas futuras para la longevidad de la organización obviamente son un factor muy importante en dicha evaluación. Si se espera que la compañía exista en el futuro, es más importante que nunca asegurarse de que el sistema la lleve allí.
Por lo tanto, cualquier evaluación realista debe incluir:
- Una evaluación adecuada y sobria de las aplicaciones basada en los requisitos existentes y futuros.
- identificación de costos de operación, mantenimiento y reemplazo existentes, actuales y futuros
- los riesgos involucrados con cualquier tipo de falla
- Los beneficios potenciales de usar servicios administrados, compartidos o en la nube
Por supuesto, para cualquier tipo de estrategia comercial, el costo de implementar un plan, como la modernización del software, debe compararse con el valor del negocio. ¿El plan aumentará la rentabilidad y reducirá los costos generales?
más…