02 Estilos Arquitectonicos
02 Estilos Arquitectonicos
02 Estilos Arquitectonicos
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
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:
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
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
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
• 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:
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.
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.
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
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.
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?
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