Estilos Particulares de Componentes y Conectores

Slides:



Advertisements
Presentaciones similares
Ingeniería del Software
Advertisements

Clase 09.  Garantizar la calidad de software  La prueba nunca termina, del IS translada se translada al usuario  Las casas de software invierte del.
Lcda. Ingrid Graü Diseño de Sistemas 1. Lcda. Ingrid Graü Diseño de Sistemas 2.
Las tres primeras fases de un compilador suelen agrupan en un sola fase llamada Análisis del programa a compilar y las tres ultimas en una sola fase llamada.
¿Qué es un Diagrama de Flujo? UN DIAGRAMA DE FLUJO, TAMBIÉN LLAMADO FLUJOGRAMA DE PROCESOS O DIAGRAMA DE PROCESOS, REPRESENTA LA SECUENCIA O LOS PASOS.
Ingeniería del Software Diseñó de Software Universidad de los Andes Demián Gutierrez Abril 2009.
INTRODUCCION A LOS SISTEMAS DE COMPUTO ARQUITECTURA VON NEUMAN Ing. David Gonzalez.
Traducción dirigida por la Sintaxis Teoría de Autómatas y Lenguajes Formales Alma María Pisabarro, 2007.
Es la primera etapa técnica del proceso de Ingeniería del Software, consiste en producir un modelo o representación técnica del software que se va a desarrollar.
Organizaciones involucradas: El centro de cálculo noruego. Crea lenguaje llamado Simula 67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl, en 1967.
Ingreso , proceso y salida de datos
Procesadores superescalares
UNIVERSIDAD TECNICA DEL NORTE VIRTUALIZACION DE APLICACIONES
LOS DIFERENTES LENGUAJES DE PROGRAMACION PARA LA WEB
UNIDAD III: LAS TIC COMO FUENTES DE INVESTIGACION y DIFUSION DE INFORMACION Objetivo: Conocer y aplicar adecuadamente los principios básicos de estructura.
Sistema de Base de datos
U.T. 11: Introducción A Las Bases De Datos
LENGUAJE DE PROGRAMACIÓN Y SOFTWARE PROPIETARIO
ADMINISTRACíON DE LA MEMORIA EN SISTEMAS RECIENTES
LENGUAJES Y REPRESENTACION TECNICA
Lenguajes y representación técnica
SISTEMAS DE INFORMACIÓN
Ingeniería de Software Somerville
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Ciclo de Vida del Software
Definición de un Sistema Distribuido
INTRODUCCION La teoría de sistemas (TS) es un ramo específico de la teoría general de sistemas (TGS). La TGS surgió con los trabajos del alemán Ludwig.
LÓGICA DE PROGRAMACIÓN
INTRODUCCIÓN A JAVA.
Ingeniería del Software
Materia: Tecnología de la Información
FUNDAMENTOS DE PROGRAMACION EN ENTORNO WEB. Rodrigo Cabello Ing. Informático Director de proyectos Think – Ideas in Motion FUNDAMENTOS.
Diagrama de Flujo La presentación gráfica de sistemas es una forma ampliamente utilizada como herramienta de análisis, ya que permite identificar aspectos.
Ciclo de vida del Software
GESTION POR PROCESOS.
Programación Orientada a Objetos. ¿Qué es un ordenador? “Un sistema digital con tecnología microelectrónica capaz de procesar información a partir de.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS
Patrones de Diseño Sistemas de Información II – IS 445 Docente: Lisber Arana Hinostroza Mayo
APLICACIONES DE LA LINGÜÍSTICA COMPUTACIONAL (III)
Características Generales y Entornos de Desarrollo
Funciones del Analizador Sintáctico
Fundamentos de la Programación I
Instituto Tecnológico de Minatitlán
FUNDAMENTOS DE PROGRAMACIÓN. INTRODUCCIÓN  Conceptos: Informática, Ordenador, Programa, Dato, Bit, Byte, Hardware, Software, Lenguaje de Programación,
DIAGRAMA DE FLUJO Prof. Víctor Rojas. CONCEPTO El diagrama de flujo es una representación gráfica de la secuencia de pasos que se realizan para obtener.
Arquitectura de Software
1 TEMA 2: Organización de computadores Procesadores Memorias Dispositivos de E/S.
Estructura de los sistemas Operativos 1. Componentes de un sistema operativo  Administración de procesos  Administración de memoria  Subsistema de Entrada/Salida.
Estructura de los Sistemas Operativos Alumna:Arratea Almeyda Aracelli.
Arquitectura de Computadores de Computadores. Organización y Arquitectura La Arquitectura: se refiere a los atributos que tienen un impacto directo en.
ESTRUCTURA DE SISTEMAS OPERATIVOS Carbajal Rojas karla.
DIAGRAMA DE FLUJO DE PROCESO
Diagramas de Interacción. Escuela de Ingeniería en Sistemas Computacionales Facultad de Ciencias Matemáticas y Físicas Universidad Estatal
Introducción a la computadora Prof. Yolanda I. López de Jesús GEIC 1000.
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Características de los Sistemas Operativos
Desarrollo de Sistemas de Información Contable - Sis USB 1 METODOLOGIAS DE DESARROLLO DE SOFTWARE.
Introducción al procesamiento digital de señales Ing. José Arturo Marín Thames
GC-F-004 V.01 CENTRO DE INDUSTRIA Y LA CONSTRUCCIÓN REGIONAL TOLIMA.
Pipelining Peligros de control.
¿Qué es la celda de manufactura? La celda de manufactura es un conjunto de componentes electromecánicos, que trabajan de manera coordinada para el logro.
Desarrollo de Sistemas de Información Contable - Sis USB 1 METODOLOGIAS DE DESARROLLO DE SOFTWARE.
COMPILADORES Semana 1 Ing. Jorge Vigil Farfán MgTI, PMP, ITIL-Expert, Cloud, ISO 27002, CCNP, CCNA, CCNA Sec, NSE.
Ha llegado el momento de dar una mirada al interior de los Sistemas Operativos. En las siguientes secciones examinaremos cuatro estructuras distintas.
Estructura de los Sistemas Operativos
Luis Fernando Muñoz Pantoja Ingeniero de Sistemas Copyright 2019 Luis Fernando Muñoz Pantoja Ingeniero de Sistemas Derechos reservados UML.
Hilos de Procesamiento. Hilos Concepto Beneficios Hilos a nivel kérnel y a nivel usuario Modelos multihilos Hilos de Solaris 2 Hilos de Java.
ARQUITECTURA DE SOFTWARE FLUJO DE DATOS Tuberías y Filtros DOCENTE: ING. ALFREDO YAPIAS CIRINEO INTEGRANTES: TINOCO BLANCO, HANS BALVIN QUISPE, JOSE MORALES.
Transcripción de la presentación:

Estilos Particulares de Componentes y Conectores

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.

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.

¿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.

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.

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.

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

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.

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

Tubos y Filtros como un Patrón de Arquitectura

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

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.

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.

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.

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.

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

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

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

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

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

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.

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

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.

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.

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.

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.