Clase 08a estilos_arquitectonicos

34
1 Estilos Arquitectónicos (Arquitectura de Software para Practicantes) Universidad de los Andes Demián Gutierrez Marzo 2013

Transcript of Clase 08a estilos_arquitectonicos

Page 1: Clase 08a estilos_arquitectonicos

1

Estilos Arquitectónicos(Arquitectura de Software para Practicantes)

Universidad de los AndesDemián Gutierrez

Marzo 2013

Page 2: Clase 08a estilos_arquitectonicos

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

Page 3: Clase 08a estilos_arquitectonicos

3

Diseño Arquitectónico

¿qué es un estilo?

¿qué es un estiloarquitectónico?

Page 4: Clase 08a estilos_arquitectonicos

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

Page 5: Clase 08a estilos_arquitectonicos

5

Estilos Arquitectónicos

aunque conste que sigo pensando que la comparacióndel software con la ingeniería civil es muy desafortunada

Page 6: Clase 08a estilos_arquitectonicos

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)

Page 7: Clase 08a estilos_arquitectonicos

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?

Page 8: Clase 08a estilos_arquitectonicos

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)

Page 9: Clase 08a estilos_arquitectonicos

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?

Page 10: Clase 08a estilos_arquitectonicos

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...

Page 11: Clase 08a estilos_arquitectonicos

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?

Page 12: Clase 08a estilos_arquitectonicos

12

Estilos Arquitectónicos¿La importancia de la responsabilidad?

Responsabilidades

¿cuáles son las responsabilidades decada bloque/parte de la arquitectura?

Page 13: Clase 08a estilos_arquitectonicos

13

Diseño Arquitectónico

algunos estilosarquitectónicos bien

conocidos

Page 14: Clase 08a estilos_arquitectonicos

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?

Page 15: Clase 08a estilos_arquitectonicos

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?

Page 16: Clase 08a estilos_arquitectonicos

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?

Page 17: Clase 08a estilos_arquitectonicos

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?

Page 18: Clase 08a estilos_arquitectonicos

18

Estilos Arquitectónicos(Tuberías y Filtros)

Tuberías y Filtros

Page 19: Clase 08a estilos_arquitectonicos

19

Estilos Arquitectónicos(Tuberías y Filtros)

Tuberías y FiltrosEl “pipeline” de OpenGL

Page 20: Clase 08a estilos_arquitectonicos

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

Page 21: Clase 08a estilos_arquitectonicos

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)

Page 22: Clase 08a estilos_arquitectonicos

22

Arquitectura por Capas(Sistemas Operativos)

Arquitectura por Capas

Page 23: Clase 08a estilos_arquitectonicos

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?

Page 24: Clase 08a estilos_arquitectonicos

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

Page 25: Clase 08a estilos_arquitectonicos

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)

Page 26: Clase 08a estilos_arquitectonicos

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?

Page 27: Clase 08a estilos_arquitectonicos

27

Arquitectura Cliente-Servidor

Cliente 1

Cliente 2

Cliente N

...

Servidor 1

Servidor N

...

Petición

Respuesta

RedInternet,

LAN, WAN

Cliente Servidor

Page 28: Clase 08a estilos_arquitectonicos

28

Arquitectura Cliente-Servidor(Liviano vs Pesado)

¿Cliente “Liviano” vs Cliente Pesado?

ClienteServidor

Petición

Respuesta

Red

Page 29: Clase 08a estilos_arquitectonicos

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)

Page 30: Clase 08a estilos_arquitectonicos

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

Page 31: Clase 08a estilos_arquitectonicos

31

Diseño Arquitectónico

¿cómo se podría combinarel estilo cliente-servidorcon los otros estilos que

hemos discutido?

Page 32: Clase 08a estilos_arquitectonicos

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

Page 33: Clase 08a estilos_arquitectonicos

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

Page 34: Clase 08a estilos_arquitectonicos

34

Gracias

¡Gracias!