Arquitecturas de Software Ingeniería del Software I Universidad Rey Juan Carlos César Javier Acuña [email protected] ARQUITECTURAS SOFTWARE Índice Introducción Motivación Definición Estilos Arquitectónicos Pipes and Filters Tipos abstractos de datos y OO Invocación Implícita Basada en Eventos Sistemas en Capas Sistemas basados en depósitos Máquina Virtual o Interprete 2 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Introducción Motivación Incremento en el tamaño y complejidad del software Necesidad de aprender de la experiencia: reutilización de estructuras asociadas a problemas similares Una adecuada estructura general es tan importante como las implementaciones concretas de las partes. Definición La arquitectura de software de un programa o de un sistema computacional esta definida por la estructura, comprendida por los elementos de software, la propiedades visibles de esos elementos y las relaciones entre ellos. 3 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Introducción Incluyendo: la descripción de los componentes con los cuales se construyen los sistemas las interacciones entre esos componentes patrones para guiar la composición restricciones sobre dichos patrones Componentes: servidores, clientes, bases de datos, filtros, capas en un sistema jerárquico, etc. Interacciones: llamadas a procedimientos, protocolos C/S, protocolos de acceso a BD, etc. 4 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Introducción ¿De qué se ocupa? Diseño preliminar o de alto nivel. Organización a alto nivel del sistema, incluyendo aspectos como la descripción y análisis de propiedades relativas a su estructura y control global, los protocolos de comunicación y sincronización utilizados, la distribución física del sistema y sus componentes, etc. Otros aspectos relacionados con el desarrollo del sistema y su evolución y adaptación al cambio: composición, reconfiguración, reutilización, escalabilidad, mantenibilidad, etc. 5 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Introducción ¿De qué no se ocupa? Diseño detallado. Diseño de algoritmos. Diseño de estructuras de datos. 6 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Indican: Los tipos de componentes y conectores involucrados. Patrones y restricciones de interconexión o composición entre ellos: Invariantes del estilo (restricciones) Asociados a cada estilo hay una serie de propiedades que lo caracterizan, determinando sus ventajas e inconvenientes, condicionando la elección de uno u otro estilo. 7 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Clasificación General de los Estilos Sistemas Basados en Flujos de Datos Pipes and filters (tuberías y filtros) Batch Sequential Sistemas Call/Return Sistemas Principal/subrutinas Sistemas OO Capas jerárquicas Máquinas Virtuales Interpretes Sistemas basados en el conocimiento Sistemas Centrados en Datos (repositorios) Bases de Datos Sistemas de HiperTexto Sistemas de pizarra Componentes Independientes Procesos de comunicación Sistemas de Acontecimientos 8 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Pipes and Filters (tuberías y filtros) Filters Pipes 9 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Pipes and Filters (tuberías y filtros) Descripción Cada componente tiene un conjunto de entradas y un conjunto de salidas. Cada componente lee las entradas y las transforma en salidas. Restricciones: Los filtros deben ser independientes. No deben compartir estado con otros filtros. Los filtros realizan la labor independientemente del flujo de entrada. Especializaciones 10 Pipelines Bounded pipes Typed pipes Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Pipes and Filters (tuberías y filtros) Ventajas Permite entender el sistema global en términos de la combinación de componentes Soporta de buena manera la reutilización. Los filtros son idependientes de sus vecinos Facilidad de Mantenimiento y mejora Facilidad de diagnóstico (rendimiento, deadlocks) Soportan la ejecución concurrente Desventajas No aconsejado para cuando se necesita interactividad Problemas de performance ya que los datos 11 se transmiten en forma completa entre filtros Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Tipos Abstractos de Datos y OO Obj: objetos Op:invocaciones a métodos 12 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Tipos Abstractos de Datos y OO Descripción Las representaciones de los datos y las operaciones están encapsulados en un tipo abstracto de datos u objeto Los componentes son objetos Las invocaciones de métodos son los conectores Restricciones: Los objetos son responsables de la integridad de sus representaciones Dicha representación es ocultada al resto de los objetos Ventajas Gracias al invariante de ocultación es posible reemplazar la Implementación si que afecte a los clientes 13 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Tipos Abstractos de Datos y OO Desventajas Para invocar métodos de un objeto se debe conocer su identidad Efectos colaterales 14 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Invocación Implícita Basada en Eventos ? ! ! ? ! ? ! ! Objetos o Procesos 15 ? ? ! ! ? ? Universidad Rey Juan Carlos - Ingenieria del Software I Invocación Implícita ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Invocación Implícita Basada en Eventos Descripción 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 “implicita” 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 ! ! 16 Universidad Rey Juan Carlos - Ingenieria del Software I ? ! ! ? ! ? ? ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Invocación Implícita Basada en Eventos Restricciones: Quien anuncia el evento no conoce a que componentes afecta el evento No se pueden hacer asunciones acerca del orden de procesamiento Ventajas Provee un robusto soporte de reusabilidad Facilita la evolución del sistema Desventajas Perdida de control en el comportamiento del sistema ! Problemas en el intercambio de datos ! ? Es difícil asegurar la corrección global del ! sistema 17 Universidad Rey Juan Carlos - Ingenieria del Software I ? ? ! ? ! ! ? ! ? ? ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Sistemas en Capas Aplicaciones Llamadas a Procedimientos Utilidad básica Nivel Núcleo Usuarios 18 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Sistemas en Capas Descripción Organizado jerárquicamente en capas, donde cada capa provee servicios a la capa superior y es servido por la capa inferior Los componentes son cada una de las capas Los conectores son los protocolos de interacción entre las capas Restricciones: La interacción está limitada a las capas adyacentes Ventajas Facilita la descomposición del problema en varios niveles de abstracción. 19 Universidad Rey Juan Carlos - Ingenieria del Software I Aplicaciones ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Sistemas en Capas Soporta la mejora, los cambios solo afectan a las capas vecinas Se pueden cambiar las implementaciones respetando las interfaces con las capas adyacentes. Desventajas No todos los sistemas pueden estructurarse en capas. Es difícil encontrar la separación en capas adecuada Aplicaciones 20 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Sistemas basados en depósitos Procesamiento ks2 ks1 ks8 ks3 Pizarra (datos Compartidos) ks7 ks4 Memoria Accesos Directos 21 ks6 ks5 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Sistemas basados en depósitos Descripción Existen dos tipos de componentes Una estructura central de datos (representa el estado del proceso) Componentes independientes (operan en función del depósito de datos) Las interacciones entre el repositorio y los demás componentes es variable: La entrada de los datos es seleccionada por los componentes ks2 El estado de los datos del repositorio selecciona ks1 el proceso a ejecutar (pizarra) ks8 ks7 22 Universidad Rey Juan Carlos - Ingenieria del Software I ks3 Pizarra (datos Compartidos) ks4 ks6 ks5 ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Sistemas basados en depósitos Ventajas Posibilita la integración de agentes. Adecuado para la resolución de problemas no deterministas. Se puede resumir el estado de conocimiento en cada momento del proceso Desventajas Estructura de datos común a todos los agentes Problemas de carga a la hora de chequear y vigilar el estado ks2 de la pizarra. ks1 ks8 ks7 23 Universidad Rey Juan Carlos - Ingenieria del Software I ks3 Pizarra (datos Compartidos) ks4 ks6 ks5 ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Máquina virtual o intérprete 24 Entradas Datos (Estado del programa) Salidas Máquina de Interpretación simulada Programa siendo interpretado Instrucción seleccionada Datos seleccionados Estado Interno Del Interprete Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Máquina virtual o intérprete Descripción Formado por cuatro componentes Un motor de simulación o interpretación Una memoria que contiene el código a interpretar Una representación del estado de la interpretación Una representación del estado del programa que se esta simulando Ventajas Solución software a problemas hardware. Desventajas No siempre es aplicable Reducido a lenguajes de programación 25 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Estilos Arquitectónicos Otros Estilos Procesos distribuidos Sistemas cliente/servidor Sistemas en 3 capas Programa Principal/Subrutinas Típica de lenguajes procedurales Un programa principal gestiona el control de ejecución de las subrutinas Transición de Estados Arquitecturas Heterogéneas Se da por la mezcla de estilos Existen diferentes maneras de combinar 26 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Lenguajes de Descripción de Arquitecturas (LDAs) Un LDA es un lenguaje o notación para describir una arquitectura software: Descripción de componentes, conectores y enlaces entre ellos. Herramientas para la verificación de la arquitectura y el prototipado rápido. Existen LDAs de propósito general y otros de dominio específico (DSLs) Requisitos Composición Debe describir el sistema como una composición de partes 27 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Lenguajes de Descripción de Arquitecturas (LDAs) Configuración Debe describir la arquitectura independientemente de los componentes Abstracción Debe describir los roles abstractos que juegan los componentes Reutilización Debe permitir reutilizar componentes, conectores, y arquitecturas Heterogeneidad Debe permitir combinar descripciones heterogéneas Análisis Debe permitir diversas formas de análisis de la arquitectura 28 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Lenguajes de Descripción de Arquitecturas (LDAs) Ejemplos Lenguaje Unificado de Modelado (UML) Lenguajes de interconexión de módulos y de descripción de interfaz (CORBA-IDL) Lenguajes de descripción de arquitectura: Unicon (Mary Shaw y colaboradores - CMU) Wright (Allen y Garlan) Darwin (Magee y Kramer - IC) Rapide (Luckham) C2 (Medvidovic) LEDA (U. Málaga) 29 Universidad Rey Juan Carlos - Ingenieria del Software I ARQUITECTURAS SOFTWARE Bibliografía Software Architecture – Perspective on an Emerging discipline – M. Shaw, D. Garlan – Ed. Prentice Hall. Software Architecture in Practice (2nd Edition) – L. Bass, P. Clements, R. Kazman – Ed. Addison Wesley Arquitecturas de SW: http://lml.ls.fi.upm.es/~jjmoreno/sbc/arquitecturas_sw.ppt Servicios Avanzados Multimedia Basados en Componentes: http://www.lcc.uma.es/~av/misConfs/p1arquitecturas.ppt 30 Universidad Rey Juan Carlos - Ingenieria del Software I