La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Estilos Particulares de Componentes y Conectores

Presentaciones similares


Presentación del tema: "Estilos Particulares de Componentes y Conectores"— Transcripción de la presentación:

1 Estilos Particulares de Componentes y Conectores

2 Patrones de Arquitectura de Software
Arquitectura de Software - Estilos de Componentes y Conectores Patrones de Arquitectura de Software La definición de patrones en arquitectura de software intenta: formalizar la forma en que se comunica y reusa la experiencia de diseño, capturar la experiencia probada de diseño de software, describir problemas recurrentes que surgen en determinados contextos, describir esquemas de soluciones probados, disponer de herramientas para los no expertos, ir un paso más hacia la ingeniería de software: permitir que gente común haga cosas que antes requerían virtuosismo.

3 Patrones de Arquitectura
Arquitectura de Software - Estilos de Componentes y Conectores Patrones de Arquitectura Un patrón de arquitectura de software es: un esquema genérico probado para solucionar un problema particular recurrente que surge en un cierto contexto. Este esquema se especifica describiendo: las componentes, sus responsabilidades, relaciones, y las formas en que colaboran.

4 ¿Qué es un Patrón? Patrón Contexto Problema Solución
Arquitectura de Software - Estilos de Componentes y Conectores ¿Qué es un Patrón? Patrón Contexto Situación de diseño que da lugar al problema. Problema Conjunto de fuerzas que surgen del contexto. Solución Configuración para balancear las fuerzas: Componentes y relaciones, Comportamiento dinámico.

5 Descripción de un Patrón
Arquitectura de Software - Estilos de Componentes y Conectores Descripción de un Patrón No existe un formalismo estándar para describir patrones.

6 Distintas Tipos de Estilos de Componentes y Conectores
Arquitectura de Software - Estilos de Componentes y Conectores Distintas Tipos de Estilos de Componentes y Conectores Arquitecturas de flujo de datos Arquitecturas centradas en datos Arquitecturas de llamada-retorno Arquitecturas de componentes independientes Estilos heterogéneos Cada clase tiene a su vez subclases y una misma arquitectura puede verse como perteneciente a más de un estilo.

7 Arquitecturas de Flujo de Datos
Arquitectura de Software - Estilos de Componentes y Conectores Arquitecturas de Flujo de Datos El sistema se percibe como una sucesión de transformaciones que sufre una serie de datos de entrada a través del sistema. Los datos ingresan al sistema y fluyen a través de las componentes una a una hasta que se asignan a un destino final: salida o almacenamiento. Son típicos casos de arquitecturas que promueven la reusabilidad y la modificabilidad. Existen dos subestilos: secuencial por lotes tubos y filtros

8 Arquitectura Secuencial por Lotes
Arquitectura de Software - Estilos de Componentes y Conectores Arquitectura Secuencial por Lotes Validar Sort Actualizar Reportar Es la estructura típica de un sistema de procesamiento de datos tradicional por lotes (batch). Cada proceso se ejecuta completamente antes de comenzar la ejecución del siguiente.

9 Arquitectura de Tubos y Filtros
Arquitectura de Software - Estilos de Componentes y Conectores Arquitectura de Tubos y Filtros Enfatiza la transformación incremental de los datos a través de las sucesivas componentes. Cada componente (filtro) es un traductor que procesa los datos de entrada usa poca información de contexto no retiene información de estado Leer Traducir al inglés Escribir inglés Traducir al chino Escribir chino

10 Tubos y Filtros como un Patrón de Arquitectura

11 Ejemplo: Compilador Portable de Mocha
Arquitectura de Software - Estilos de Componentes y Conectores Ejemplo: Compilador Portable de Mocha Mocha (Modular Object Computation with Hypothetical Algorithms). AuLait (Another Universal Language for Intermediate Translation) corre en una máquina virtual CUP (Concurent Uniform Processor) Intel SPARC Intérprete MIPS Análisis Lexicográfico/ Scanner Sintáctico/Parser Semántico Generación de Código Intermedio Optimización texto ASCII (programa) secuencia de tokens árbol sintáctico abstracto árbol sintáctico abstracto aumentado programa AuLait programa AuLait optimizado

12 Tubos y Filtros: Contexto
Arquitectura de Software - Estilos de Componentes y Conectores Tubos y Filtros: Contexto Procesamiento de flujos de datos. Problema descompuesto en una serie de actividades. Las actividades transforman uno o más flujos de datos de entrada en uno o más flujos de datos de salida, en forma incremental. Cada actividad es un filtro. Los filtros se comunican solamente a través de tubos: operación que envía una secuencia de datos de un proceso a otro.

13 Tubos y Filtros: Problema
Arquitectura de Software - Estilos de Componentes y Conectores Tubos y Filtros: Problema El sistema es una secuencia de transformaciones de los datos. La aplicación debe descomponerse en varias partes. Las transformaciones son: bien ordenadas sin estado interno independientes Fuerzas: Futuros cambios intercambiando algunos filtros. Pequeñas transformaciones son más fácilmente reutilizadas. Los datos pueden tener diferentes formatos.

14 Tubos y Filtros: Solución
Arquitectura de Software - Estilos de Componentes y Conectores Tubos y Filtros: Solución Shaw: modelo de sistema flujo de datos entre componentes componentes filtros (transformaciones, procesamiento local, asíncrono) conectores tubos (streams) estructura de control flujo de datos. Buschmann: el sistema se divide en varios pasos secuenciales de procesamiento los pasos se conectan con flujos de datos cada filtro consume y procesa sus datos en forma incremental el origen de los datos, el destino y los filtros se conectan con tubos que implementan el flujo de datos entre pasos de procesamiento.

