Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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:
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
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
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”.
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
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
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
24
Práctica 2: Estilos arquitectónicos
• Desarrolle las preguntas propuestas en la práctica de identificación de
estilos arquitectónicos.
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?
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