
Fundamentals of Software Architecture
Mark Richards, Neal Ford
- Editorial
- O'Reilly
- Año
- 2020
- Páginas
- ~422
- Nivel
- Intermedio
De qué trata
Obra de referencia escrita por Mark Richards y Neal Ford que aborda la arquitectura de software moderna desde una perspectiva de ingeniería rigurosa, medible e independiente de cualquier lenguaje de programación específico. Está orientada a desarrolladores de software de nivel intermedio o sénior, aspirantes a arquitectos y arquitectos en activo que necesitan aprender a justificar, validar y defender sus decisiones de diseño estructural más allá del código. Se requieren conocimientos consolidados de programación orientada a objetos, patrones de diseño de software y familiaridad con el ciclo de vida del desarrollo de aplicaciones empresariales.
El texto profundiza en la identificación y medición de las características arquitectónicas no funcionales (las conocidas «-ilidades», como escalabilidad, elasticidad, disponibilidad, rendimiento y tolerancia a fallos), introduciendo el gobierno automatizado mediante funciones de fitness (fitness functions con herramientas como ArchUnit). Evalúa formalmente métricas de modularidad, cohesión y acoplamiento (como connascence, abstracción e inestabilidad), y analiza exhaustivamente ocho estilos arquitectónicos clásicos y distribuidos: arquitectura en capas (layered), microkernel (plug-in), pipelines, basada en servicios, dirigida por eventos (event-driven), space-based, service-oriented orchestration y microservicios. También enseña a formalizar decisiones técnicas mediante Architectural Decision Records (ADRs), matrices de análisis de riesgo y diagramado de componentes.
La parte práctica se articula mediante «katas arquitectónicas» (Architecture Katas) y el desglose de casos de negocio (como el estudio transversal de Silicon Sandwiches), desafiando al lector a analizar requerimientos y seleccionar la «arquitectura menos mala» evaluando sus compromisos (trade-offs). El gran aporte del libro radica en sistematizar la disciplina y preparar al profesional en habilidades clave como negociación con stakeholders, liderazgo técnico y facilitación de reuniones. No incluye código de implementación ni aprovisionamiento de infraestructura en la nube, por lo que conviene complementarlo con literatura práctica de cloud computing y DevOps.
- Arquitectura de software
- Características arquitectónicas
- Métricas de modularidad
- Funciones de fitness
- Estilos arquitectónicos
- Microservicios
- Arquitectura dirigida por eventos
- Architectural Decision Records (ADR)
- Evaluación de trade-offs
- Liderazgo técnico
¿Cómo enseña?
Teoría + práctica
- ✓ Incluye ejercicios
- ✗ Sin proyectos

