View
1.188
Download
0
Category
Preview:
Citation preview
1
Estilos Arquitectónicos(Arquitectura de Software para Practicantes)
Universidad de los AndesDemián Gutierrez
Marzo 2013
2
Diseño Arquitectónico
Diseño Arquitectónico
Arquitectura del Software
Bibliotecas /Componentes
Patrones de Diseño
Clases / Funciones
Frameworks(Marcos)
Estilos Arquitectónicos
3
Diseño Arquitectónico
¿qué es un estilo?
¿qué es un estiloarquitectónico?
4
Estilos Arquitectónicos
Art Deco Modernismo
aunque conste que sigo pensando que la comparacióndel software con la ingeniería civil es muy desafortunada
5
Estilos Arquitectónicos
aunque conste que sigo pensando que la comparacióndel software con la ingeniería civil es muy desafortunada
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)
7
Estilos Arquitectónicos
Un conjunto de conectores entre componentes(comunicación, coordinación, cooperación, etcétera)
Restricciones que definen cómo se integranlos componentes para formar el sistema
Un conjunto de componentes y (con sus responsabilidades)
Modelos que permiten comprender laspropiedades de un sistema general en función de laspropiedades conocidas de las partes que lo integran
un estilo arquitectónico describe
Fuente: Pressman (Cap 10)
¿no suena todo esto sospechosamente parecido alconcepto de arquitectura de software?
8
Diseño Arquitectónico
un estilo arquitectónico define(a alto nivel)
la arquitectura de un sistema
La arquitectura de un sistema de software puede basarse en uno (o en varios)
modelos o estilos arquitectónicos bien conocidos
Sommerville (Cap 11)
9
Estilos Arquitectónicos
para todas losestilos 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?
10
Estilos ArquitectónicosImpacto en los Requisitos NF
EscalabilidadPortabilidad ReusabilidadDisponibilidad
Facilidad dePrueba
EficienciaMemoria/EjecuciónMantenibilidad
¿de qué forma impacta el uso de un estiloen las propiedades del sistema?
Seguridad RendimientoConfiabilidad Extensibilidad
...otras...
11
Estilos Arquitectónicos¿Acoplamiento / Cohesión?
Acoplamiento Cohesión
¿será posible analizar un estilo arquitectónicoen función de estos dos conceptos?
¿qué hay sobre estos dos conceptos?
12
Estilos Arquitectónicos¿La importancia de la responsabilidad?
Responsabilidades
¿cuáles son las responsabilidades decada bloque/parte de la arquitectura?
13
Diseño Arquitectónico
algunos estilosarquitectónicos bien
conocidos
14
Arquitectura Monolítica
Fuente: http://en.wikipedia.org/wiki/Monolithic_application
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ónresponsabilidades, otras características?
15
Arquitectura Monolítica(Un Ejemplo)
Programa ClienteCódigo cliente general, 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?
16
Arquitectura Monolítica(Un Ejemplo / Una Mejora)
Programa Cliente
DAOs / DTO
Código SQL junto al código encargado del
acceso a la BD
Código cliente general, interfaces de usuario,
lógica, 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?
17
Estilos Arquitectónicos(Tuberías y Filtros)
Filtro 1
Filtro 2
Filtro 3
Filtro 5Filtro 4
Tuberías(Flujo de Datos /
Información)
Filtros(Transformación
de Datos / Información)
Tuberías y Filtros
¿Impacto sobre el acoplamiento y la cohesión?
18
Estilos Arquitectónicos(Tuberías y Filtros)
Tuberías y Filtros
19
Estilos Arquitectónicos(Tuberías y Filtros)
Tuberías y FiltrosEl “pipeline” de OpenGL
20
Arquitectura por Capas
Arquitectura por Capas
¿Impacto sobre el acoplamiento y la cohesión?
Capa 1
Capa 2
Capa N
...
API (Application
Programming Interface)
Interfaz
Mas S
e guridad / Prote cción
Menos A
bstrac ción
21
Arquitectura por Capas(La Infame Arquitectura a 3 Capas)
Capa de Presentación
(Interfaz Gráfica de Usuario)
(HTML, Swing, Qt, GTK, etcétera)
Capa de Proceso / Negocio
(Lógica / Reglas de Negocio)
Capa de Persistencia BD
Arquitectura a tres Capas
(muy utilizada en aplicaciones empresariales)
22
Arquitectura por Capas(Sistemas Operativos)
Arquitectura por Capas
23
Estilos Arquitectónicos(Repositorio / Pizarrón)
Aplicación / Modulo 1
Aplicación / Modulo 2
Aplicación / Modulo 3
Aplicación / Modulo 4 ...
Aplicación / Modulo N
Repositorio(Base de Datos, Sistema de Archivos,
Memoria Compartida, etcétera)
Repositorio / Pizarrón
¿Impacto sobre el acoplamiento y la cohesión?
24
Estilos Arquitectónicos(Control Centralizado - Síncrono)
Control Centralizado
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
25
Estilos Arquitectónicos(Control Centralizado - Asíncrono)
Control Centralizado
¿Impacto sobre el acoplamiento y la cohesión?
Controladordel Sistema
ProcesosTipo 1
(Ej: Sensores)
ProcesosTipo 2
(Ej: Cálculo)
ProcesosTipo 4
(Ej: Actuadores)
ProcesosTipo 3
(Ej: Fallos)
ProcesosTipo 5
(Ej: Fallos)
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
Manejador de Eventos
Subsistema 1
Subsistema 2
...Subsistema
N
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?
27
Arquitectura Cliente-Servidor
Cliente 1
Cliente 2
Cliente N
...
Servidor 1
Servidor N
...
Petición
Respuesta
RedInternet,
LAN, WAN
Cliente Servidor
28
Arquitectura Cliente-Servidor(Liviano vs Pesado)
¿Cliente “Liviano” vs Cliente Pesado?
ClienteServidor
Petición
Respuesta
Red
29
Arquitectura WEB(Contenido Estático)
Petición: GET index.html
Respuesta:
Servidor
Cliente
navegadorWEB
(Ej. Firefox)
servidorWEB
(Ej. Apache)index.html
Arquitectura WEB(Contenido Estático)
30
Arquitectura WEB(Contenido Dinámico)
Arquitectura WEB(Contenido Dinámico)
Petición: GET index.php
Respuesta:
Servidor
Cliente
navegadorWEB
(Ej. Firefox)
motor dePHP
resultadoen HTML
Servidor
BD
index.php
31
Diseño Arquitectónico
¿cómo se podría combinarel estilo cliente-servidorcon los otros estilos que
hemos discutido?
32
Estilos Arquitectónicos(Sistema Distribuido / Arquitecturas Peer To Peer)
P1
P7P4
P6P2
P8P3
P5
P9
Un par puede jugar un rol de
cliente y/ode servidor,
dependiendo de las necesidades
del momento
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
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
34
Gracias
¡Gracias!
Recommended