Un Enfoque Académico y Crítico sobre las Arquitecturas “Ágiles”
La arquitectura del software constituye uno de los pilares fundamentales para el desarrollo de sistemas escalables, mantenibles y adaptables. En las últimas dos décadas, diversos enfoques arquitectónicos han emergido con el objetivo de mejorar la calidad estructural del software. Uno de los estilos que ha ganado notoriedad es la denominada arquitectura hexagonal o patrón de puertos y adaptadores, propuesta por Alistair Cockburn. Sin embargo, surge una cuestión esencial: ¿estamos realmente ante una nueva arquitectura o simplemente ante una reinterpretación de principios clásicos como los del Modelo Vista Controlador (MVC) y los principios “SOLID”? En este artículo, abordamos el tema desde una perspectiva técnica y crítica, con una argumentación basada en fundamentos académicos y prácticos.
Arquitectura del Software vs Arquitectura del Sistema
Es imprescindible comenzar distinguiendo entre arquitectura del software y arquitectura del sistema. Mientras que la primera se refiere a la organización interna de los paquetes y módulos que componen el código fuente, la segunda aborda la distribución física de los componentes en el entorno de ejecución (hardware, redes, servicios distribuidos, etc.).
En el ámbito del software, los principios de diseño orientado a objetos como bajo acoplamiento y alta cohesión se elevan al nivel de paquetes y capas arquitectónicas. Estos principios no solo son esenciales para la mantenibilidad del sistema, sino que también permiten una escalabilidad evolutiva y una mayor facilidad para la prueba y el despliegue.
Modelo Vista Controlador (MVC): Fundamento Estructural Clásico
El MVC surge originalmente en el contexto de las interfaces gráficas de usuario, particularmente en el lenguaje Smalltalk. No obstante, su aplicación ha trascendido hacia la estructuración general del software, especialmente en entornos empresariales y arquitecturas web.
- Modelo: Encapsula los datos y la lógica de negocio.
- Vista: Representa la salida visual o textual hacia el usuario o sistema externo.
- Controlador: Media entre la vista y el modelo, interpretando acciones del usuario y delegando operaciones en el modelo.
A pesar de la multiplicidad de variantes impuestas por frameworks modernos, MVC sigue siendo la piedra angular para diseños modulares y desacoplados.
El flujo dual de la evolución del software: Tecnología vs Negocio
El software evoluciona como el mar, guiado por dos corrientes simultáneas:
- Corriente caliente: Representa la evolución tecnológica (librerías, frameworks, patrones emergentes, paradigmas de interfaz).
- Corriente fría: Refiere a la evolución del negocio (cambios en reglas, modelos de dominio, regulaciones).
Una buena arquitectura debe permitir que ambas corrientes evolucionen de forma independiente. Esto requiere sistemas con bajo acoplamiento entre la lógica del negocio y los mecanismos técnicos de entrada/salida.
Arquitectura Hexagonal: Contextualización y Análisis
La arquitectura hexagonal o “puertos y adaptadores”, propone desacoplar el core de la aplicación (modelos y casos de uso) de sus dependencias tecnológicas (interfaces gráficas, bases de datos, servicios externos). En lugar de interactuar directamente con estas dependencias, se utilizan interfaces que permiten inyectar implementaciones concretas en tiempo de ejecución o configuración.
Si bien esta aproximación enfatiza la importancia de la separación de responsabilidades y el principio de inversión de dependencias (Dependency Inversion Principle, DIP), no constituye una revolución conceptual. De hecho, MVC correctamente implementado, junto a los principios SOLID, ya contempla estas buenas prácticas.
Redefiniendo “Aplicación”: ¿Qué incluye y qué excluye?
Cockburn delimita el concepto de “aplicación” al conjunto de controladores y modelos, dejando fuera las vistas (o adaptadores). Esta definición resulta úctil en entornos donde se busca probar o desplegar el core de negocio de forma aislada, sin necesidad de replicar el entorno de ejecución completo.
Sin embargo, si ya se aplica una arquitectura por capas con desacoplamiento mediante interfaces, esta separación explícita es redundante. MVC y derivados permiten organizar el código de forma que los cambios en la tecnología de interfaz no afecten al dominio de negocio.
Arquitecturas “Ágiles”: Un Reetiquetado de Conceptos Clásicos
Arquitecturas como:
- Clean Architecture (Robert C. Martin),
- Onion Architecture,
- Union Architecture,
promueven la misma filosofía: independencia de la lógica del negocio respecto a las tecnologías externas. Todas abogan por el uso de interfaces, inyección de dependencias y estructuras en capas concéntricas que colocan el “dominio” en el centro.
Desde una perspectiva crítica, estos enfoques pueden verse como renombramientos modernos de principios ya establecidos. En esencia, constituyen formas de MVC/”SOLID” con nuevas nomenclaturas y enfoques de marketing.
Una Crítica al Movimiento Ágil: Entre la Filosofía y la Industria
Algunos firmantes del Manifiesto Ágil han expresado su desaprobación por la deriva comercial y dogmática del movimiento. Términos como “flácido” (Martín Fowler) o “oscuro” (Ron Jeffries) reflejan una percepción de que el ágil se ha vaciado de contenido técnico real para convertirse en un producto de consumo masivo.
Desde esta óptica, la arquitectura hexagonal puede ser vista como parte de este mismo fenómeno: una práctica de diseño clásico envuelta en una narrativa de novedad.
Volver a los Fundamentos
El diseño arquitectónico del software no debe estar sujeto a modas ni nombres llamativos. La verdadera excelencia arquitectónica radica en:
- La comprensión profunda del dominio del problema,
- La aplicación disciplinada de principios de diseño,
- La capacidad de crear sistemas mantenibles, testeables y extensibles.
La arquitectura hexagonal, al igual que otras propuestas “ágiles”, puede ser una buena guía visual o pedagógica, pero no debe sustituir el pensamiento crítico ni la solidez del conocimiento técnico. Volver a los principios fundamentales como SOLID, la separación de capas y la comprensión real de las necesidades del negocio, sigue siendo el camino más sólido hacia el diseño de software de calidad.
Lecturas recomendadas:
- Clean Architecture, Robert C. Martin
- Domain-Driven Design, Eric Evans
- The Pragmatic Programmer, Hunt & Thomas
- Software Architecture in Practice, Bass, Clements & Kazman