
Re-Engineering Legacy Software
Chris Birchall
- Editorial
- Manning
- Año
- 2016
- Páginas
- ~380
- Nivel
- Intermedio
De qué trata
Guía práctica y metodológica orientada a revitalizar, refactorizar y modernizar bases de código heredadas y monolitos desactualizados sin necesidad de recurrir a reescrituras totales a ciegas. Aunque sus principios son aplicables a cualquier lenguaje orientado a objetos, el libro se apoya principalmente en el ecosistema Java (Java 7/8 en la JVM) y está dirigido a desarrolladores de nivel intermedio a avanzado, líderes de equipo y arquitectos que se enfrentan a proyectos reales con código frágil, dependencias acopladas y escasa o nula documentación.
El contenido enseña a trazar una estrategia sistemática para diagnosticar el estado del software y sanearlo de forma incremental. Birchall aborda técnicas para escribir pruebas unitarias sobre código que no fue diseñado para testeo, la introducción de inyección de dependencias para desacoplar componentes y la partición gradual de monolitos mediante interfaces limpias. En el plano de infraestructura y operaciones, muestra cómo modernizar la cadena de construcción y despliegue sustituyendo scripts manuales por herramientas como Maven y Gradle, incorporando análisis estático con SonarQube y automatizando entornos locales y de despliegue mediante Vagrant y Ansible.
A lo largo de la obra se examina la descomposición gradual de una aplicación monolítica de gestión de logs, demostrando cómo aislar responsabilidades paso a paso. El mayor aporte del libro es su realismo: trasciende la simple refactorización sintáctica para incluir la gestión de expectativas con la dirección técnica y la adopción de prácticas DevOps que eviten volver a generar deuda técnica. No aborda tecnologías modernas de microservicios contenerizados como Docker o Kubernetes, pero ofrece una base sólida y metódica para sanear sistemas en producción antes de plantearse migraciones mayores.
- Refactorización
- Código legado
- Arquitectura de software
- Monolitos
- Inyección de dependencias
- Pruebas automatizadas
- Java
- Maven
- Gradle
- Ansible
- Vagrant
- Deuda técnica
¿Cómo enseña?
Teoría + práctica
- ✗ Sin ejercicios
- ✓ Incluye proyectos
Proyectos
Monolito de gestión de logs refactorizado y modularizado
Descomposición progresiva de una aplicación monolítica heredada de gestión de logs en módulos desacoplados, incorporando inyección de dependencias, pruebas automatizadas y entornos reproducibles con Vagrant y Ansible.

