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.

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

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