Qué se entiende por diseño arquitectónico? Comprende el establecimiento de un marco de trabajo estructural básico para un sistema. Alude a la estructura general del software y el modo en que la estructura ofrece una integridad conceptual al sistema. De modo simple, se puede considerar que está compuesta por la estructura jerárquica de los componentes (módulos), la manera en la que dichos componentes interactúan y la estructura de datos que es utilizada por dichos componentes. Propiedades que deben especificarse como partes de un diseño arquitectural: Propiedades estructurales.- define los componentes de un sistema y la manera en la que dichos componentes se agrupan en paquetes e interaccionan entre ellos. Propiedades extra-funcionales.- debe indicar cómo el diseño arquitectónico alcanza los requisitos no funcionales como: rendimiento, capacidad, fiabilidad, seguridad, adaptabilidad, etc. Familias de sistemas relacionados.- debe permitir reconocer su estructura en los patrones repetitivos que se encuentran de manera habitual en el diseño de sistemas similares. Debe ser capaz de reutilizar bloques de construcción arquitecturales.
Un diseño arquitectural debe describirse utilizando diferentes tipos de modelos: Modelos estructurales.- representan la arquitectura como una colección organizada de componentes. Modelos Frameworks.- identifican patrones de diseño arquitectónico repetibles que se encuentran en aplicaciones similares. Modelos dinámicos.- muestran los aspectos del comportamiento dinámico de la arquitectura, indicando cómo la estructura o la configuración del sistema pueden cambiar en función de eventos externos. Modelos de procesos.- se enfocan en el diseño de los proceso del negocio que el sistema debe soportar. Modelos funcionales.- pueden utilizarse para representar la jerarquía funcional de un sistema. Por qué es importante su definición? Facilita la comunicación entre los diferentes participantes en el desarrollo. Resalta las decisiones de diseño que pueden tener un gran impacto en todo el proceso de desarrollo posterior. Aporta una visión de cómo se estructura el sistema y cómo sus componentes trabajan juntos.
Estilos arquitectónicos Modelos de descomposición de sistemas. Modelo de almacén central. Cliente/servidor. Modelos de máquinas abstractas. Modelos de control. Centralizado. Modelo de eventos. Modelos de descomposición modular. Modelo de flujo de datos. Modelo orientado a objetos. Modelos de dominio específico. Sommerville 2001 Estilos arquitectónicos Arquitectura centrada en los datos. Arquitectura centrada en los flujos de datos. Arquitectura llamada y respuesta (call and return). Arquitectura orientada a objetos. Arquitectura en capas. Pressman 2001 Un problema puede satisfacerse mediante diferentes estructuras a las que se llegarán posiblemente utilizando técnicas distintas. A veces la frontera entre dos estilos no está muy clara, lo que provoca que haya mezclas entre ellos.
Arquitectura centrada en los datos.- Como parte central de esta arquitectura aparece un almacén de datos, el cual es accedido de manera frecuente por otros componentes que actualizan, añaden, borran o modifican dichos almacenes El software cliente accede a un repositorio central. Repositorio pasivo.- el cliente software accede a los datos independientemente de cualquier cambio en los datos o a las acciones de otros clientes software. Repositorio activo (pizarra).- el repositorio envía información a los clientes cuando los datos de su interés cambian, siendo por tanto un ente activo. Arquitectura centradas en datos proporcionan integridad, es decir, los componentes existentes pueden cambiar y pueden añadirse nuevos componentes a la arquitectura sin que afecte a otros clientes. A su vez los datos pueden ser pasados entre clientes a través de mecanismos que coordinen dicha transferencia de información. Componentes cliente ejecutan procesos independientemente.
Arquitectura centrada en los flujos de datos.- Se basa en el patrón pipe and filter (tuberías y filtros). Este consta de un conjunto de componentes denominados filtros conectados entre si por tuberías que transmiten datos desde un componente al siguiente. Cada filtro trabaja de manera independiente de los componentes que se encuentran situados antes o después de ella. Se diseñan de tal modo que esperan un conjunto de datos en un determinado formato y obtiene como resultado otros datos de salida en un formato específico. Si el flujo degenera en una única línea de transformación, se denomina secuencial batch. Arquitectura centrada en los flujos de datos.-
Arquitectura llamada y respuesta (call and return).- Permite a los diseñadores software conseguir estructuras de programas relativamente fáciles de modificar y escalar. Podemos encontrar diferentes estilos dentro de este tipo: Programa principal/subprograma.- Descompone las funciones en una jerarquía de control donde el programa principal invoca a los otros programas subordinados, los cuales pueden a su vez invocar otros. Llamada de procedimiento remoto.- Los componentes de la arquitectura son distribuidos entre diferentes ordenadores de la red. Arquitectura llamada y respuesta (call and return).-
Arquitectura orientada a objetos.- Los componentes del sistema encapsulan datos y operaciones que deben utilizarse para manipular dichos datos. La comunicación y coordinación entre componentes se realiza mediante envío de mensajes. En esencia es un sistema parecido al anterior, donde se enfatiza el empaquetamiento entre datos y operaciones que permiten manipular y acceder a dichos datos. Arquitectura en capas.- Se definen un conjunto de niveles o capas, cada nivel interno que se atraviesa se aproxima más al nivel del conjunto de instrucciones máquina. Sistemas en capas puros.- cada capa sólo puede comunicarse con la vecinas. Esta solución aunque puede ser menos eficiente en algunos casos, facilita la portabilidad de los diseños