Ford, Kua, Parsons — Building Evolutionary Architectures, O'Reilly 2017 / 2nd ed. 2022
El problema que resuelve
Los sistemas de software existen en entornos que cambian constantemente — negocio, tecnología, regulación, escala. Una arquitectura diseñada completamente al inicio toma todas sus decisiones en el momento de menor información disponible. Cuando el entorno cambia — y cambia — la arquitectura se convierte en el principal obstáculo al cambio, no en su habilitador. El costo de modificarla crece exponencialmente porque todo fue diseñado para un mundo que ya no existe.
Qué es
Una arquitectura que soporta cambio guiado e incremental a lo largo de múltiples dimensiones. La palabra clave es guiado: no es arquitectura que simplemente tolera el cambio, sino que está diseñada para preservar lo que importa mientras todo lo demás evoluciona.
Cómo lo resuelve
Desplaza la pregunta de "¿cómo diseño esto perfectamente ahora?" a "¿qué propiedades debo preservar siempre, y qué puedo decidir después cuando sepa más?". Eso permite tomar decisiones arquitectónicas en el momento correcto — con la información correcta — en lugar de tomarlas todas al inicio.
Tres componentes principales
1. Fitness Functions — el mecanismo central. Criterios objetivos y medibles que definen qué propiedades deben preservarse a medida que el sistema evoluciona. Seguridad, performance, acoplamiento — cualquier propiedad que importa se convierte en una función evaluable automáticamente en cada cambio. No "la arquitectura es segura" sino "la arquitectura pasa estos tests de seguridad en cada iteración".
2. Acoplamiento apropiado — no evita el acoplamiento, lo gestiona. El acoplamiento al core de negocio es el más caro de cambiar; por eso es el último en tocarse, no el primero. Esto es exactamente lo que justifica construir la capa intermedia antes de ir al core.
3. Cambio incremental — como principio arquitectónico, no como metodología de desarrollo. Una arquitectura que solo puede cambiar en grandes saltos no es evolutiva aunque esté perfectamente documentada.