arquitectura de software - bienvenido al wiki de la...

40
Arquitectura de Proyectos de IT Estilos Arquitectónicos Lic. Gastón Coco Ing. Gustavo A. Brey © 2005 Ing. Juan M. Arias Ing. Jorge García Ing. Santiago Blanco Ing. Fabián Pezet Vila Ing. Ariel Cassan

Upload: lamthien

Post on 03-Nov-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Arquitectura de Proyectos de IT

Estilos Arquitectónicos

Lic. Gastón CocoIng. Gustavo A. Brey

© 2005

Ing. Gustavo A. Brey Ing. Juan M. AriasIng. Jorge GarcíaIng. Santiago BlancoIng. Fabián Pezet VilaIng. Ariel Cassan

Agenda

# Tema Duración

1 Que es un Patrón? 5 min

2 Introducción a estilos arquitectónicos 5 min

2.1 De Estructuración 20 min

2.2 Sistemas distribuidos 5 min

2 Arquitectura de Proyectos de IT

2.2 Sistemas distribuidos 5 min

2.3 De Comunicación 10 min

2.4 Sistemas interactivos 15 min

2.5 Sistemas adaptables 10 min

2.6 Otros 5 min

3 Bibliografía 5 min.

Agenda

# Tema Duración

1 Que es un Patrón? 5 min

2 Introducción a estilos arquitectónicos 5 min

2.1 De Estructuración 20 min

2.2 Sistemas distribuidos 5 min

3 Arquitectura de Proyectos de IT

2.2 Sistemas distribuidos 5 min

2.3 De Comunicación 10 min

2.4 Sistemas interactivos 15 min

2.5 Sistemas adaptables 10 min

2.6 Otros 5 min

3 Bibliografía 5 min.

¿Qué es un patrón?

§ Los patrones son soluciones reutilizables.

§ Tipos de patrones– De sistema (o estilos arquitectónicos)

– De diseño (por ejemplo GoF)

4 Arquitectura de Proyectos de IT

– De diseño (por ejemplo GoF)

– De codificación (buenas prácticas y estándares)

– Anti-Patterns

§ Una arquitectura combina muchos patrones o estilos

Agenda

# Tema Duración

1 Que es un Patrón? 5 min

2 Introducción a estilos arquitectónicos 5 min

2.1 De Estructuración 20 min

2.2 Sistemas distribuidos 5 min

5 Arquitectura de Proyectos de IT

2.2 Sistemas distribuidos 5 min

2.3 De Comunicación 10 min

2.4 Sistemas interactivos 15 min

2.5 Sistemas adaptables 10 min

2.6 Otros 5 min

3 Bibliografía 5 min.

Estilos arquitectónicos

§ Un patrón o estilo arquitectónico define:

– Qué forma tienen los componentes

6 Arquitectura de Proyectos de IT

– Qué forma tiene la comunicación entre esos componentes

– Qué restricciones se ponen a esa comunicación

Estilos arquitectónicos

§ Estructuración

§ Dataflow Systems– Batch Secuential

– Pipes & Filters

§ Comunicación–Publisher-Subscriber

§ Sistemas Interactivos–MVC

7 Arquitectura de Proyectos de IT

§ Call & Return– Hierarchical Layers

§ Sistemas distribuidos– Broker

§ Sistemas Adaptables–Microkernel

§ Otros

Agenda

# Tema Duración

1 Que es un Patrón? 5 min

2 Introducción a estilos arquitectónicos 5 min

2.1 De Estructuración 20 min

2.2 Sistemas distribuidos 5 min

8 Arquitectura de Proyectos de IT

2.2 Sistemas distribuidos 5 min

2.3 De Comunicación 10 min

2.4 Sistemas interactivos 15 min

2.5 Sistemas adaptables 10 min

2.6 Otros 5 min

3 Bibliografía 5 min.

Patrones de estructuración - Dataflow

§ Serie de transformaciones de sucesivos datos de entrada.

§ Los datos fluyen a través de los componentes del sistema.

9 Arquitectura de Proyectos de IT

sistema.

§ Estilos– Batch Secuential

– Pipes & Filters

DataFlow - Batch Sequential

§ Los pasos de procesamiento son programas independientes

§ Cada paso se completa antes de comenzar el siguiente.

§ Los datos se transmiten entre programas como

10 Arquitectura de Proyectos de IT

§ Los datos se transmiten entre programas como un todo.

DataFlow - Pipe & Filters

§ Hincapié en la transformación incremental de los datos.

§ Los filtros transforman los datos sin retener información de estado, y no es necesario terminar un paso para que empiece el siguiente.

11 Arquitectura de Proyectos de IT

terminar un paso para que empiece el siguiente.§ Los pipes mueven los datos entre los filtros pero permiten la flexibilidad en las conexiones.

