Arquitectura de software orientada a patrones

45

Transcript of Arquitectura de software orientada a patrones

Page 1: Arquitectura de software orientada a patrones
Page 2: Arquitectura de software orientada a patrones

Agenda

• Objetivos de la presentación

• Estructura de POSA

• Clase-Responsabilidad-Colaboración

• Patrón de Capas

• Patrón de Filtros y tuberías

• Patrón de Mediador

• Patrón Modelo Vista Controlador

• Patrón Presentación Abstracción Control

• Patrón de Micronúcleo

Page 3: Arquitectura de software orientada a patrones

El arquitecto necesita crear un sistema y usa patrones

para especificar la organización del mismo …

Page 4: Arquitectura de software orientada a patrones

POSA (Objetivos)

Presentar y dar el esquema de

arquitectura de software

orientada a patrones (Pattern

Oriented Software Architecture)

Explicar cada una de las

agrupaciones de patrones, los

patrones y su aplicación.

Mostrar un lenguaje de

patrones que facilitará el

diseño de la arquitectura de

software a partir de los

diferentes patrones.

Page 5: Arquitectura de software orientada a patrones

Estructura de POSA

POSA es un conjunto de

patrones para arquitectura de

software. Su enfoque es

genérico y abstracto.

El volumen 3 de POSA se

enfoca a patrones para la

arquitectura de recursos de

computación

El volumen 4 de POSA

conjunta los patrones de

cómputo distribuido y

conocidos por la comunidad

(incluyendo GoF, PEAA, EIP)

El volumen 5 de POSA se

enfoca a tratar un modelo para

definir lenguajes de patrones

El volumen 1 de POSA se

enfoca a los patrones

fundamentales de arquitectura

de software

El volumen 2 de POSA se

enfoca a la arquitectura del

software para manejo de

concurrencia y de gestión con

la red

Page 6: Arquitectura de software orientada a patrones

En el sistema todo debe tener un propósito y lo que no lo

tenga, no debe ser parte del sistema. Identifica el

propósito a través de la técnica de CRC…

Page 7: Arquitectura de software orientada a patrones

Clase-Responsabilidad-Colaboración

Se utiliza una tarjeta CRC para

plasmar en una lluvia de ideas

CRC es una técnica para

identificar las clases de un

sistema a partir de las

responsabilidades que tiene en

el sistema y la colaboración

con otras clases

POSA 1 utiliza CRC para

especificar los patrones

Page 8: Arquitectura de software orientada a patrones

Primero, divide el sistema en capas para tratar la

complejidad …

Page 9: Arquitectura de software orientada a patrones

Patrón de capas (layers)

Un sistema que por

sus dimensiones

requiere ser dividido

en componentes

Page 10: Arquitectura de software orientada a patrones

Ejemplo de Patrón de capas

Page 11: Arquitectura de software orientada a patrones

Segundo, define el esquema básico de comportamiento,

basado en unidades llamadas filtros y comunicados por

tuberías …

Page 12: Arquitectura de software orientada a patrones

Patrón de tuberías y filtros(pipe & filters)

El sistema requiere de un procesamiento orientado a flujo de datos.

Cada procesamiento se implementa como un filtro y

comunicados a través de tuberías

Class Filter

Class Filter

Responsability· Obtiene datos de

entrada· Efectúa funciones sobre

los datos· Provee datos de salida

Responsability· Obtiene datos de

entrada· Efectúa funciones sobre

los datos· Provee datos de salida

Collaborator· Pipe

Collaborator· Pipe

Class Pipe

Class Pipe

Responsability· Transfiere datos· Canaliza la información· Sincroniza elementos

contigüos

Responsability· Transfiere datos· Canaliza la información· Sincroniza elementos

contigüos

Collaborator· Fuente de

datos· Contenedor

de datos· Filtro

Collaborator· Fuente de

datos· Contenedor

de datos· Filtro

Page 13: Arquitectura de software orientada a patrones

Ejemplo de pipe & filters

Page 14: Arquitectura de software orientada a patrones

Tercero, necesita comunicar a todos los componentes del

sistema, utilizando canales de comunicación y un mediador

Page 15: Arquitectura de software orientada a patrones

Patrón de mediador (broker)

Patrón para estructurar sistemas distribuidos usando el desacoplamiento de componentes y que interactúan entre ellos a través de invocación a servicios remotos.

El mediador coordina la comunicación de solicitudes del cliente al servidor y coordina el retorno del resultado del servidor al cliente, procurando la transparencia en el formato de datos y el protocolo de transporte.

Page 16: Arquitectura de software orientada a patrones

Ejemplo de broker

Page 17: Arquitectura de software orientada a patrones

Preparado por:

Cuarto, establece la interacción entre los humanos y el

sistema, usando modelo vista controlador…

Page 18: Arquitectura de software orientada a patrones

Patrón de Modelo Vista Controlador (MVC)

El patrón MVC se utiliza para estructurar sistemas interactivos

Page 19: Arquitectura de software orientada a patrones

Ejemplo de MVC

Page 20: Arquitectura de software orientada a patrones

Quinto, establecer un esquema complejo para visualizar la

información del sistema en diversos niveles, usando el

patrón Presentación Abstracción Control…

Page 21: Arquitectura de software orientada a patrones

Patrón de Presentación-Abstracción-Control (PAC)

