You are on page 1of 26

Estilos Particulares de Componentes y Conectores

Arquitectura de Software - Estilos de Componentes y Conectores

Patrones de Arquitectura de Software


La definicin de patrones en arquitectura de software intenta:
formalizar la forma en que se comunica y reusa la experiencia de diseo, capturar la experiencia probada de diseo 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 ms hacia la ingeniera de software: permitir que gente comn haga cosas que antes requeran virtuosismo.

Arquitectura de Software - Estilos de Componentes y Conectores

Patrones de Arquitectura
Un patrn de arquitectura de software es:
un esquema genrico 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.

Arquitectura de Software - Estilos de Componentes y Conectores

Qu es un Patrn?
Patrn
Contexto
Situacin de diseo que da lugar al problema.

Problema
Conjunto de fuerzas que surgen del contexto.

Solucin
Configuracin para balancear las fuerzas: Componentes y relaciones, Comportamiento dinmico.

Arquitectura de Software - Estilos de Componentes y Conectores

Descripcin de un Patrn
Ejemplo Nombre Contexto Problema Solucin Estructura Dinmica Implementacin Resolucin del ejemplo Variantes Usos conocidos Consecuencias Ejemplo conocido de la literatura Nombre descriptivo Situacin en que surge el problema Fuerzas que surgen en el contexto Configuracin que balancea las fuerzas Diagramas que describen la configuracin Descripcin del comportamiento. Escenarios Gua para implementar el patrn Aplicacin del patrn al ejemplo Alternativas para resolver el ejemplo Descripcin de problemas donde se aplica Ventajas y Desventajas

No existe un formalismo estndar para describir patrones.

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 heterogneos Cada clase tiene a su vez subclases y una misma arquitectura puede verse como perteneciente a ms de un estilo.

Arquitectura de Software - Estilos de Componentes y Conectores

Arquitecturas de Flujo de Datos


El sistema se percibe como una sucesin de transformaciones que sufre una serie de datos de entrada a travs del sistema. Los datos ingresan al sistema y fluyen a travs de las componentes una a una hasta que se asignan a un destino final: salida o almacenamiento. Son tpicos casos de arquitecturas que promueven la reusabilidad y la modificabilidad. Existen dos subestilos:
secuencial por lotes tubos y filtros

Arquitectura de Software - Estilos de Componentes y Conectores

Arquitectura Secuencial por Lotes


Validar Sort Actualizar Reportar

Es la estructura tpica de un sistema de procesamiento de datos tradicional por lotes (batch). Cada proceso se ejecuta completamente antes de comenzar la ejecucin del siguiente.

Arquitectura de Software - Estilos de Componentes y Conectores

Arquitectura de Tubos y Filtros


Enfatiza la transformacin incremental de los datos a travs de las sucesivas componentes. Cada componente (filtro) es un traductor que
procesa los datos de entrada usa poca informacin de contexto no retiene informacin de estado

Traducir al ingls Leer Traducir al chino

Escribir ingls

Escribir chino

Tubos y Filtros como un Patrn de Arquitectura

Arquitectura de Software - Estilos de Componentes y Conectores

11

Ejemplo: Compilador Portable de Mocha


Mocha (Modular Object Computation with Hypothetical Algorithms). AuLait (Another Universal Language for Intermediate Translation) corre en una mquina virtual CUP (Concurent Uniform Processor)
texto ASCII (programa)
Anlisis Lexicogrfico/ Scanner

secuencia de tokens
Anlisis Sintctico/Parser

rbol sintctico abstracto


Anlisis Semntico

rbol sintctico abstracto aumentado


Generacin de Cdigo Intermedio

programa AuLait
Optimizacin

programa AuLait optimizado


MIPS Intel SPARC Intrprete

Arquitectura de Software - Estilos de Componentes y Conectores

12

Tubos y Filtros: Contexto


Procesamiento de flujos de datos. Problema descompuesto en una serie de actividades. Las actividades transforman uno o ms flujos de datos de entrada en uno o ms flujos de datos de salida, en forma incremental. Cada actividad es un filtro. Los filtros se comunican solamente a travs de tubos:
operacin que enva una secuencia de datos de un proceso a otro.

Arquitectura de Software - Estilos de Componentes y Conectores

13

Tubos y Filtros: Problema


El sistema es una secuencia de transformaciones de los datos. La aplicacin debe descomponerse en varias partes. Las transformaciones son:
bien ordenadas sin estado interno independientes

Fuerzas:
Futuros cambios intercambiando algunos filtros. Pequeas transformaciones son ms fcilmente reutilizadas. Los datos pueden tener diferentes formatos.

