Está en la página 1de 29

Arquitectura de Software

Clase 2:
Estilos Arquitectónicos

Hugo R. Cordero

1
Objetivos
• Comprender el concepto de patrón y cómo los estilos arquitectónicos ayudan a
comunicar la Arquitectura
• Conocer las características de los principales estilos arquitectónicos
• Entender como identificar los estilos y como aprovechar sus ventajas para
estructurar los sistemas

2
Temas
1. Introducción a las arquitecturas
2. Concepto de Patrones
3. Estilos arquitectónicos
▪ Tubería y Filtros
▪ Cliente/Servidor
▪ Arquitectura en Capas
▪ Modelo Visa Controlador
▪ Patrones centrados en Datos
▪ Publicador/Suscriptor
▪ Patrón Broker
▪ Orientado a Servicios
▪ Patrón máquina virtual

3
Introducción
Análisis, arquitectura y diseño detallado

4
Introducción
Diseño arquitectónico
• ¿Cómo lograr una descomposición modular eficaz?
– Alta cohesión y bajo acoplamiento
– Descomposición recursiva
– Diseñar para el mantenimiento
– Reducir la complejidad de las dependencias
• Reutilización de diseños y componentes: Patrones

Patrones
• Son soluciones a los problemas que usted encuentra una y otra vez en
el desarrollo de aplicaciones en el mundo real
• Están formados por estructuras reutilizables en la construcción de
aplicaciones
• Tipos: de sistema, de diseño, de codificación, Anti-patrones
• Una sistema generalmente combina muchos patrones de diferentes
tipos

5
Patrones de sistema o arquitectónicos
• Expresa un esquema de organización estructural esencial para un sistema de
software, que consta de sub-sistemas, sus responsabilidades e interrelaciones

• Facilita la tarea de diseñar el sistema


• Se impone al diseño de todo el sistema.
• Conjunto de principios que dan forma a una
aplicación.
• Mejora la descomposición y promueve la
reutilización del diseño
• Son también llamados Estilos Arquitectónicos

6
Estilos Arquitectónicos
Beneficios
• Contribuyen a diseñar soluciones reutilizables
• Tienen una nivel de abstracción mayor
• Se pueden combinar con otros patrones arquitectónicos
• Ayuda a definir como se relacionarán los elementos del sistema
• Promueven una alta cohesión y bajo acoplamiento
• Ayudan a lograr una buena
descomposición modular:

7
Estilos Arquitectónicos
Existen varios estilos…

8
Estilos Arquitectónicos
• Según Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy en Software
Architecture: Foundations, Theory, and Practice:

9
Estilos Arquitectónicos
• Según J.D. Meier, diferentes agrupaciones para los Estilos:

http://shapingsoftware.com/2009/02/09/architectural-styles/
10
Estilos Arquitectónicos
• Según Microsoft:

https://msdn.microsoft.com/en-us/library/ee658117.aspx
11
Patrón Tuberías y Filtros
• Compuesto por un conjunto de elementos denominados filtros conectados por
tuberías que transmiten los datos de un elemento a otro
• Cada filtro trabaja de forma independiente, ejemplo:

• Obtiene como resultado los datos


de una salida específica:

12
Patrones de llamada y retorno
Patrón programa principal/subrutina
• Permite a los diseñadores de software
conseguir estructuras relativamente
fáciles de modificar y escalar
• Descompone las funciones en una
jerarquía de control donde un
programa invoca a otros programas

Patrón basado en componentes


• Es un acercamiento basado en la
reutilización para definir, implementar y
componer componentes débilmente
acoplados en sistemas

13
Patrón Cliente/Servidor
• Se organiza como un conjunto de servidores
que brinda servicios asociados, y con clientes
que acceden y usan los servicios Cliente

subsistema
Cliente

subsistema
• Uso muy común en los sistemas distribuidos Servidor
• Se extendió a una arquitectura de Niveles, 2
niveles Cliente/Servidor -> Servidor

14
Patrón Cliente/Servidor
Arquitectura Multinivel o N-Tier Cliente
• Se inicio con la llegada de los Lógica de
aplicaciones web Presentación
• Se separó primero la lógica de la
aplicación. Ejemplo más común de
3 niveles ->
• Se especializó el servidor: Servidor de
– De aplicaciones Aplicaciones
Lógica de
– De procesos de negocio Aplicación
– De Integración
– De Servicios
• El cliente puede ser más ligero o Servidor
más “rico”. Base Datos Almacén
de Datos

15
Patrón Cliente/Servidor
Tres niveles con Cliente Rico
• La lógica de presentación está
ubicada en el Cliente
• Separación con la lógica de la
aplicación puede ser compleja

Tres niveles con Cliente Delgado


• El servidor genera como se verá la
presentación de los componentes
• Se puede incrementar el tráfico de
red

16
Patrón Arquitectura con capas
• El objetivo principal es separar los diferentes aspectos del desarrollo, tales como las
cuestiones de presentación, lógica de negocio, almacenamiento de datos, etc.
dentro de un sistema.
• Cada una de las capas cumple con un rol
y tiene responsabilidades bien definidas:
• También conocidos como niveles
“lógicos”.

• Cada capa solo puede comunicarse con


las vecinas. Esta solución aunque puede
ser menos eficiente facilita la portabilidad.
• Se puede combinar con niveles.
• Es usada para separar una capa de alta
abstracción, de otra de baja (técnica):

