Diseño Arquitectónico
Objetivos del diseño
Para la transformación del modelo de análisis en un modelo de diseño del sistema, se definen los objetivos de diseño del proyecto, se descompone el sistema en subsistemas más pequeños que pueden ser realizados por diferentes equipos y se seleccionan estrategias para la construcción del sistema como elegir la plataforma de hardware y software en la que se ejecutará, el formato y el sistema de almacenamiento de datos persistentes, la arquitectura estructural , el flujo de control global o la política de control de acceso e interfaz.
Modelo de diseño
Descripción clara de las estrategias
Descomposición en subsistemas
Ventajas
Reutilización a gran escala: posibilidad de tener partes ya hechas del sistema
Gestión de la complejidad: descomposición del problema
Análisis más detallado del sistema
Herramienta de comunicación entre los participantes
Muestra el impacto en el sistema de requisitos funcionales, no funcionales y
restricciones
Calidad y Diseño del software
Un diseño de calidad proporciona representaciones del software en las que se puede evaluar la calidad del mismo, permite una “traducción” correcta de los requisitos en un programa y sirve como fundamento para las actividades posteriores (implementación, prueba y mantenimiento).
El resultado de un proyecto sin diseño es la construcción de un sistema poco fiable que se escapa al control de sus creadores y que por lo tanto es difícil de corregir y mejorar, sistemas ineficientes que no optimizan los recursos y que posiblemente no se ajusten ni a las necesidades del cliente ni a las condiciones económico-temporales del proyecto.
Las actividades principales del Diseño arquitectónico son decisiones
Los grandes sistemas siempre se descomponen en subsistemas que proporcionan conjuntos de servicios relacionados. El proceso de diseño inicial que identifica estos subsistemas y establece como se lleva a cabo su control y comunicación se llama diseño arquitectónico
Estructuración del sistema en varios subsistemas principales
Descomposición modular donde cada subsistema se divide en componentes o
módulos interconectados
Modelado del control o estructuración de un plan de control para la ejecución del
sistema por partes
El diseño arquitectónico construye una salida que no es otra cosa que una serie de
documentos con diversas perspectivas de la arquitectura del sistema
Modelo estructural estático. Describe subsistemas o componentes a
desarrollar como unidades separadas
Modelo de proceso dinámico. Describe la organización del sistema en
tiempo de ejecución
Modelo de interfaz. Describe la definición de los servicios ofrecidos por
cada subsistema a través de su interfaz pública
Modelos de relación. Describe las relaciones entre los distintos
módulos o subsistemas
La arquitectura puede estar en función de requisitos no funcionales
Rendimiento
Protección
Disponibilidad
Mantenibilidad
Organización del sistema
La estructuración u organización se basa en la identificación de subsistemas o capas clave a
desarrollar de forma independiente y en las relaciones entre subsistemas
Los modelos organizacionales más usados son:
Modelo de depósito o repositorio
Modelo cliente-servidor
Modelo de capas o máquina abstracta
Modelo de objetos que describe la realización
física de los casos de uso
Ventajas
Compartición eficiente
Ligera abstracción el manejo de datos
Centralización
Integración directa
Desventajas
Modelo de datos común
Difícil integración de subsistemas “externos”
Dificulta la evolución
Estandarización de las políticas.
Dificultad para distribuir
se organiza como un conjunto de servicios y servidores asociados
junto con los clientes que acceden y usan dichos servicios
Componentes
Conjunto de servidores
Conjunto de clientes
Una red
La ventaja más importante de este modelo es que es un modelo de sistemas distribuido
Dicha estructura suele ser de tres
capas para una aplicación distribuida
Capa de presentación
Capa de procesamiento de la aplicación
La arquitectura cliente-servidor más simple es un modelo en dos capas
La aplicación se organiza como un servidor (o varios idénticos) y un conjunto de clientes
Modelo de “cliente delgado.” Todo el procesamiento de la aplicación y la administración de datos se realiza en el servidor. El cliente únicamente es responsable de la presentación del os datos
Ventajas
Desventajas
Se suele utilizar cuando se heredan sistemas centralizados
La interfaz migra a los PC’s
La aplicación misma actúa como servidor y maneja todo el procesamiento y la
administración de los datos
Implica una gran carga de procesamiento para el servidor
El servidor realiza todos los cálculos, lo que provoca una gran cantidad de
tráfico en la red entre el cliente y el servidor
Desaprovecha la capacidad de cálculo de las máquinas de los procesos cliente
Modelo de “cliente grueso”. El servidor sólo es responsable de la administración de datos. El software del cliente implementa toda o gran parte de la lógica de la aplicación y las interacciones del usuario con el sistema.
Ventajas
Desventajas
Distribuye al cliente el procesamiento lógico y la presentación
Aprovecha la capacidad de procesamiento de los clientes
Los ATM no se conectan directamente a la base de datos del cliente sino al
gestor de transacciones
Administración del sistema más compleja al distribuirse la funcionalidad de la
aplicación
Aumenta el coste del mantenimiento ya que es necesario la reinstalación o
actualización de cada computador si la aplicación cambia
Modelo cliente-servidor en Tres capas
Las tres capas son procesos separados lógicamente que se ejecutan en procesadores separados. Son más escalables que las arquitecturas en dos niveles
Componentes
Administración de datos
Servicios de aplicación
Presentación
La principal ventaja con respecto al sistema en dos capas es que es escalable de forma sencilla ya que se pueden añadir sin problemas más servidores web que aumenten la capacidad de soporte de clientes simultáneos en el sistema
Capa de administración de datos
Modela la interacción entre subsistemas mediante una organización en capas, cada capa presta servicios a la capa inmediatamente superior y actúa como cliente de la inferior (en la que queda encerrada)
Ventajas
Su arquitectura es cambiable y
portable
Preservando la interfaz, una capa se puede reemplazar por otra
Cuando cambian las interfaces de las capas sólo afecta a
las capas adyacentes
Sólo hay que reimplementar las capas más internas
Desventajas
Resulta difícil estructurar los sistemas pues es posible que el usuario requiera acceso a capas internas lo que subvierte el modelo
El rendimiento puede resultar afectado por los múltiples niveles de interpretación de
órdenes que se requieran
Descomposición modular
Después de diseñar la arquitectura estructural se descomponen los subsistemas en módulos
Modelos principales de descomposición modular
Modelo orientado a objetos
Modelo de flujo de datos
El sistema se descompone en un conjunto de objetos que se comunican entre ellos
Los módulos son objeto con estado privado y operaciones definidas sobre ese estado
Entidades reales fácilmente comprensibles, mejor reutilización
Difícil representar entidades más complejas
El sistema se descompone en módulos funcionales que reciben datos y los
transforman en datos de salida
Los datos fluyen de una función a otra y se van transformando
Incluye información sobre la secuencia de operaciones y resulta intuitivo para ciertas
personas
Modelado de Control
Representa la forma en que los subsistemas se controlan para que sus servicios se entreguen
en el lugar correcto y en el momento justo
Existen dos modelos de control genéricos
Control centralizado
Control basado en eventos
Un subsistema tiene la responsabilidad de controlar el sistema y administrar la ejecución de otros subsistemas. Existen dos clases, en base al modo en que se ejecutan los subsistemas, secuencial o paralelo
Modelo de llamada-retorno (ejecución secuencial)
Modelo del administrador (concurrente)
Utilizado por lenguajes de programación como Ada, Pascal y C aunque también con
lenguajes Orientados a Objetos
Ventaja
Inconveniente
Es relativamente sencillo analizar los flujos de control y conocer cómo responderá el sistema a cierto tipo de entradas
Las excepciones a operaciones normales son complicadas de gestionar
Utilizado en sistemas de tiempo real “suaves”, es decir,
con restricciones de tiempo no muy estrictas
Un componente del sistema se designa como administrador y controla el inicio, detención y coordinación del sistema según las variables de estado del sistema, verifica si otros procesos han producido información para procesar o si ha de pasarles información para el procesamiento
Control dirigido por eventos
Modelos de
Transmisión
Se rigen por eventos generados en el exterior como pueden ser: la señal de un sensor, un
comando desde un menú
Existen dos tipos de modelos dirigidos por eventos
Modelos de transmisión
Modelos dirigidos por interrupciones
Se diferencia del control centralizado en que la política de control no está contenida en el controlador de eventos y mensajes, sino que los subsistemas deciden qué eventos requieren y el controlador asegura que estos eventos sean enviados a dichos subsistemas
Ventajas
Desventajas
La evolución es relativamente sencilla pues se pueden integrar nuevos subsistemas
registrando sus eventos en el controlador de eventos
Los subsistemas se pueden implementar en máquinas distribuidas de forma
transparente para otros subsistemas
Los subsistemas no saben si los eventos se manejarán ni cuando lo harán
Cuando un subsistema genera un evento no sabe que otros subsistemas han
registrado un interés en ese evento
Modelos
dirigidos por Interrupciones
Resultan útiles para sistemas de tiempo real que necesitan manejar muy rápidamente eventos
generados en el exterior como por ejemplo sistemas de seguridad en automóviles
Interrupciones
Existen varios tipos de interrupciones conocidas con un controlador definido para cada
tipo
Cuando se recibe una interrupción de un determinado tipo, un interruptor de hardware transfiere el control al controlador adecuado
El controlador puede iniciar o detener otros procesos en
respuesta a los eventos recibidos por el interruptor
Ventajas
Desventajas
Permite dar respuestas muy rápidas a los eventos
Complejo de programar y difícil de validar
Si el número de interrupciones está limitado por el hardware, cuando se alcanza el
límite no se pueden gestionar más tipos de eventos
Sistemas Distribuidos
Todos los grandes sistemas informáticos son en la actualidad sistemas en los que el
procesamiento de la información se distribuye sobre varias computadoras
ventajas
desventajas
compartición de recursos, apertura, concurrencia, escalabilidad y
tolerancia a defectos
se centran en la complejidad, la seguridad, manejabilidad e
impredecibilidad del sistema
Sistemas peer-to-peer
Son sistemas descentralizados donde los cálculos se pueden realizar en cualquier nodo de la
red, no se distingue, a priori, entre clientes y servidores
Estos sistemas están diseñados para aprovechar la ventaja de potencia computacional y
disponibilidad de almacenamiento de grandes redes
Existen dos arquitecturas p2p
Arquitectura descentralizada
Arquitectura semicentralizada
Sistemas de Sistemas Orientados a Servicios
El desarrollo de la www permitió que se pudiera acceder a información de otras
organizaciones bajo el formato HTML
Servicio web
Representación estándar para cualquier recurso computacional o de información que
pueda ser usado por otros programas
Las organizaciones pueden hacer accesible información a diferentes programas definiendo y publicando una interfaz de servicio web que defina los datos y su forma de acceso
Componentes de un servicio web
Proveedor de servicios
Solicitante del servicio
Ventajas
Los usuarios pueden pagar por los servicios sólo en función del uso. No hay por qué
comprar componentes caros que rara vez se utilicen
Aplicaciones más pequeñas
Construcción a medida de nuevos servicios, enlazando servicios existentes
Estándares basados en XML
SOAP
WSDL
UDDI