Patrones de estructuración – Call & Return

§ Estilo arquitectónico dominante

§ El sistema se ve como una serie de llamadas a procedimientos y funciones.

12 Arquitectura de Proyectos de IT

§ Estilos– Hierarchical Layers

– Main Program - Subroutines

– Object Oriented

Call & Return – Hierachical Layers

§ Cada capa:– Provee servicios a la capa superior

– Es cliente de la capa inferior

13 Arquitectura de Proyectos de IT

– Es cliente de la capa inferior

§ No todos los sistemas pueden ser arquitecturados en capas

§ La mayor dificultad es encontrar los niveles de abstracción adecuados.

Call & Return – Hierachical Layers

§ Ventajas:– Permite dividir un sistema complejo mediante abstracción.

– Mejoras en una capa impactan en todo el sistema

– Suponen reusabilidad y fácil intercambio

14 Arquitectura de Proyectos de IT

– Suponen reusabilidad y fácil intercambio

§ Desventajas:– No todos los sistemas se pueden estructurar así.

– Posible deterioro de performance con muchas capas.

– Cambios suelen tener que replicarse en todas las capas

Call & Return – Hierachical Layers

§ Arquitectura 2 capas: Cliente - Servidor

15 Arquitectura de Proyectos de IT

Call & Return – Hierachical Layers

§ Arquitectura 3 capas

16 Arquitectura de Proyectos de IT

Call & Return – Hierachical Layers

§ Arquitectura 4 capas

17 Arquitectura de Proyectos de IT

Agenda

# Tema Duración

1 Que es un Patrón? 5 min

2 Introducción a estilos arquitectónicos 5 min

2.1 De Estructuración 20 min

2.2 Sistemas distribuidos 5 min

18 Arquitectura de Proyectos de IT

2.2 Sistemas distribuidos 5 min

2.3 De Comunicación 10 min

2.4 Sistemas interactivos 15 min

2.5 Sistemas adaptables 10 min

2.6 Otros 5 min

3 Bibliografía 5 min.

Patrones sobre sistemas distribuidos

Broker§ Un componente “Broker” coordina la comunicación entre clientes y servidores.

§ Los clientes y servidores utilizan componentes

19 Arquitectura de Proyectos de IT

§ Los clientes y servidores utilizan componentes “proxy” para comunicarse con el broker.

§ Permite que la distribución de la aplicación sea transparente para los implementadores.

Patrones sobre sistemas distribuidos

Broker

20 Arquitectura de Proyectos de IT

§ Ejemplo de uso: CORBA

Agenda

# Tema Duración

1 Que es un Patrón? 5 min

2 Introducción a estilos arquitectónicos 5 min

2.1 De Estructuración 20 min

2.2 Sistemas distribuidos 5 min

21 Arquitectura de Proyectos de IT

2.2 Sistemas distribuidos 5 min

2.3 De Comunicación 10 min

2.4 Sistemas interactivos 15 min

2.5 Sistemas adaptables 10 min

2.6 Otros 5 min

3 Bibliografía 5 min.

Patrones de comunicación

§ Muchos sistemas de software distribuyen sus componentes a través de redes, por lo que requieren comunicación.

§ Estilos:Publisher-Subscriber

22 Arquitectura de Proyectos de IT

§ Estilos:§ Publisher-Subscriber§ Forwarder-Receiver§ Client-Dispatcher-Server

Publisher-Subscriber

§ Mantiene la sincronización entre componentes cooperativos.

§ Un componente “publisher” notifica a muchos consumidores “subscribers” suscriptos a él.

23 Arquitectura de Proyectos de IT

consumidores “subscribers” suscriptos a él.

§ Análogo al patrón de diseño “Observer”.

Publisher-Subscriber

24 Arquitectura de Proyectos de IT

Forwarder-receiver

25 Arquitectura de Proyectos de IT

§ Provée encapsulación del mecanismo de comunicación

Client-Dispatcher-Server

26 Arquitectura de Proyectos de IT

§ Provée “location transparency” para el cliente

Agenda

# Tema Duración

1 Que es un Patrón? 5 min

2 Introducción a estilos arquitectónicos 5 min

2.1 De Estructuración 20 min

2.2 Sistemas distribuidos 5 min

27 Arquitectura de Proyectos de IT

2.2 Sistemas distribuidos 5 min

2.3 De Comunicación 10 min

2.4 Sistemas interactivos 15 min

2.5 Sistemas adaptables 10 min

2.6 Otros 5 min

3 Bibliografía 5 min.

Patrones sobre sistemas interactivos

§ Mayoría de software tiene algún tipo de interacción con el usuario

§ El objetivo es separar la funcionalidad principal de las vistas de presentación.

28 Arquitectura de Proyectos de IT

de las vistas de presentación.

§ Estilos principales:§ MVC§ PAC

