Documentos de Académico
Documentos de Profesional
Documentos de Cultura
software
+Escala
+Complejidad
+Riesgo
+Costos
-Tiempo
-Recursos
-Infraestructura
El caso Twitter
Arquitectura de Software -
Introducción
¿Para qué es útil la Arquitectura de
Software?
Arquitectura de Software -
Introducción
¿Para qué es útil la Arquitectura de
Software?
Arquitectura de Software -
Introducción
¿Para qué es útil la Arquitectura de
Software?
Arquitectura de Software -
Introducción
¿Para qué más?
• Productividad en el desarrollo:
actualmente solamente se reutiliza
el código y las estructuras de datos.
Arquitectura de Software -
Introducción
¿Para qué más?
Arquitectura de Software -
Introducción
Ejemplos de arquitecturas
Arquitectura de Software -
Introducción
Ejemplos de arquitecturas
Arquitectura de Software -
Introducción
Ejemplos de arquitecturas
Arquitectura de Software -
Introducción
Ejemplos de arquitecturas
Arquitectura de Software -
Introducción
Ejemplos de arquitecturas
Arquitectura de Software -
Introducción
Discusión
¿Qué es una mala arquitectura?
¿Cómo es una buena arquitectura?
• Los módulos deben diseñarse con
el principio de separación de
intereses (distintos grupos de
trabajo pueden desarrollarlos
independientemente).
Arquitectura de Software -
Introducción
¿Cómo es una buena arquitectura?
• Cada módulo tendrá una interfaz
definida que oculta a los otros
módulos los aspectos cambiables.
Arquitectura de Software -
Introducción
¿Cómo es una buena arquitectura?
• La arquitectura no debe depender
de una versión particular de un
producto comercial. De ser así,
éste debe estar estructurado de
modo que sea fácil y barato
cambiarlo.
Arquitectura de Software -
Introducción
¿Cómo se hace una buena arquitectura?
Arquitectura de Software -
Introducción
¿Cómo se hace una buena arquitectura?
Arquitectura de Software -
Introducción
¿Cómo se hace una buena arquitectura?
Arquitectura de Software -
Introducción
¿Cómo se hace una buena arquitectura?
Arquitectura de Software -
Introducción
Etilos arquitectónicos
¿Qué son los estilos?
• Son soluciones probadas y entendibles
aplicadas a la organización de un sistema
(partes, componentes, capas, conectores, etc).
41
Evolución de Arquitecturas: Aplicaciones
monolíticas
Evolución de Arquitecturas:
Cliente Servidor
Evolución de Arquitecturas:
Cliente Servidor Mejorada
Evolución de Arquitecturas: 3 Capas
Evolución de Arquitecturas: 3 Capas
Evolución de Arquitecturas: N Capas
Evolución de Arquitecturas:
Message Oriented
Evolución de Arquitecturas: SOA
Portal de
Servicios Integrados
Sistema
Batch Cluster de
Servidores de
Aplicaciones
Base de
Datos
Servidor de
Procesos
(BPM) Aplicaciones
Legadas
Evolución de Arquitecturas: Otros…
• Peer-to-peer
• Event-driven architecture
• Filtros
• …..
Lecturas
• When Good Architecture Goes Bad:
http://www.methodsandtools.com/archive/ar
chive.php?id=85
• The Golden Age of Software Architecture
La arquitectura y el proceso de
desarrollo de software
Discusión
¿Cuáles son los pasos para desarrollar
un software?
Arquitectura en el proceso de desarrollo
Requisitos
Programación
– Hacer explícitas las decisiones.
Test
– Permitir análisis a nivel de sistemas.
Mantenimiento
Arquitectura de Software - 54
Introducción
¿Cómo se plantea una arquitectura
y un diseño?
• Hay decisiones CLAVE que deben
ser atacadas/resueltas en
cualquier arquitectura,
independientemente de enfoque
arquitectónico que se elija.
Arquitectura de Software -
Introducción
¿Cómo se plantea una arquitectura
y un diseño?
• Como mínimo, se debe determinar
el tipo de aplicación que se está
construyendo, los estilos
arquitectónicos que serán
utilizados y como se manejarán los
temas transversales (cross-cutting
concerns). Arquitectura de Software -
Introducción
Tipos de aplicaciones donde
impacta la arquitectura
• Web application
• Rich Internet Client application
• Mobile application
• Rich Client application (Desktop)
• Service application
• Embedded application
• entre otros...
Discusión
¿Existe alguna diferencia entre
arquitectura y diseño de software?
Arquitectura Vs. Diseño
Arquitectura Diseño
Nivel de Alto nivel Bajo nivel. Enfoque
Abstracción específico en detalles
Entregables Planear subsistemas, interfaces Diseño detallado
con sistemas externos, componentes.
servicios horizontales,
frameworks, componentes Especificaciones de
reutilizables, prototipo codificación
arquitectónico
Código
Las decisiones
Implementación
de arquitectura
Diseño causan un alto
impacto en los
Arquitectura proyectos de IT
Discusión
¿Qué relación hay entre las técnicas de
desarrollo formales de SW y la
arquitectura?
Arquitectura y Procesos de Desarrollo
Principios Fundamentales de los procesos modernos:
– Desarrollo iterativo e incremental.
– Centrado en la arquitectura.
– Mejores prácticas de diseño.
– Dirigido por los casos de uso.
– Basada en Modelos.
– Testing…
Definición de Arquitectura en RUP
Etapas de Desarrollo Basado en Arquitectura (RUP)
Arquitectura de Software -
Introducción
Etapas en la definición de una Arquitectura
en RUP
Definir arquitectura
candidata
Evaluar Req.
No Funcionales (NFR)
Refinar y Seleccionar
la Arquitectura
Prototipar la
Arquitectura
Use-Case View