17
Patrón Modelo Vista Controlador
• Define la organización • Representación original:
independiente del Modelo
(Objetos de Negocio), la Vista
(interfaz con el usuario u otro
sistema) y el Controlador
(controlador del flujo de la
aplicación)

• Representación moderna:

18
Patrones centrados en datos
• Como parte central aparece un almacén de datos, el cual es accedido
frecuentemente por otros componentes que actualizan, añaden y borran.
Patrón repositorio pasivo
(o simplemente repositorio)
El cliente accede a los datos
independientemente de cualquier cambio
en los datos o a las acciones de otros
clientes.
Patrón repositorio activo
(o pizarra)
El repositorio envía información a los
clientes cuando los datos de su interés
cambian, siendo por tanto un ente activo.

19
Patrones entre pares
• Es una arquitectura en la cual las aplicaciones pueden comunicarse entre sí,
intercambiando información y todos son tratados de igual a igual.
• Basado en las redes peer-to-peer

Patrón Dirigido por Eventos


– Promueve la producción, detección, consumo y reacción a eventos. Un evento
puede ser definido como "un cambio significativo en un estado“.
– Hace que la aplicación sea desplegable de una manera mucho más distribuible y
escalable.

Patrón Publicador / Suscriptor


– Interactúan por mensajes o notificaciones.
– El nodo que produce el mensaje se llama Publicador.
– El nodo que recibe el mensaje se llama Suscriptor.
– Número variable de publicadores (productores) y subscriptores
(consumidores)
– La infraestructura provista se asegura de que cada evento
de publicación sea enviado a todos los subscritores del evento.
20
Patrón Broker
• Compuesto por un mediador que
permite minimizar el grado de
conocimiento mutuo que estos
necesitan tener para poder
intercambiar mensajes.

• El Broker es el elemento central


intermediario que envía los
mensajes. Puede ser tan simple
como compleja su lógica de ruteo.
• Se ha extendido en facilitar la
integración de aplicaciones, incluso
servidores.

21
Patrón orientado a Servicios
• Organización fundamental de un sistema descrita en servicios y la
composición entre éstos, mediante un conjunto de principios y criterios
arquitectónicos que abordan modularidad, encapsulación, acoplamiento
abierto, separación de elementos de interés, reutilización y componibilidad
(SOA).

• Un Servicio es un componente de
software que utiliza un conjunto de
protocolos y estándares para
intercambiar datos entre
aplicaciones sobre una red.
• Soportado sobre tecnologías
estándares como SOAP y REST

22
Patrón de máquinas virtuales
• La arquitectura de máquinas virtuales se ha llamado también arquitectura
basada en intérpretes
• Un intérprete incluye un seudo-programa a interpretar y una máquina de
interpretación
• Pertenece a una familia que enfatiza la portabilidad

• Ejemplo: plataforma Java y lenguajes scripting del servidor


• Otra variante del patrón son los sistemas basados en reglas

23
Principales representaciones arquitectónicas
1 2
Capa 1
Nivel Nivel Nivel Capa 2
1 2 3
Capa 3

4
3 Servicio Servicio
Sistema Sistema 1 2
1 2
Integrador Bus

Sistema Sistema Servicio Servicio


3 4 3 4

24
Práctica 2: Estilos arquitectónicos
• Desarrolle las preguntas propuestas en la práctica de identificación de
estilos arquitectónicos.

• Reúnanse en grupos y elabore la práctica en una hoja borrador para


entregar al profesor.

• Tiempo para la práctica: 30 minutos.

25
Lectura 3: Estilos arquitectónicos
Complementar las características de los estilos arquitectónicos con la lectura de estilos
según Microsoft:
• https://msdn.microsoft.com/en-us/library/ee658117.aspx

26
Resumen
• Existen diferentes tipos de patrones, entre ellos los patrones de sistema
o estilos arquitectónicos
• Existe grupos de estilos arquitectónicos como de flujo de datos, de
llamada y retorno, centrado en datos, entre pares, código móvil, etc.
• El patrón más común es el Cliente/Servidor, que ha devenido en las
arquitecturas multiniveles y con diferentes variantes
• En la arquitectura de capas el objetivo principal es separar los diferentes
aspectos del desarrollo, tales como las cuestiones de presentación,
lógica de negocio, almacenamiento de datos, etc.
• En la representación moderna del patrón Modelo
Vista Controlador, toda la interacción se realiza
solo con la Vista desde los programas externos

27
¿Preguntas?

• ¿Qué estilo arquitectónico utilizaría para implementar una tienda


virtual con pasarela de pago? ¿Por qué?

28
Referencias
• Len Bass, Paul Clements, Rick Kazman , Software Architecture in Practice (3rd
Edition)
– Chapter 13, Architectural Tactics and Patterns
• Sommerville, Ingeniería de Software (9na. Edición)
– Capítulo 6, Diseño arquitectónico
• Whitten Bentley, Analisis de Sistemas Diseño y Métodos (7ma. Edición)
– Capítulo 11, Modelo y arquitectura de la aplicación
• Links:
– https://msdn.microsoft.com/en-us/library/ee658117.aspx
– http://shapingsoftware.com/2009/02/09/architectural-styles/
– http://www.slideshare.net/lilyPacheco7/arquitectura-de-software-13925226
– http://www.slideshare.net/mstabare/arquitecturas-de-software-parte-2
– http://www.scribd.com/doc/92598668/Arquitectura-Peer-to-Peer
– http://carlosreynoso.com.ar/archivos/arquitectura/Estilos.PDF

29

También podría gustarte