MVC (Model – View – Controller)

§ Origen a principios de 80s para Smalltalk

§ Divide la aplicación en 3 tipos de componentes: modelos, vistas y controladores.

Modelo: principal funcionalidad e información

29 Arquitectura de Proyectos de IT

§ Modelo: principal funcionalidad e información

§ Vista: muestra información al usuario

§ Controlador: controla los inputs del usuario

MVC (Model – View – Controller)

30 Arquitectura de Proyectos de IT

§ Este es el modelo clásico, pero hay otras variantes.

MVC (Model – View – Controller)

§ Habitualmente combinado con el patrón de diseño “Observer” para las actualizaciones de vistas.

§ Combinado con el patrón “observer” se puede mantener a las vistas sincronizadas automáticamente con el modelo correspondiente.

31 Arquitectura de Proyectos de IT

mantener a las vistas sincronizadas automáticamente con el modelo correspondiente.

§ En aplicaciones web, el patrón tan utilizado no suele ser MVC, sino una variante: MVP (Model – View –Presenter).

MVC (Model – View – Controller)

§ Ventajas:

§ Múltiples vistas del mismo modelo§ Vistas sincronizadas§ Base potencial para construir un framework

32 Arquitectura de Proyectos de IT

§ Base potencial para construir un framework

§ Desventajas:

§ Número de actualizaciones potencialmente alto§ Alto acoplamiento entre los tres componentes

Agenda

# Tema Duración

1 Que es un Patrón? 5 min

2 Introducción a estilos arquitectónicos 5 min

2.1 De Estructuración 20 min

2.2 Sistemas distribuidos 5 min

33 Arquitectura de Proyectos de IT

2.2 Sistemas distribuidos 5 min

2.3 De Comunicación 10 min

2.4 Sistemas interactivos 15 min

2.5 Sistemas adaptables 10 min

2.6 Otros 5 min

3 Bibliografía 5 min.

Patrones sobre sistemas adaptables

§ Los sistemas de software cambian con el tiempo, así como los sistemas operativos, plataformas, etc

§ Se buscan arquitecturas que se adapten a estos cambios a futuro.

34 Arquitectura de Proyectos de IT

cambios a futuro.

§ Estilos:§ Microkernel§ Reflection

Microkernel

§ Separa la funcionalidad core de extensiones y de aplicaciones del cliente.

§ Es fundamental encontrar un equilibrio entre la cantidad de funcionalidades para el microkernel.

35 Arquitectura de Proyectos de IT

cantidad de funcionalidades para el microkernel.

§ Utiliza extensiones internas y externas para resolver las funcionalidades esperadas por los clientes.

Microkernel

36 Arquitectura de Proyectos de IT

§ Ejemplos: API de un SO, IDEs

Agenda

# Tema Duración

1 Que es un Patrón? 5 min

2 Introducción a estilos arquitectónicos 5 min

2.1 De Estructuración 20 min

2.2 Sistemas distribuidos 5 min

37 Arquitectura de Proyectos de IT

2.2 Sistemas distribuidos 5 min

2.3 De Comunicación 10 min

2.4 Sistemas interactivos 15 min

2.5 Sistemas adaptables 10 min

2.6 Otros 5 min

3 Bibliografía 5 min.

Otros estilos arquitectónicos

§ Existen muchos otros estilos arquitectónicos

§ Algunas categorías:

§ Event Based SystemsRepositorios y Blackboards

38 Arquitectura de Proyectos de IT

§ Event Based Systems§ Repositorios y Blackboards§ Virtual Machines - Interpreters§ Rule Based Systems§Web Server Patterns§ Concurrency Patterns

Agenda

# Tema Duración

1 Que es un Patrón? 5 min

2 Introducción a estilos arquitectónicos 5 min

2.1 De Estructuración 20 min

2.2 Sistemas distribuidos 5 min

39 Arquitectura de Proyectos de IT

2.2 Sistemas distribuidos 5 min

2.3 De Comunicación 10 min

2.4 Sistemas interactivos 15 min

2.5 Sistemas adaptables 10 min

2.6 Otros 5 min

3 Bibliografía 5 min.

Bibliografía

§ “Pattern Oriented Software Architecture: A System of Patterns”. John Wiley & Sons, 1996. Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M.

§ “Software Architecture: Perspectives on an Emerging Discipline”. Prentice-Hall, 1996. Shaw, M., Garlan, D.

40 Arquitectura de Proyectos de IT

Discipline”. Prentice-Hall, 1996. Shaw, M., Garlan, D.

§ “Patterns of Enterprise Application architecture”. Addison-Wesley, 2002. Fowler, M.

§ “Design Patterns. Elements of Reusable Object-Oriented Software”. Addison-Wesley, 1995. Gamma, E., Helm, R., Johnson, R., Vlissides, J.