15 Tubos y Filtros: Estructura
Arquitectura de Software - Estilos de Componentes y Conectores Tubos y Filtros: Estructura Filtros: unidades de procesamiento en las arquitecturas de tubos y filtros. enriquece, refina y/o transforma los datos. el procesamiento se inicia: el elemento siguiente solicita datos (pull) el elemento anterior envía datos (push) el filtro tiene un ciclo interno que solicita datos del filtro anterior y envía datos al siguiente (filtro activo). los filtros no comparten estado. los filtros no saben de la existencia o identidad de otros filtros.

16 Tubos y Filtros: Estructura
Arquitectura de Software - Estilos de Componentes y Conectores Tubos y Filtros: Estructura Tubos: conectan origen-filtro, filtro-filtro, filtro-destino transferencia de datos con un buffer First-In-First-Out si dos filtros activos se comunican con un tubo, éste los sincroniza

17 Tubos y Filtros: Estructura
Arquitectura de Software - Estilos de Componentes y Conectores Tubos y Filtros: Estructura Origen de datos: input del sistema brinda al sistema una serie de datos con la misma estructura o tipo ejemplos: archivo de líneas de texto, sensor pueden también ser activos (push) o pasivos. Destino de datos: a él llegan los resultados del procesamiento del sistema existen destinos activos (pull) y pasivos

18 El Ejemplo Input Scanner Parser Analizador Semántico Generador
Arquitectura de Software - Estilos de Componentes y Conectores El Ejemplo Input int getchar() Scanner token yylex() Parser bool yyparse() Analizador Semántico Generador de Código writeCodeByte() tubo UNIX read write Intérprete AuLait call getchar call yylex call semantic check call codgen write pipe read pipe

19 Tubos y Filtros: Dinámica
Arquitectura de Software - Estilos de Componentes y Conectores Tubos y Filtros: Dinámica Escenario I: push pipeline. La acción se inicia “empujando” los datos hacia el siguiente filtro. Data Source push Filtro 1 push Filtro 2 push Data Sink data write f1 data write f2 data write

20 Tubos y Filtros: Dinámica (cont.)
Arquitectura de Software - Estilos de Componentes y Conectores Tubos y Filtros: Dinámica (cont.) Escenario 2: push/pull pipeline. Origen y destino de datos pasivos. El filtro 2 juega el rol activo iniciando el proceso. Data Source Filtro 1 pull Filtro 2 pull/push Data Sink read read f1 data data f2 data write

21 Tubos y Filtros: Implementación
Arquitectura de Software - Estilos de Componentes y Conectores Tubos y Filtros: Implementación Dividir las tareas en una secuencia de pasos de procesamiento. los procesos deben ser independientes y ordenados. Definir el formato de los datos transmitidos a través de cada pipe. flexibilidad vs. performance. Decidir implementación de cada tubo. Determinar la implementación de los filtros (activos o pasivos) Diseñar e implementar los filtros. Diseñar política de errores. Instalar el sistema.

22 Ejemplo: Compilador Mocha
Arquitectura de Software - Estilos de Componentes y Conectores Ejemplo: Compilador Mocha Los sucesivos filtros comparten un cierto estado: la tabla de símbolos. No es una arquitectura Tubos y Filtros estricta. La implementación es un único programa. Analizador Lexicográfico/Scanner Analizador Sintáctico/Parser Tabla de Símbolos Analizador Semántico Generador de Código Intermedio

23 Tubos y Filtros: Consecuencias
Arquitectura de Software - Estilos de Componentes y Conectores Tubos y Filtros: Consecuencias Beneficios: los archivos intermedios no son necesarios flexibilidad reutilización de filtros rápida prototipación eficiencia con procesamiento paralelo. Desventajas: compartir información de estado es caro y poco flexible ineficiencia por conversión de datos errores pueden implicar reiniciar el sistema.

24 Características de Tubos y Filtros
Arquitectura de Software - Estilos de Componentes y Conectores Características de Tubos y Filtros Los tubos no tienen estado interno y simplemente comunican datos entre los filtros. Tubos y filtros ejecutan en forma no determinística sobre los datos hasta que éstos se acaban. Restricciones de conexión: existe una fuente de datos conectada al puerto input de un filtro; existe un destino de datos conectado al puerto output de un filtro.

25 Ventajas de Tubos y Filtros
Arquitectura de Software - Estilos de Componentes y Conectores Ventajas de Tubos y Filtros Simplicidad: forma limitada de interacción con el ambiente; la funcionalidad es sólo la composición de funcionalidades más sencillas; no existen interacciones complejas; promueve la reutilización y simplifica el mantenimiento; composición jerárquica: una combinación de tubos y filtros puede mostrarse externamente como un único filtro; por la independencia de procesamiento de los filtros, puede hacerse ejecución paralela o distribuida aumentando la disponiblidad y la performance.

26 Desventajas de Tubos y Filtros
Arquitectura de Software - Estilos de Componentes y Conectores Desventajas de Tubos y Filtros En general se piensa en términos de procesamiento por lotes al descomponer un problema como tubos y filtros: se pierde el paralelismo potencial y la cooperación; no es apropiado para aplicaciones interactivas; La performance suele ser baja debido a que la funcionalidad está aislada; cada filtro debe transformar los datos al formato apropiado o todos usar el que más acomode al conjunto, nunca el óptimo; si un filtro necesita contar con todo el input antes de producir el output, requiere entonces un buffer potencialmente muy grande; cada filtro actúa como proceso independiente consumiendo recursos cada vez que se lo invoca.


Descargar ppt "Estilos Particulares de Componentes y Conectores"

Presentaciones similares


Anuncios Google