El documento describe varios estilos arquitectónicos de software. Define qué es un estilo arquitectónico y cómo estos definen la estructura de un sistema en términos de patrones, componentes y conectores. Luego describe estilos como monolítico, tuberías y filtros, capas, repositorio/pizarrón, control centralizado, dirigido por eventos, cliente-servidor y distribuido/P2P. Cada estilo tiene un impacto diferente en acoplamiento, cohesión y otras propiedades del sistema.
4. Estilos Arquitectónicos
Art Deco Modernismo
aunque conste que sigo pensando que la comparación
del software con la ingeniería civil es muy desafortunada
4
5. Estilos Arquitectónicos
aunque conste que sigo pensando que la comparación
del software con la ingeniería civil es muy desafortunada 5
6. ¿Estilos Arquitectónicos?
Un estilo arquitectónico define una familia
de sistemas (cierto tipo de sistemas) en
términos de patrones estructurales, de
control, de comunicación, etcétera
Sommerville (Cap 11) 6
7. Estilos Arquitectónicos
un estilo arquitectónico describe
Un conjunto de componentes y
(con sus responsabilidades)
Un conjunto de conectores entre componentes
(comunicación, coordinación, cooperación, etcétera)
Restricciones que definen cómo se integran
los componentes para formar el sistema
Modelos que permiten comprender las
propiedades de un sistema general en función de las
propiedades conocidas de las partes que lo integran
¿no suena todo esto sospechosamente parecido al
concepto de arquitectura de software?
7
Fuente: Pressman (Cap 10)
8. Diseño Arquitectónico
La arquitectura de un sistema de software
puede basarse en uno (o en varios)
modelos o estilos arquitectónicos bien
conocidos
Sommerville (Cap 11)
un estilo arquitectónico define
(a alto nivel)
la arquitectura de un sistema
8
9. Estilos Arquitectónicos
para todas los
estilos arquitectónicos
(arquitecturas)
es necesario preguntarse:
¿en qué contextos aplica?
¿qué ventajas tiene el estilo?
¿qué desventajas tiene?
¿cómo se combina con otros estilos?
9
10. Estilos Arquitectónicos
Impacto en los Requisitos NF
Seguridad Confiabilidad Rendimiento Extensibilidad
Eficiencia Facilidad de
Mantenibilidad
Memoria/Ejecución Prueba
Portabilidad Disponibilidad Reusabilidad Escalabilidad
...otras...
¿de qué forma impacta el uso de un estilo
en las propiedades del sistema?
10
11. Estilos Arquitectónicos
¿Acoplamiento / Cohesión?
¿qué hay sobre estos dos conceptos?
Acoplamiento Cohesión
¿será posible analizar un estilo arquitectónico
en función de estos dos conceptos?
11
12. Estilos Arquitectónicos
¿La importancia de la responsabilidad?
Responsabilidades
¿cuáles son las responsabilidades de
cada bloque/parte de la arquitectura?
12
14. Arquitectura Monolítica
Una arquitectura monolítica describe
una aplicación en la que toda la
funcionalidad del sistema (ej. acceso
a datos, interfaz de usuario, lógica,
etcétera) está implementada y
mezclada en un solo bloque.
Esto, en la gran mayoría de los
casos, no es una buena idea...
¿por qué?
Sistema
TODO EL
SISTEMA
¿impacto sobre el acoplamiento y la cohesión
responsabilidades, otras características?
Fuente: http://en.wikipedia.org/wiki/Monolithic_application 14
15. Arquitectura Monolítica
(Un Ejemplo)
Código cliente general,
Programa Cliente interfaces de usuario,
lógica, todo mezclado
con el SQL, con el
código encargado del
acceso a la BD, etc.
Si es necesario cambiar el código de acceso a la BD,
(por ejemplo, migrar de MySQL a PostgreSQL)
¿el trabajo se hace fácil o difícil? 15
16. Arquitectura Monolítica
(Un Ejemplo / Una Mejora)
Código cliente general,
Programa Cliente interfaces de usuario,
lógica, etc.
Código SQL junto al
código encargado del
acceso a la BD
DAOs / DTO
Si es necesario cambiar el código de acceso a la BD,
(por ejemplo, migrar de MySQL a PostgreSQL)
¿el trabajo se hace fácil o difícil? 16
17. Estilos Arquitectónicos
(Tuberías y Filtros)
Filtros Tuberías
(Transformación (Flujo de
de Datos / Datos /
Información) Información)
Filtro 3
Filtro 1 Filtro 4 Filtro 5
Filtro 2
Tuberías y Filtros
¿Impacto sobre el acoplamiento y la cohesión?
17
20. Arquitectura por Capas
API
(Application
Capa 1 Programming
Mas Seguridad / Protección
Interface)
Interfaz
Menos Abstracción
Capa 2
...
Capa N
Arquitectura por Capas
¿Impacto sobre el acoplamiento y la cohesión? 20
21. Arquitectura por Capas
(La Infame Arquitectura a 3 Capas)
Capa de
Presentación
Capa de
Proceso /
(Interfaz
Negocio
Gráfica de Capa de
Usuario) Persistencia BD
(Lógica /
Reglas de
(HTML, Swing,
Negocio)
Qt, GTK,
etcétera)
Arquitectura a tres Capas
(muy utilizada en aplicaciones empresariales) 21
23. Estilos Arquitectónicos
(Repositorio / Pizarrón)
Aplicación / Aplicación / Aplicación /
Modulo 1 Modulo 2 Modulo 3
Repositorio
(Base de Datos, Sistema de Archivos,
Memoria Compartida, etcétera)
Aplicación / Aplicación /
...
Modulo 4 Modulo N
Repositorio / Pizarrón
¿Impacto sobre el acoplamiento y la cohesión?
23
24. Estilos Arquitectónicos
(Control Centralizado - Síncrono)
Programa
Principal
Rutina 1 Rutina 2 Rutina 3
Rutina 1.1 Rutina 1.2 Rutina 2.1 Rutina 2.1 Rutina 3.1 Rutina 3.2
Control Centralizado
24
25. Estilos Arquitectónicos
(Control Centralizado - Asíncrono)
Procesos Procesos
Tipo 1 Tipo 4
(Ej: Sensores) (Ej: Actuadores)
Controlador
del Sistema
Procesos Procesos Procesos
Tipo 2 Tipo 3 Tipo 5
(Ej: Cálculo) (Ej: Fallos) (Ej: Fallos)
Control Centralizado
¿Impacto sobre el acoplamiento y la cohesión? 25
26. Estilos Arquitectónicos
(Sistemas Dirigidos por Eventos)
Cada subsistema genera eventos según su condición y define que
eventos de otros subsistemas desea atender
Subsistema Subsistema Subsistema
...
1 2 N
Manejador de Eventos
El manejador de eventos se encarga de enviar los eventos
generados a aquellos sistemas interesados en recibirlos
¿Impacto sobre el acoplamiento y la cohesión? 26
27. Arquitectura Cliente-Servidor
Petición
Respuesta
Cliente 1
Red Servidor 1
...
Internet,
Cliente 2 LAN, WAN
...
Servidor N
Cliente N
Cliente Servidor
27
29. Arquitectura WEB
(Contenido Estático)
Petición: GET index.html
Cliente
navegador
WEB Servidor
(Ej. Firefox)
servidor
WEB
index.html (Ej. Apache)
Respuesta:
Arquitectura WEB
(Contenido Estático)
29
30. Arquitectura WEB
(Contenido Dinámico)
Petición: GET index.php
Cliente
navegador
WEB
Servidor Servidor
(Ej. Firefox)
resultado
en HTML
motor de
Respuesta: PHP BD
index.php
Arquitectura WEB
(Contenido Dinámico)
30
31. Diseño Arquitectónico
¿cómo se podría combinar
el estilo cliente-servidor
con los otros estilos que
hemos discutido?
31
32. Estilos Arquitectónicos
(Sistema Distribuido / Arquitecturas Peer To Peer)
P2 P6
P5
Un par puede
jugar un rol de P1
cliente y/o
de servidor,
dependiendo de P7
P4
las necesidades
del momento
P3 P8
P9
Cada uno de los pares descubre a sus otros pares y
establecen conexiones al mismo nivel
(no de forma jerárquica)
cooperando para lograr un objetivo determinado 32
33. Estilos Arquitectónicos
(Arquitecturas de Referencia)
Normalmente se obtienen
por medio del estudio de
un tipo de aplicación
(de un dominio en
particular)
Representan una
arquitectura “ideal” que
incluye todas las
características que cierto
tipo de sistema
podría/debería incorporar
33