Las empresas suelen tener tres opciones a la hora de modernizar el código heredado: refactorizar, migrar o reescribir. También pueden combinar cualquiera de estos enfoques. Decidir qué camino seguir requiere la participación tanto del equipo de ingeniería de software como del equipo de liderazgo empresarial.
La refactorización de código altera la estructura interna del código fuente sin modificar su comportamiento externo ni afectar a su funcionalidad. Es menos probable que estos pequeños cambios introduzcan errores y pueden dar como resultado un código claro y limpio que sea más fácil de mantener.
En el caso del código heredado, los equipos pueden comenzar con modificaciones menores para cada módulo, como el cambio de nombre de las variables, la eliminación de métodos duplicados o no utilizados y la estandarización del formato. A continuación, pueden proceder con una reestructuración más basada en la lógica, como dividir los métodos grandes en otros más pequeños, simplificar los condicionales complejos y mover características entre funciones para reducir las dependencias y mejorar la cohesión.
La migración es otra ruta hacia la modernización del código heredado. Esto implica migrar todo o parte del código a plataformas o pilas tecnológicas más nuevas, como la transición de una arquitectura monolítica a microservicios o el cambio de local a la nube. Es importante comprobar la compatibilidad con la plataforma o la pila tecnológica y confirmar si los proveedores ofrecen algún tipo de soporte durante la migración.
Reescribir el código heredado suele ser el último recurso, ya que implica crear código completamente nuevo para reemplazar el código antiguo. Este es un proyecto nuevo en sí mismo, una tarea enorme que podría requerir un equipo de desarrollo independiente para manejarla.
Tanto la migración como la reescritura pueden ser una tarea desalentadora para enormes bases de código heredado, por lo que los equipos pueden considerar la estrategia de "higo estrangulador"3. Una higuera estranguladora crece en lo alto de la superficie de un árbol, sus raíces descienden hasta el suelo, envolviendo lentamente a su árbol anfitrión en una red constrictora que finalmente hace que se marchite.
En términos de sistemas heredados, los equipos pueden migrar o reescribir de forma incremental pequeños fragmentos de código hasta que todo el código base se haya cambiado a un marco moderno o se haya desarrollado en un lenguaje de programación actual. Sin embargo, los equipos deben crear una arquitectura de transición para que el código existente y el nuevo código coexistan. Esta arquitectura de transición se retirará una vez que se complete la migración o la reescritura3.