Download - Mod 2_ Estilos Arquitectonicos
Confidencial
Arquitectura de SoftwareModulo 2: Estilos Arquitectónicos
Confidencial
Agenda
Confidencial
» Objetivos» ¿Qué es un estilo arquitectónico?» Clasificación de estilos arquitectónicos
» Flujos de datos» Llamada – Retorno» Maquinas virtuales» Componentes independientes» Datos centralizados
» Tabla comparativa» Workshop
» Ejercicio 1» Ejercicio 2
Agenda
Confidencial
Objetivos
Confidencial
Objetivos
» Objetivo general: Conocer los diferentes estilos arquitectónicos así como sus fortalezas y debilidades.
» Objetivo específico: Proporcionar el conocimiento base para seleccionar el mejor estilo arquitectónico en base a los requerimientos proporcionados.
Confidencial
Estilos arquitectónicos
Confidencial
¿Qué es un estilo arquitectónico?
» Los ingenieros civiles, cuando tienen que construir un puente generalmente seleccionan un tipo de puente determinado que se adapte a las necesidades del contexto y del problema a resolver
Confidencial
¿Qué es un estilo arquitectónico?
» Una familia de sistemas de software en términos de un patrón de organización estructural, que define un vocabulario de componentes, tipos de conectores y un conjunto de restricciones de cómo pueden ser combinadas.
Confidencial
» Componente: un componente de software es una unidad de composición con interfaces especificadas y dependencias explicitas.
(Ej. Web Server, Filtros, Bases de datos, Objetos etc.)
» Conectores: Especifica los mecanismos por el cual los componentes transfieren el control o los datos.
(Ej. llamadas a procedimientos, tuberías, difusión de eventos)
¿Qué es un estilo arquitectónico?
Confidencial
Flujo de Datos
» El estilo arquitectónico de flujo de datos trata a un sistema de software como una serie de transformaciones en conjuntos sucesivos de datos, donde los datos y las operaciones en él son independientes entre sí.
» El sistema de software es descompuesto en elementos de procesamiento de datos en donde los datos dirigen y controlan el orden del procesamiento. Cada componente en esta arquitectura transforma sus datos de entrada en sus correspondientes datos de salida. » Secuencial en Lotes » Red de Flujo de Datos (Pipe and Filter)
Confidencial
Secuencial en Lotes
» En la arquitectura secuencial en lotes, cada subsistema o módulo de transformación de datos empieza su proceso hasta que su subsistema previo completa sus cálculos. El flujo de datos lleva una serie de datos en conjunto de un subsistema a otro .
» En la arquitectura secuencial en lotes, cada subsistema o módulo de transformación de datos empieza su proceso hasta que su subsistema previo completa sus cálculos. El flujo de datos lleva una serie de datos en conjunto de un subsistema a otro.
Confidencial
Secuencial en Lotes
Confidencial
» Beneficios
» Divisiones simples en subsistemas. » Cada subsistema puede ser un programa autónomo que trabaje con
datos de entrada para producir datos de salida.
» Limitaciones
» No provee de una interfaz interactiva. » No soporta concurrencia, por lo tanto este tipo de arquitectura tiene un
rendimiento bajo. » Debido a la forma en que trabaja tiene una alta inactividad.
Secuencial en Lotes
Confidencial
Secuencial en Lotes
» Dominios aplicables:
» Clásico de procesamiento de datos (operaciones bancarias básicas, realización de facturas, etc.)
» Cada subsistema lee sus archivos relacionados de entrada y escribe archivos de salida.
Confidencial
Pipes and Filters
» En un estilo Pipe and Filter cada componente tiene un conjunto de entradas y un conjunto de salidas. Un componente lee un flujo de datos en sus entradas y produce flujos de datos sobre sus salidas, entregando una completa instancia de los resultados en un orden estándar.
» Esto se logra generalmente mediante la aplicación de una transformación local de los flujos de entrada y procesamiento incremental. Por lo tanto los componentes se denominan filtros. Los conectores de este estilo sirve como conductos para los flujos, transmitiendo salidas de un filtro a entradas de otro. De aquí que los conectores se denominen tuberías.
Confidencial
Pipes and Filters
Confidencial
» Existen 3 formas para hacer el flujo de datos:» Push only (Write only)
» La fuente de datos empuja los datos al flujo inferior» El filtro debe empujar los datos al flujo inferior
» Pull only (Read only)» Un consumidor de datos jala los datos de un flujo superior» Un filtro debe jalar los datos del flujo superior
» Pull/Push (Read/Write)» Un filtro puede jalar datos del flujo superior y empujar los datos
transformados al flujo inferior
» Existen dos tipos de filtros» Los filtros activos jalan los datos y los datos transformados los empujan
fuera (pull/push). Trabajan con los tuberías pasivas que proveen mecanismos de lectura/escritura para jalar y empujar. El mecanismo de tuberías y filtros de Unix adopta este modo.
Pipes and Filters
Confidencial
» Existen dos tipos de filtros
» Los filtros activos jalan los datos y los datos transformados los empujan fuera (pull/push). Trabajan con los tuberías pasivas que proveen mecanismos de lectura/escritura para jalar y empujar. El mecanismo de tuberías y filtros de Unix adopta este modo.
» Los filtros pasivos permite conectar tuberías de envío y extracción de datos. Trabaja con tuberías activas que extraen los datos de los filtros y meten los datos al siguiente filtro. El filtro debe proveer en este caso mecanismos de lectura/escritura. Es parecido a la arquitectura de flujo de datos.
Pipes and Filters
Confidencial
Pipes and Filters
Confidencial
Pipes and Filters
» Restricciones» Los filtros deben ser independientes. No deben compartir estado con
otros filtros.» Los filtros realizan la labor independientemente del flujo de entrada.
» Ventajas» Soporta de buena manera la reutilización. Los filtros son independientes
de sus vecinos.» Facilidad de Mantenimiento y mejora.» Facilidad de diagnóstico.» Soportan la ejecución concurrente.
Confidencial
Pipes and Filters
» Desventajas» No aconsejado para cuando se necesita interactividad.» Problemas de performance ya que los datos se transmiten en forma
completa entre filtros.» El diseñador debe proveer de una transformación completa de entradas
y salidas para cada filtro.» Puede ser difícil configurar dinámicamente las tuberías y los filtros en un
sistema.
» Dominios aplicables» Donde el sistema puede ser dividido en una serie de pasos a través de
los flujos de datos.» El formato de los datos en el flujo es simple, estable y adaptable.» Cantidad significativa de procesos que pueden ser segmentados para
obtener un mejor rendimiento.
Confidencial
Llamada retorno
» Reflejan la estructura del lenguaje de programación. Permite al diseñador del software construir una estructura de programa relativamente fácil de modificar y ajustar a escala. Se basan en la bien conocida abstracción de procedimientos/funciones/métodos.
» Esta arquitectura de software es caracterizada por ver el sistema entero como una estructura jerárquica, el sistema de software es descompuesto en módulos lógicos (sub-sistemas) en diferentes niveles en la jerarquía.
» Subestilos» Principal - Subrutina (Main-Subroutine) » Capas (Layers) » Sistemas OO (Data Abstaction and Object-Oriented Organization)
Confidencial
» El diseño de la arquitectura de principal-subrutina ha dominado las metodologías de diseño de software por mucho tiempo. El propósito de este estilo arquitectónico es reutilizar subrutinas y tener subrutinas individuales desarrolladas independientemente.
» Usando este estilo, los sistemas de software son descompuestos en subrutinas jerárquicas refinadas de acuerdo a la funcionalidad deseada del sistema. Los refinamientos se llevan a cabo verticalmente hasta que la subrutina descompuesta es lo suficientemente simple para tener una sola responsabilidad independiente y esta funcionalidad puede ser reusada y compartida por múltiples llamados de las capas superiores.
Main-subroutine
Confidencial
» Parametrización» Valor » Referencia
Main-subroutine
Confidencial
» Data Flow Diagram – Main-subroutine
» Transform flow: El flujo entrante alimenta los datos en un formato externo, que posteriormente es transformado en otro formato. Finalmente el flujo saliente lleva los datos hacia el siguiente proceso.
» Transaction flow: Evalua los datos entrantes, y decide cual camino seguir entre muchos caminos de acción.
» Un transform flow es mapeado por un modulo de control, transforma y procesa la información saliente.
» El transaction flow se convierte en un modulo despachador de control el cual administra todas las acciones subordinadas.
Main-subroutine
Confidencial
» Data Flow Diagram – Video Centro
Main-subroutine
Confidencial
» Estructura jerárquica – Video Centro
Main-subroutine
Confidencial
» Beneficios» Es fácil de descomponer el sistema basado en la definición de tareas en
un refinamiento top-down.» Esta arquitectura puede ser usada en un subsistema de diseño
orientado a objetos.
» Limitaciones» Acoplamientos estrechos ocasionará mayor número de efectos dominó
al realizar cambios comparado con un diseño orientado a objetos. » En el estilo clásico principal-subrutina al compartir datos globalmente se
tienen mayor cantidad de vulnerabilidades.
Main-subroutine
Confidencial
Layers
» Como su nombre sugiere, un sistema arquitectónico de capas se descompone en un número de capas altas y bajas en una jerarquía, cada capa consiste de un grupo de clases relacionadas que son encapsuladas en un paquete, en un componente de despliegue, o como un grupo de subrutinas en el formato de bibliotecas de métodos o de archivos de cabecera. También, cada capa tiene una sola responsabilidad en el sistema.
» Una petición de la capa i+1 invoca los servicios que provee la capa i vía la interfaz de la capa i, la respuesta podría regresar a la capa i +1 si la tarea es completada; de otra forma la capa i continuamente invoca los servicios de la capa i-1.
Confidencial
» Las líneas sólidas indican la dirección del camino de la solicitud de servicio. Mientras más alta sea la capa, los servicios son más abstractos (en términos de la distancia de la capa física del sistema operativo). En el nivel más alto, los usuarios sólo ven las interfaces de usuario como las GUI, pero no los detalles de implementación.
Layers
Confidencial
» Diagrama de
paquetes
Layers
Confidencial
» Se muestra un diagrama de clases de UML para una arquitectura en capas. Todas las capas implementan una interfaz de una capa común, esto hace mas fácil remplazar las capas. La capa mas alta es vinculada a su capa inmediata inferior por una relación de agregación.
Layers
Confidencial
» Dominios aplicables» Cualquier sistema que pueda ser dividido en porciones específicas de la
aplicación y en porciones específicas de la plataforma que son las que proveen servicios genéricos a la aplicación del sistema.
» Aplicaciones que tienen divisiones limpias entre servicios básicos, críticos, de interfaces de usuario, etc.
» Aplicaciones que tienen un número de clases que están relacionadas entre ellas de tal manera que puedan ser agrupadas en un paquete para proveer los servicios a otras.
Layers
Confidencial
» Beneficios» Desarrollo de software incremental basado en niveles incrementales de
abstracción. » Tiene una elevada flexibilidad: la intercambiabilidad y la reusabilidad son
elevadas debido a la separación de la interfaz estándar y su implementación.
» Promociona la portabilidad, cada capa puede ser una máquina abstracta desplegada independientemente.
» Tiene una elevada independencia entre las capas superior e inferior, debido a que no hay impacto al haber cambios en los servicios de la capa inferior siempre que sus interfaces correspondientes se mantengan sin cambios.
Layers
Confidencial
» Limitaciones» Bajo desempeño en tiempo de ejecución dado que las solicitudes del
cliente o una respuesta al cliente puede pasar potencialmente a través de varias capas. Surgen temas a considerar en este tipo de diseño como la sobrecarga en la distribución y acumulamiento de datos por cada capa.
» Muchas aplicaciones no se ajustan a este diseño arquitectónico.» El incumplimiento de las comunicaciones entre capas puede causar
puntos muertos, y el "puenteo" puede causar un estrecho acoplamiento. » Otras cuestiones a considerar cuando se elige este estilo son el manejo
de excepciones y errores, ya que las fallas en una capa se propagan hacia todas las capas de arriba.
Layers
Confidencial
Data Abstaction and Object-Oriented Organization
”If you get the data structures right, the rest of the program much simpler “
Confidencial
» En este estilo las representaciones y sus operaciones primitivas asociadas son encapsuladas en un tipo de datos abstracto u objeto. Los componentes para este estilo son los objetos o en su caso instancias de los tipos de datos abstractos.
» A los objetos también se les denomina “administradores” porque son responsables de preservar la integridad de los recursos a través de una representación (que la esconde de otros objetos). Los objetos interactúan a través de funciones o por la invocación de procedimientos.
» El uso de tipos de datos abstractos, y el incremento en el uso de sistemas orientados a objetos es ampliamente extendido. Por ejemplo, algunos sistemas permiten "objetos" en tareas concurrentes; otros permiten a los objetos tener múltiples interfaces.
Data Abstaction and Object-Oriented Organization
Confidencial
Data Abstaction and Object-Oriented Organization
Confidencial
» Los sistemas orientados a objetos tienen muchas propiedades buenas, la mayoría de las cuales son bien conocidas.
» Beneficios» Debido a que el objeto esconde su representación de los clientes, es
posible cambiar su implementación sin afectarlos. » La agrupación de un conjunto de rutinas de acceso a los datos permite a
los diseñadores descomponer los problemas en una colección de agentes interactivos.
» Limitaciones» Los objetos deben conocer la identidad de los objetos con los que van a
interactuar, es decir que si se cambia un objeto en algún punto, se debe modificar a todos aquellos objetos que lo invocan.
Data Abstaction and Object-Oriented Organization
Confidencial
Virtual machines
» Una máquina virtual es construida sobre un sistema existente y provee una abstracción virtual, un conjunto de atributos y operaciones. En la mayoría de los casos una máquina virtual separa el lenguaje de programación o el ambiente de aplicación de la plataforma de ejecución. Una máquina virtual puede parecer similar a un software de emulación. Interpretes y la maquina virtual de Java son ejemplos de virtual machines.
» Ejemplos» Interpreters» Rule-based systems
Confidencial
Interpreters
» Ejecución del motor simulada en software, un interprete incluye el pseudo-programa siendo interpretado y el motor de interpretación mismo. El pseudo-programa incluye los programas mismos y la analogía del interprete de su estado de ejecución (registros de activación). El motor de interpretación incluye tanto la definición del interprete y el estado actual de su ejecución.
» Un interprete tiene generalmente 4 componentes:» Un motor de interpretación para hacer el trabajo.» Una memoria que contiene el pseudo-código a ser interpretado. » Representación del estado de control del motor de interpretación.» Representación del actual estado del programa siendo simulado.
Confidencial
Interpreters
Confidencial
» Interpretes son comúnmente usados para construir maquinas virtuales que cierran la brecha entre el motor de computo previsto por la semántica del programa y el motor de computo disponible en el hardware.
Interpreters
Confidencial
Ruled-based Systems
» Los sistemas basados en reglas es la forma mas simple de inteligencia artificial en la industria (también conocidos como sistemas expertos). Es una forma de codificar conocimiento de experto humano en un sistema automatizado.
» Un sistema experto es un programa informático que esta diseñado para mantener el conocimiento acumulado de uno o mas dominios expertos.
» Debido a que las acciones de los sistemas basados en reglas tienden a ser ocultos, las personas no se dan cuenta de cómo son ampliamente utilizados.
Confidencial
» Facts: Son afirmaciones que sirven para representar conceptos, datos, objetos, etc.
» Patterns: Son tuplas conteniendo variables.» Rules: Lista de patrones del lado izquierdo, representando las
premisas, y del lado derecho una lista de patrones representando las consecuencias
Ruled-based Systems
Confidencial
» Conocimiento base: Guarda el conocimiento experto como condiciones/acciones/reglas.
» Memoria de trabajo: guarda facts iniciales y genera facts derivados por el motor de inferencia.
» Motor de inferencia: empareja partes de condición de reglas contra facts guardados en la memoria de trabajo.
» Explicación de fondo: provee justificación a las soluciones del usuario (cadena de rasonamiento)
» Fondo de adquisición de conocimiento: ayuda a integrar nuevo conocimiento, también automatiza la adquisición del conocimiento.
» Interfaz de usuario: inserta facts, pregunta al sistema y presenta soluciones.
Components Ruled-based Systems
Confidencial
Components Ruled-based Systems
Confidencial
Ruled-based Systems
Confidencial
Independent Components
» Consiste de procesos independientes u objetos que se comunican atreves de mensajes. No hay control entre los componentes.
» El principal objetivo de este estilo arquitectónico es la modificabilidad.
» Ejemplos :» Event Systems
Confidencial
Event Systems
» En lugar de invocaciones de procedimientos explicitas o directas, un componente anuncia uno o más eventos y otros componentes registran el interés en un evento asociando un procedimiento a dicho evento.
» La ocurrencia de un evento causa la invocación “implícita” de procedimientos en otros módulos.
» Los componentes son los módulos cuyas interfaces ofrecen un conjunto de procedimientos y de eventos.
» Los conectores incluyen llamadas a procedimientos tradicionales así como el ligado de eventos con llamadas a procedimientos.
Confidencial
Event Systems
Confidencial
» Ventajas» Provee un robusto soporte de reusabilidad.
» Cualquier componente puede ser introducido en el sistema simplemente registrando el evento.
» Facilita la evolución del sistema.
» Desventajas» Perdida de control en el comportamiento del sistema.
» Los componentes no saben que otros componentes responderán.» Componentes podrían saber quien responderá pero no sabrían el orden.
» Problemas en el intercambio de datos.» Puede provocar problemas de rendimiento.
Event Systems
Confidencial
Data-centered systems
» Las arquitecturas de software centradas en datos se caracterizan por un almacén centralizado de datos que es compartido por todos los componentes de software que lo rodean. El sistema de software es descompuesto en dos particiones principales: el almacén de datos y los componentes de software independientes (agentes).
» Las conexiones entre el módulo de datos y los componentes de software son implementados tanto por el método de invocación explícita como por el método de invocación implícita. En arquitecturas de software puramente centradas en datos, los componentes de software no se comunican entre ellos directamente, todas las comunicaciones son conducidas a través del almacén de datos.
Confidencial
Data-centered systems
» El módulo de datos compartido provee de todos los mecanismos para que los componentes de software puedan acceder a él; Los mecanismos son del tipo: inserción, borrado, actualización y recuperación.
» Existen dos categorías de arquitecturas centradas en datos: repositorio y pizarrón. Se diferencian por la estrategia de control de flujo.
Confidencial
Repository
» El estilo arquitectónico de repositorio es una arquitectura centrada en datos que soporta interacción de los usuarios para el procesamiento de datos.
» Los agentes del componente de software del almacén de datos controlan el cálculo y el flujo lógico del sistema.
» En el siguiente diagrama se muestra una imagen general de la arquitectura de repositorio las líneas punteadas que apuntan hacia el repositorio indican que los clientes del repositorio tienen control total sobre el flujo lógico. Los clientes pueden obtener y colocar datos en el almacén de datos. Clientes diferentes pueden tener interfaces diferentes y diferentes privilegios de acceso a los datos.
Confidencial
Repository
Confidencial
Repository
» Ejemplo (Diagrama de clases)
Confidencial
Repository
» Una instancia puede ser accesada y compartida por multiples clientes para leer, escribir o buscar.
Confidencial
Repository
» Dominios aplicables:» Es adecuada para sistemas de información largos y complejos donde
muchos clientes componentes del software necesitan acceder al repositorio en maneras diferentes.
» Cuando se requiera transacciones de datos para conducir el flujo de control o los cálculos.
» Beneficios» Integridad de los datos, facilidad para respaldar y restaurar datos.» Escalabilidad de los sistemas y reusabilidad de los agentes, facilidad
para agregar nuevos componentes de software porque no tienen comunicación directa entre ellos.
» Reduce la sobrecarga de datos transitorios entre componentes de software.
Confidencial
Repository
» Limitaciones» La confiabilidad del almacén de datos y la disponibilidad son temas a
considerar más profundamente al elegir este tipo de arquitectura. Los repositorios centralizados son más vulnerables comparados con los repositorios distribuidos con replicación de datos.
» Tiene una alta dependencia entre la estructura de los datos, el almacén de datos y sus agentes. Cambios en la estructura de los datos tienen un impacto significativo en sus agentes. La evolución de los datos es más difícil y cara.
» Hay un alto costo al mover los datos por la red si los datos son distribuidos.
Confidencial
Blackboards
» La arquitectura de pizarrón fue desarrollada para aplicaciones de reconocimiento de diálogos en los 70´s. Otras aplicaciones para este tipo de arquitectura son los sistemas de reconocimiento de patrones en imágenes y sistemas de emisión del clima.
» La palabra pizarrón surge dada la similitud que tiene este tipo de arquitectura con un salón de clases donde se enseña y se aprende, donde los maestros y los estudiantes pueden compartir datos para resolver problemas en clase a través del pizarrón. Los estudiantes y los maestros juegan el rol de agentes que contribuyen para resolver un problema. Pueden trabajar en paralelo o independientemente para encontrar la mejor solución.
Confidencial
Blackboards
» La idea de la arquitectura del pizarrón es similar a la del pizarrón usado para resolver problemas.
» Todo el sistema es descompuesto en principalmente en dos particiones, una de estas particiones es llamada el "pizarrón", que es usado para almacenar datos (hipótesis y hechos), y la otra partición es denominada las "fuentes de conocimiento" que almacenan el conocimiento específico del dominio. El ”controlador” que es usado para iniciar el pizarrón y las fuentes de conocimiento, es decir toma el rol de un iniciador (bootstrap) y de control de supervisión global
» Las conexiones entre el subsistema de pizarrón y las fuentes del conocimiento son básicamente invocaciones implícitas desde el pizarrón hacia una fuente de conocimiento específica, que están registradas en el pizarrón de antemano. Al cambiar los datos en el pizarrón se activan una o más fuentes de conocimiento para un procesamiento continuo. Los cambios en los datos pueden ser causados por nueva información deducida o por resultados de hipótesis de las fuentes de conocimiento.
Confidencial
» Diagrama de bloques para la arquitectura de pizarrón. Las líneas sólidas indican enlaces de datos, mientras que las líneas punteadas representan el control del flujo lógico, el cual es controlado por cualquier cambio en los datos en el almacén de datos, esto es, los datos en el almacén del pizarrón dirigen el flujo de los cálculos.
Blackboards
Confidencial
Blackboards
» Diagrama de clases
Confidencial
» Dominios» Es adecuada para resolver problemas sin límites fijos (abiertos) y
complejos como en los problemas de inteligencia artificial donde no hay soluciones preestablecidas.
» Donde los problemas abarcan múltiples disciplinas, y cada problema envuelve completamente diferentes tipos de experticia en el conocimiento.
» Donde una solución parcial o aproximada es aceptable. » Donde una búsqueda exhaustiva es imposible e impráctica debido a que
el conocimiento disponible o las hipótesis no estén completas o no son exactamente veraces.
Blackboards
Confidencial
» Beneficios» Escalabilidad, ofrece facilidad para añadir o actualizar las fuentes de
conocimiento. » Concurrencia, todas las fuentes de conocimiento pueden trabajar en
paralelo gracias a que son independientes entre ellas. » Soporta experimentación para hipótesis. » Reusabilidad de los agentes de fuentes de conocimiento.
» Limitaciones» Debido a la dependencia cerrada entre el pizarrón y las fuentes de
conocimientos, el cambio en la estructura del pizarrón puede tener un impacto significante en todos sus agentes.
» Dado que se esperan únicamente soluciones parciales o aproximaciones, puede ser difícil decidir en qué momento debe terminar el razonamiento.
» Es un desafío la depuración y la realización de pruebas.
Blackboards
Confidencial
Tabla comparativa
Confidencial
» Cada renglón denota si un estilo arquitectónico responde al atributo de calidad en cada columna, de la siguiente manera: "+" significa bueno, "++" significa muy bueno, "-" significa malo, "--" significa muy malo. Una celda vacía denota que no hay un juicio explícito para ese par estilo-atributo. Al examinar cada estilo arquitectónico contra los atributos de calidad y considerando el dominio de la aplicación para cada estilo arquitectónico, se puede obtener una idea de la aplicabilidad de un estilo arquitectónico en ese proyecto o de las arquitecturas de software que se pueden usar en conjunto para al final tener una Arquitectura.
Tabla comparativa
Confidencial
¿Preguntas?
Confidencial
Gracias!