Introducción a la Arquitectura de Software Fundamentos de Arquitectura de Software - Platzi ¿Qué es arquitectura de software? A C B D E “La estructura del sistema, compuesta por elementos de software, sus propiedades visibles y sus relaciones.” Software Architecture in Practice (Bass, Clements & Kazman, 2003) “El conjunto de decisiones principales de diseño tomadas para el sistema.” Software Architecture: Foundations, Theory and Practice (Taylor, 2010) “(...) la arquitectura se reduce a las cosas importantes, cualesquiera que sean.” Patterns of Enterprise Application Architecture (Fowler, 2002) Ejemplos Twitter Flujo de datos - Flux ¿Qué hace un arquitecto de software? Analiza el contexto Posee herramientas de diseño Requerimientos Atributos de Calidad Modelo Estilos de Arquitectura Razonamientos Riesgos Patrones de Arquitectura Documentación Restricciones Tácticas Implementación Funcionales No Funcionales Diseña la solución En escala En crecimiento En start-ups La importancia de la comunicación Sistemas monolíticos Sistemas distribuidos ~ un solo equipo, una sola pieza de software. ~ múltiples equipos independientes, múltiples sistemas intercomunicados. “Las organizaciones que diseñan sistemas están limitadas a producir diseños que son copias de las estructuras de comunicación de estas organizaciones” Ley de Conway (Melvin Conway, 1967) Objetivos del arquitecto Manager Dev Usuario Cliente QA Permite equiposEs confiable y estará Es fácil Entregaindependientes a tiempo y de yimplementar disponible cuando lo Es fácil de comprobar y de mantener dentro del presupuesto necesite comunicación clara Sistema Arquitectura y Metodologías Metodologías tradicionales Etapa de diseño Definición del Problema Requerimientos Restricciones Riesgos Arquitecto Modelo de arquitectura Documentación Metodologías Ágiles Métricas y alertas Planear la arquitectura Prioridades del backlog Despliegue continuo Planeamiento del sprint (re)evaluar la arquitectura Implementar la arquitectura Retrospectivas Producto en uso