Arquitectura de software: qué es y por qué importa

Fuentes: Software Architecture Guide

La arquitectura de software es un concepto difuso que se refiere a los aspectos más importantes del diseño interno de un sistema. Según Martin Fowler, una buena arquitectura apoya la evolución y está profundamente entrelazada con la programación. Ralph Johnson, en un intercambio de correos, propone que la arquitectura es 'lo que importa', es decir, las decisiones de diseño que los desarrolladores expertos consideran cruciales. Esta visión evita definiciones objetivas y se centra en la capacidad de reconocer los elementos arquitectónicos clave.

La arquitectura importa porque una mala arquitectura genera 'cruft' (código que entorpece), lo que ralentiza la entrega de nuevas funcionalidades e incrementa los defectos. Contrario a la intuición, una alta calidad interna en la arquitectura acelera la entrega, ya que reduce la deuda técnica. Los desarrolladores experimentados estiman que atender a la calidad interna da frutos en semanas, no meses.

En cuanto a la arquitectura de aplicaciones, Fowler define una aplicación como una construcción social: un cuerpo de código visto como unidad por desarrolladores, funcionalidad vista como unidad por clientes, e iniciativa vista como unidad presupuestaria. La diferencia clave con la arquitectura empresarial es el grado de propósito unificado.

El artículo también aborda patrones como los microservicios (dividir una aplicación en servicios pequeños e independientes), desplazamiento de legado (reemplazar sistemas antiguos de forma incremental y cultural), micro frontends (dividir el frontend para equipos múltiples) y arquitecturas de GUI (como MVC). Estos enfoques ayudan a gestionar la complejidad y permiten la evolución continua del software.