Arquitectura de Software - Estilos de Componentes y Conectores

14

Tubos y Filtros: Solucin


Shaw:
modelo de sistema componentes conectores estructura de control flujo de datos entre componentes filtros (transformaciones, procesamiento local, asncrono) tubos (streams) 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.

Arquitectura de Software - Estilos de Componentes y Conectores

15

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 enva datos (push) el filtro tiene un ciclo interno que solicita datos del filtro anterior y enva datos al siguiente (filtro activo). los filtros no comparten estado. los filtros no saben de la existencia o identidad de otros filtros.

Arquitectura de Software - Estilos de Componentes y Conectores

16

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

Arquitectura de Software - Estilos de Componentes y Conectores

17

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 lneas de texto, sensor pueden tambin ser activos (push) o pasivos.

Destino de datos:
a l llegan los resultados del procesamiento del sistema existen destinos activos (pull) y pasivos

Arquitectura de Software - Estilos de Componentes y Conectores

18

El Ejemplo
Parser
bool yyparse() call yylex call semantic check read pipe

Intrprete AuLait
int getchar()

Scanner
token yylex() call getchar

Analizador Semntico
call codgen

tubo UNIX
read write write pipe

Input
int getchar()

Generador de Cdigo
writeCodeByte()

Arquitectura de Software - Estilos de Componentes y Conectores

19

Tubos y Filtros: Dinmica


Escenario I: push pipeline. La accin se inicia empujando los datos hacia el siguiente filtro.

Data Source push


data

Filtro 1 push
write

Filtro 2 push f1
data

Data Sink

write

f2
data

write

Arquitectura de Software - Estilos de Componentes y Conectores

20

Tubos y Filtros: Dinmica (cont.)


Escenario 2: push/pull pipeline. Origen y destino de datos pasivos. El filtro 2 juega el rol activo iniciando el proceso.
Filtro 1 pull
read

Data Source
read
data

Filtro 2 pull/push f1

Data Sink

data

f2
data

write

Arquitectura de Software - Estilos de Componentes y Conectores

21

Tubos y Filtros: Implementacin


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 travs de cada pipe.


flexibilidad vs. performance.

Decidir implementacin de cada tubo.


Determinar la implementacin de los filtros (activos o pasivos)

Disear e implementar los filtros. Disear poltica de errores. Instalar el sistema.

Arquitectura de Software - Estilos de Componentes y Conectores

22

Ejemplo: Compilador Mocha


Los sucesivos filtros comparten un cierto estado: la tabla de smbolos. No es una arquitectura Tubos y Filtros estricta. La implementacin es un nico programa.
Analizador Lexicogrfico/Scanner

Tabla de Smbolos

Analizador Sintctico/Parser

Analizador Semntico

Generador de Cdigo Intermedio

Arquitectura de Software - Estilos de Componentes y Conectores

23

Tubos y Filtros: Consecuencias


Beneficios:
los archivos intermedios no son necesarios flexibilidad reutilizacin de filtros rpida prototipacin eficiencia con procesamiento paralelo.

Desventajas:
compartir informacin de estado es caro y poco flexible ineficiencia por conversin de datos errores pueden implicar reiniciar el sistema.

Arquitectura de Software - Estilos de Componentes y Conectores

24

Caractersticas de Tubos y Filtros


Los tubos no tienen estado interno y simplemente comunican datos entre los filtros. Tubos y filtros ejecutan en forma no determinstica sobre los datos hasta que stos se acaban. Restricciones de conexin:
existe una fuente de datos conectada al puerto input de un filtro; existe un destino de datos conectado al puerto output de un filtro.

Arquitectura de Software - Estilos de Componentes y Conectores

25

Ventajas de Tubos y Filtros


Simplicidad:
forma limitada de interaccin con el ambiente; la funcionalidad es slo la composicin de funcionalidades ms sencillas; no existen interacciones complejas; promueve la reutilizacin y simplifica el mantenimiento; composicin jerrquica: una combinacin de tubos y filtros puede mostrarse externamente como un nico filtro; por la independencia de procesamiento de los filtros, puede hacerse ejecucin paralela o distribuida aumentando la disponiblidad y la performance.

Arquitectura de Software - Estilos de Componentes y Conectores

26

Desventajas de Tubos y Filtros


En general se piensa en trminos de procesamiento por lotes al descomponer un problema como tubos y filtros:
se pierde el paralelismo potencial y la cooperacin; 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 ms 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 acta como proceso independiente consumiendo recursos cada vez que se lo invoca.

You might also like