El patrón PAC estructura la interacción de la aplicación cuando las partes son componentes autónomos y con sus propias capacidades independientes

<< Cmp >>

Agente alto nivelAgente alto nivel

<< Cmp >>

Agente bajo nivelAgente bajo nivel

<< Cmp >>

Agente bajo nivelAgente bajo nivel

<< Cmp >>

Agente nivel intermedio

Agente nivel intermedio

<< Cmp >>

Agente bajo nivelAgente bajo nivel<< Cmp >>

Agente bajo nivelAgente bajo nivel

<< Cmp >>

Agente bajo nivelAgente bajo nivel

Page 22: Arquitectura de software orientada a patrones

Ejemplo PAC

Page 23: Arquitectura de software orientada a patrones

Sexto, encapsula las funciones primordiales del sistema en un micro nucleo y así generarás un sistema adaptable

Page 24: Arquitectura de software orientada a patrones

Patrón de Micro núcleo (Microkernel)

El patrón microkernel permite construir las capas externas del sistema a partir de componentes internos que son eficientes, simples, con facilidad de intercambio y con interfaces bien definidas

Page 25: Arquitectura de software orientada a patrones

Ejemplo Microkernel

Page 26: Arquitectura de software orientada a patrones

Séptimo, tu sistema debe ser adaptable, a través de la manipulación de su meta modelo. Todo componente del sistema puede ser potencialmente modificado en tiempo de ejecución, utilizando el patrón de Reflexión

Page 27: Arquitectura de software orientada a patrones

Patrón de Reflexión (Reflection)

El patrón de reflexión otorga la habilidad a un programa para inspeccionar su estructura interna y poder modificar a ésta misma en tiempo de ejecución y por tanto, su comportamiento.

Page 28: Arquitectura de software orientada a patrones

Ejemplo Reflection

Page 29: Arquitectura de software orientada a patrones

Estructura

LayerPipe and FiltersBlackboard *

Distribución

Broker

Interacción

Model-View-ControllerPresentation-Abstraction-Control

Adaptable

MicrokernelReflection

Page 30: Arquitectura de software orientada a patrones

Para la creación de los objetos del sistema, el Oraculo

ofrece un conjunto de recetas, patrones de diseño, para

fortalecer la arquitectura …

Page 31: Arquitectura de software orientada a patrones

Un sistema que es complejo, debe ser concebido en término

de sus partes y la suma de ellas debe describir al

sistema como un todo…

Page 32: Arquitectura de software orientada a patrones

Patrón de Todos y sus partes (Whole-Part)

El patrón indica que un sistema debe constituirse de sus partes de tal manera que el todo es el resultado de la suma de sus partes. Es la agregación de componentes para conformar una unidad semántica. El Acceso directo a las partes no es posible.

Page 33: Arquitectura de software orientada a patrones

Para un sistema que requiere un alto nivel de

procesamiento, repartirlo a múltiples esclavos y que son

coordinados por el maestro …

Page 34: Arquitectura de software orientada a patrones

Patrón de Maestro Esclavo (Master-slave)El patrón permite organizar el trabajo de tal manera que un componente (el maestro) distribuye trabajo a componentes idénticos (esclavos) y calcula un resultado final de los resultados que dichos esclavos retornan. Soporta procesamiento en paralelo, tolerancia a fallas

Page 35: Arquitectura de software orientada a patrones

No tener contacto directo con el ambiento externo,

utilizar un agente Proxy para que sea la manera como se

controle el acceso a un servicio y sea protector ante

posibles ataques …

Page 36: Arquitectura de software orientada a patrones

Ejemplos de Proxy

Page 37: Arquitectura de software orientada a patrones

Para administrar al sistema proporciona una serie de

comandos y organizarlos para que sea invocados de manera

similar y con un lenguaje específico al dominio …

Page 38: Arquitectura de software orientada a patrones

Patrón de Procesador de comando (Command Processor)

El patrón permite que de manera ordenada se agreguen o eliminen comandos con los que se gestiona un sistema

Page 39: Arquitectura de software orientada a patrones

Ejemplos de Command Processor

Page 40: Arquitectura de software orientada a patrones

Para manipular de una manera uniforme la representación

visual del sistema utilizar un administrador de vistas…

Page 41: Arquitectura de software orientada a patrones

Patrón de Manejador de Vistas (View Handler)

El patrón ayuda a manejar todas las vistas que un sistema de software proporciona. El manejador de vista permite al cliente el manipular y disponer de las vistas, controla la dependencia entre las mismas y organiza su actualización

Page 42: Arquitectura de software orientada a patrones

Ejemplos de View Handler

Page 43: Arquitectura de software orientada a patrones

Ofrecer un mecanismo eficiente de comunicación entre los

pares del sistema usando el esquema de envío recepción…

Page 44: Arquitectura de software orientada a patrones

Cuando exista una relación entre cliente y servidor poner

como un intermediario de comunicación a un despachador

para ofrecer transparencia en la ubicación y

establecimiento de la conexión. Cliente-Despachador-

Servidor …

Page 45: Arquitectura de software orientada a patrones

Cuando múltiples componentes están cooperando en el

sistema, proporcionar un mecanismo de propagación de

cambios a través de la suscripción a las actualizaciones

de un publicador, formando así un esquema de publicador

suscriptor…