02 Estilos Arquitectonicos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 34

Arquitectura de Software

Clase 2:
Estilos Arquitectónicos

Hugo R. Cordero

1
Objetivos
• Introducción a las arquitecturas y patrones arquitectónicos
• Conocer qué son los estilos arquitectónicos y las características de los principales
estilos
• Comprender como identificar los estilos y como aprovechar sus ventajas de
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
Diseñar requiere un vocabulario

“vistas”

“conceptos” “herramientas”

“Balance ideal”
4
Introducción
Análisis, arquitectura y diseño detallado

5
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

6
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

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

8
Estilos Arquitectónicos
Existen varios estilos…

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

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

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

https://msdn.microsoft.com/en-us/library/ee658117.aspx
12
Estilos Arquitectónicos
Tipos:
• De flujo de datos • Entre Pares (Peer to Peer)
– Tuberías y filtros – Dirigido por eventos
• De llamada y retorno • Publicador / Suscriptor
– Programa principal / subrutina – Broker
– Orientados a Objetos – Orientado a Servicios
– Basado en componentes – Reflection
– Cliente / Servidor • De código móvil
– Arquitectura de capas – Máquinas virtuales
– Modelo Vista Controlador • Otros
• Centrados en datos – De control de procesos
– Repositorio – Basado en agentes
– De Pizarra – Basado en el Dominio
– De Estilos Derivados

13
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:

14
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

15
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

16
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

17
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

18
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.
• Cada una de las mismas cumple con un rol y tenga responsabilidades bien
definidas
• Nace como niveles “lógicos”

Muestra información al
Client usuario

Formatea la información que


Presentation se mostrará. Recepciona los
eventos de interacción.

Application Ejecuta la lógica de la


aplicación.

Data Almacena y provee acceso a


los datos 19
Patrón Arquitectura con capas
• Cada capa solo puede comunicarse con
las vecinas. Esta solución aunque
menos eficiente facilita la portabilidad
• Es usada para separar una capa de alta
abstracción, de otra de baja (técnica).
Ejemplo SO:

• Pueden estar
distribuidas
físicamente, se
combina con Niveles

20
Patrón Modelo Vista Controlador
• Define la organización 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)
• Primera representación:

21
Patrón Modelo Vista Controlador
• Representación moderna:

• Se puede adaptar a diferentes tipos de sistemas, no solo web.

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

23
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, que se empezaron a utilizar por usuarios para el
intercambio de contenidos.

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

24
Patrón Publicador/Suscriptor
• Es una variante de un patrón dirigido por Eventos, donde los nodos que originan
los eventos cumplen una función definida.
• Interactúan por mensajes o notificaciones.
• El nodo que produce el mensaje se llama
Publicador. El nodo que recibe el mensaje se llama
Suscriptor.
• Pueden interactuar un número independiente 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

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

26
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

27
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

28
Estilos Arquitectónicos
El problema del mapeo
• El desarrollo con base en la Arquitectura proporciona una forma particular de
resolver un problema típico
• El problema del mapeo significa asegurar que nuestra intención arquitectónica
se refleja en nuestros sistemas construidos
• Elementos comunes a mapear: Componentes y conectores, Interfaces y APIs,
configuraciones, justificaciones de diseño, propiedades dinámicas y propiedades
no funcionales

Decisiones Artefactos de
De Diseño Implementación

29
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: 25 minutos.

30
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

31
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

32
¿Preguntas?

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


virtual con pasarela de pago? ¿Por qué?

33
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

34

También podría gustarte