Sunteți pe pagina 1din 37

10. Diseño Arquitectónico

Objetivos

! Importancia del diseño arquitectónico de Software.

! Modelos para la documentación de una arquitectura de software.

! Diferentes tipos de arquitecturas de SW.

! Utilización de los modelos arquitectónicos de dominio específico.

Tópicos

! Estructuración del sistema.

Modelo de depósito Modelo cliente-servidor Modelo de máquina abstracta

! Modelos de Control.

Control centralizado

Dirigidos por eventos

! Descomposición modular.

Modelos de objetos

Modelos de flujos de datos

! Arquitecturas de dominio específico.

Modelos genéricos

Modelos de referencia

Los sistemas grandes siempre se descomponen en subsistemas que suministran algún conjunto relacionado de servicios.

El proceso de diseño inicial para identificar estos subsistemas y establecer un marco de trabajo para el control y comunicación de los subsistemas se llama “diseño arquitectónico”, y lo que produce este proceso de diseño es una descripción de la arquitectura de software.

Esto implica identificar los componentes principales y la comunicación entre ellos.

Ventajas de la especificación del diseño y la documentación de una arquitectura de sw:

1. Comunicación entre los stakeholders

2. Análisis del sistema.

3. Reutilización a gran escala.

Ventajas de la especificación del diseño

"

Comunicación entre los stakeholders. La arquitectura es una presentación de alto nivel del sistema que es utilizada como punto de discusión por un rango de stakeholders diferentes.

"

Análisis del sistema. Hacer explícita la arquitectura es una etapa inicial del desarrollo del sistema, significa que se debe llevar a cabo cierto tipo de análisis. Las decisiones en el diseño arquitectónico tienen un efecto profundo sobre cuándo el sistema puede cumplir los requerimientos críticos como el desempeño, la fiabilidad y la mantenibilidad.

"

Reutilización a gran escala. Una arquitectura del sistema es una descripción compacta y manejable de cómo se organiza el sistema y cómo interoperan los componentes. La arquitectura se puede transferir a lo largo de los sistemas con requerimientos similares y así poder reutilizar software a gran escala.

!

Actividades comunes en el proceso de diseño arquitectónico:

1.

Estructuración del sistema.

el sistema se estructura en varios subsistemas principales, donde un subsistema es una unidad de software independiente.

2.

Modelado del control.

se establece un modelo general de las relaciones de control entre las partes del sistema.

3.

Descomposición modular.

cada subsistema identificado se descompone en módulos.

No existe una distinción clara entre subsistemas y módulos, pero es útil distinguirlos como se muestra a continuación:

1.

Un subsistema es un sistema por si mismo cuya operación no depende de los servicios suministrados por otro subsistemas.

2.

Un módulo es por lo regular un componente del sistema que suministra uno o más servicios a otros módulos.

!

#

La salida:

Documento de diseño arquitectónico; éste consiste de varias representaciones gráficas de los modelos del sistema junto con el texto descriptivo asociado.

!

Descripción de cómo se estructura el sistema en subsistemas y cómo cada subsistema se estructura en módulos.

!

Los modelos arquitectónicos que se pueden desarrollar son:

1.

Un modelo estructural estático.

2.

Un modelo de proceso dinámico.

3.

Un modelo de interfaz.

4.

Modelos de relación.

Descripción arquitectónica:

-Utilización de ADL´s. -UML.

!

La arquitectura del sistema afecta directamente a los requerimientos no funcionales del sistema, por lo tanto, el estilo particular y la estructura elegida para una aplicación puede depender de ellos:

Desempeño.

la arquitectura se debe diseñar para localizar las operaciones críticas dentro de un número reducido de subsistemas con poca comunicación.

Seguridad.

utilizar una estructura en capas con los recursos más críticos protegidos por las capas más internas.

Protección.

las operaciones relacionadas con la protección se deben localizar en un solo subsistema o un número reducido de subsistemas.

Disponibilidad.

incluír componentes redundantes de tal forma que sea posible reemplazar y actualizar los componentes sin detener el sistema.

Mantenibilidad.

utilizar componentes autocontenidos que puedan cambiarse con facilidad.

10.1 Estructuración del sistema

!

En el nivel más abstracto, un diseño arquitectónico se puede ver como un diagrama de bloques en el que cada cuadro representa un subsistema.

!

Las flechas indican que los datos y/o el control se pasan de un subsistema a otro en la dirección de las flechas.

! Un diagrama arquitectónico de bloques presenta un panorama general de la estructura del sistema; por lo general, comprensible por los diversos ingenieros involucrados.

!

Los diagramas de cuadros y flechas no son la única representación arquitectónica que se utiliza, sin embargo es uno de los más útiles.

Modelo estructural de la arquitectura de un sistema de robot de embalajes

Sistema de Visión Sistema de Controlador Controlador Identificación del Brazo Gripper de Objetos Sistema de
Sistema de
Visión
Sistema de
Controlador
Controlador
Identificación
del Brazo
Gripper
de Objetos
Sistema de
Selección de
Paquetes
Controlador
Conveyor
Sistema
Empaquetador

! Se pueden desarrollar modelos más específicos de la estructura que muestren como los subsistemas comparten datos, como están distribuidos y cómo se conectan entre ellos.

1.Modelo de depósito

2.Modelo cliente-servidor

3.Modelo de máquina abstracta

10.1.1 El modelo de depósito

! Los subsistemas que componen un sistema deben intercambiar información con el fin de que puedan trabajar de forma conjunta y efectiva.

! Existen 2 formas fundamentales para lograr esto:

#Todos los datos compartidos se ubican en una base de datos central que puede ser accedida por todos los subsistemas.

#Cada

se

subsistema tiene su

propia base de datos.

Los datos

intercambian con otros subsistemas pasando mensajes entre ellos.

! La gran mayoría de los sistemas que utilizan grandes cantidades de datos se organizan alrededor de una base de datos compartida o depósito.

! Por lo tanto, este modelo es adecuado para aplicaciones donde los datos sean generados por un subsistema y utilizados por otro.

Las ventajas y desventajas de un depósito compartido son:

1.Es una forma eficiente de compartir grandes cantidades de datos.

2.

Los subsistemas que producen datos no necesitan saber cómo son utilizados esos datos por otros subsistemas.

3.

Sin embargo, si se genera un gran volumen de información, será difícil evolucionar si se ha acordado un modelo de datos.

4.

Las actividades como respaldo, seguridad, control de acceso y recuperación de errores están centralizadas.

5.

Sin embargo, varios subsistemas pueden tener diferentes requerimientos de políticas de seguridad, recuperación y respaldo.

6.El modelo de compartición es visible a lo largo del esquema de depósito.

7.Sin embargo, es difícil distribuir el depósito en varias máquinas.

Diseño Generador de del Editor Código Editor de Diseño del Proyecto Repositorio Programa Trasladador Generador
Diseño
Generador de
del Editor
Código
Editor de
Diseño del
Proyecto Repositorio
Programa
Trasladador
Generador
Analizador
de Reporte
de diseño

10.1.2 El modelo cliente-servidor

!

Es un modelo de sistemas distribuido que muestra cómo los datos y el procesamiento se distribuyen a lo largo de varios procesadores.

!

Los componentes principales de este modelo son:

#

Un conjunto de servidores independientes que ofrecen servicios a otros

#

subsistemas. Un conjunto de clientes que llaman a los servicios ofrecidos por los servidores.

#

Por lo general estos son subsistemas. Una red que permite a los clientes acceder a estos servicios.

!

Los clientes tienen que conocer los nombres de los servidores disponibles y los servicios que suministran.

!

Sin embargo, los servidores no requieren conocer la identidad de los clientes o cuántos clientes existen.

!

Los clientes acceden a los servicios suministrados por un servidor a través de llamadas a procedimientos remotos.

!

Arquitectura de un sistema bibliotecario para películas e imágenes.

Cliente 1 Cliente 2 Cliente 3 Cliente 4 Ancho de Banda de la red Servidor
Cliente 1
Cliente 2
Cliente 3
Cliente 4
Ancho de Banda de la red
Servidor de
Servidor de
Servidor de
Servidor de
Vídeo
Fotografía
Hipertexto
Catálogo
Archivos clip
Hipertexto
Catálogo
Fotografía
de Película
WEB
Digitalizada

! La ventaja mas importante del modelo cliente-servidor es que es una arquitectura distribuida.

! Es fácil agregar un nuevo servidor e integrarlo con el resto del sistema o actualizar de forma transparente los servidores sin afectar otras partes del sistema.

! Cada servidor debe tener responsabilidad de las actividades de administración de datos como la de respaldo y de recuperación.

10.1.3 El modelo de máquina abstracta

! El modelo de máquina abstracta de una arquitectura (algunas veces denominado modelo de capas) modela la interacción entre los subsistemas.

!

Organiza un sistema en una serie de capas cada una de las cuales suministra un conjunto de servicios.

!

Soporta el desarrollo incremental de subsistemas en diferentes capas.

Cuando una interfase de la capa cambia, sólo afectada.

la capa adyacente es

!

Sin embargo, una desventaja de este enfoque es que estructurar a los sistemas de esta forma es difícil.

!

El desempeño también puede ser un problema debido a los múltiples niveles de interpretación de órdenes que algunas veces se requieren.

Modelo de máquina abstracto de un sistema de administración de versiones

Administrador de Versiones

Administrador de Objetos

Sistema de Base de Datos

Sistema

Operativo

10.2 Modelos de Control

! Los modelos para estructurar un sistema se refieren a la manera en que un sistema se descompone en subsistemas.

! Para trabajar como un sistema, los subsistemas deben controlarse para que sus servicios se entreguen al lugar correcto en el momento justo.

! Los modelos estructurales no incluyen información de control; en su lugar, el arquitecto debe organizar los subsistemas acorde a un modelo de control que complemente el modelo estructural.

! Se pueden identificar 2 enfoques generales para el control:

#Control Centralizado. Un subsistema tiene completa responsabilidad para controlar, iniciar y detener otros subsistemas.

#Control basado en eventos. En lugar de que la información de control esté contenida en un sistema, cada subsistema puede responder a eventos generados en el exterior.

Los modelos de control complementan a los modelos estructurales.

10.2.1 Control Centralizado

! Un subsistema se designa como controlador del sistema y tiene la responsabilidad de administrar la ejecución de otros subsistemas.

!

Se dividen en 2 clases, dependiendo de si los subsistemas controlados se ejecutan secuencialmente o en paralelo.

1.

El modelo de llamada-retorno.

2.

El modelo del administrador.

10.2.1 Control Centralizado

1. El modelo de llamada-retorno.

Este es el modelo familiar de subrutina descendente en el que el control inicia en la parte superior de una jerarquía y, por medio de llamadas a la subrutina, pasa a los niveles inferiores del árbol. Sólo es aplicable a sistemas secuenciales.

Programa Principal Rutina 1 Rutina 2 Rutina 3
Programa Principal
Rutina 1
Rutina 2
Rutina 3
Rutina 1.1
Rutina 1.1
Rutina 1.2
Rutina 1.2
Rutina 3.1
Rutina 3.1
Rutina 3.2
Rutina 3.2

10.2.1 Control Centralizado

2. El modelo del administrador.

Este se aplica a los modelos concurrentes. Un componente del sistema se designa como un sistema administrador y controla el inicio, la detención y la coordinación de otros procesos del sistema.

Proceso de Sensor Proceso Actuador Controlador del Sistema Procesos de Computación Interface de Usuario Manejador
Proceso de Sensor
Proceso Actuador
Controlador del Sistema
Procesos de Computación
Interface de Usuario
Manejador de Fallas

10.2.2 Sistemas dirigidos por eventos

! En los modelos de control centralizados, las decisiones de control por lo regular se determinan por los valores de algunas variables del estado del sistema. En contraste, los modelos de control dirigidos por eventos se rigen por eventos generados en el exterior.

! Existe una variedad de diferentes tipos de sistemas dirigidos por eventos que se pueden desarrollar.

! Estos incluyen:

a las hojas de cálculo, en las que el valor cambiante de las celdas provoca que otras celdas se modifiquen, #los sistemas de producción basados en reglas como los de IA, en los que una condición que se convierte en verdadera provoca que se dispare una acción, #y los objetos activos en los que cambiar un valor de un atributo del objeto dispara algunas acciones.

#

!

En esta sección se tratan 2 modelos de control dirigidos por eventos:

1.

Modelos de transmisión. En estos modelos, un evento se transmite, en principio, a todos los subsistemas. Cualquier subsistema que pueda manejar ese evento responde a él.

Subsistema 1
Subsistema
1
Subsistema 2
Subsistema
2
Subsistema 3
Subsistema
3
Subsistema 4
Subsistema
4
manejar ese evento responde a él. Subsistema 1 Subsistema 2 Subsistema 3 Subsistema 4 Manejador de
Manejador de Eventos y Mensajes
Manejador de Eventos y Mensajes
Manejador de Eventos y Mensajes

Manejador de Eventos y Mensajes

2. Modelos dirigidos por interrupciones. Estos se utilizan exclusivamente en sistemas de tiempo real donde las interrupciones externas son detectadas por un controlador de interrupciones. Después éstas se pasan a algún otro componente para su procesamiento.

Interrupciones

Manejador 2 Manejador 3 Manejador 4 Proceso 2 Proceso 3 Proceso 4
Manejador 2
Manejador 3
Manejador 4
Proceso 2
Proceso 3
Proceso 4

Vector de Interrupciones

Manejador 1
Manejador 1
Proceso 1
Proceso 1

10.3 Descomposición modular

! Después de diseñar una arquitectura estructural, la siguiente etapa del proceso de diseño arquitectónico es descomponer los subsistemas en módulos.

!

No existe una distinción rígida entre la descomposición del sistema y la descomposición modular.

!

Se consideran 2 modelos que son de utilidad cuando se descompone un subsistema en módulos:

#

Un modelo orientado a objetos. el sistema se descompone en un conjunto de objetos que se comunican entre ellos.

#

Un modelo de flujo de datos. el sistema se descompone en módulos funcionales que afectan entradas de datos y las transforman, de alguna manera, en datos de salida.

10.3.1 Modelo de objetos

! Un modelo orientado a objetos de una arquitectura de sistema estructura el sistema en un conjunto de objetos débilmente acoplados con interfases bien definidas. ! Los objetos llaman a los servicios ofrecidos por otros objetos.

Cliente Cliente # Nombre Dirección Período de Crédito Factura Factura # Fecha Cantidad Cliente Emisión
Cliente
Cliente #
Nombre
Dirección
Período de Crédito
Factura
Factura #
Fecha
Cantidad
Cliente
Emisión
Envío de Recordatorio
Aceptación de Pago
Envío de Recibo
Pago Factura # Fecha Cantidad Cliente #
Pago
Factura #
Fecha
Cantidad
Cliente #
Recibo Factura # Fecha Cantidad Cliente #
Recibo
Factura #
Fecha
Cantidad
Cliente #

Es posible utilizar una notación de UML.

Un modelo de objetos de un sistema de procesamiento de facturas

10.3.2 Modelo de flujo de datos

! En este modelo las transformaciones funcionales procesan sus entradas y producen sus salidas.

! Los datos fluyen de un lugar a otro y se transforman durante este movimiento.

! Cada paso de procesamiento se implementa como una transformación. Los datos de entrada fluyen a través de estas transformaciones hasta que se convierten en salidas.

! Las transformaciones se pueden ejecutar secuencialmente o en paralelo.

! Un modelo de flujo de datos de un sistema de procesamiento de facturas.

Emisión de Recibos Recibos Lectura de Emisión de Facturas Identificación de Pagos Encontrar pagos duplicados
Emisión de
Recibos
Recibos
Lectura de
Emisión de Facturas
Identificación de
Pagos
Encontrar pagos
duplicados
Emisión del
Recordatorio de
Pago
Facturas
Pagos
Identificación de Pagos Encontrar pagos duplicados Emisión del Recordatorio de Pago Facturas Pagos Recordatorios
Identificación de Pagos Encontrar pagos duplicados Emisión del Recordatorio de Pago Facturas Pagos Recordatorios
Identificación de Pagos Encontrar pagos duplicados Emisión del Recordatorio de Pago Facturas Pagos Recordatorios
Recordatorios
Recordatorios

Las ventajas de esta arquitectura son:

1.

Permite la reutilización de transformaciones.

2.

Es intuitiva puesto que muchas personas visualizan su trabajo en términos del procesamiento de entradas y salidas.

3.

Permite que el sistema evolucione al agregar nuevas transformaciones de forma directa.

4.

Es sencilla de implementar ya sea como un sistema concurrente o uno secuencial.

La desventaja principal del modelo proviene de la necesidad de un formato para transferir datos que sea reconocido por todas las transformaciones.

10.4 Arquitecturas de dominio específico

! Los anteriores modelos arquitectónicos son modelos generales, se pueden aplicar a diversas clases de sistemas.

! Así como estos modelos generales, también se pueden utilizar modelos arquitectónicos específicos para un dominio de aplicación particular.

! Existen 2 tipos de modelos arquitectónicos de dominio específico:

#Modelos genéricos, que son abstracciones de varios sistemas reales.

#Modelos de referencia, que son modelos abstractos y describen a una clase mayor de sistemas. Son una forma de informar a los diseñadores de la estructura general de esa clase de sistemas.

! Por supuesto, no existe una distinción rígida entre estos tipos de modelo. Algunas veces, los modelos genéricos también sirven como modelos de referencia.

! Los modelos genéricos se pueden utilizar directamente en el diseño.

! Los modelos de referencia se utilizan normalmente para comunicar conceptos del dominio y comparar las posibles arquitecturas.

! Por lo general, los modelos genéricos se derivan de forma ascendente a partir de los sistemas existentes, mientras que los modelos de referencia se derivan de forma descendente.

10.4.1 Modelos genéricos

Quizá el ejemplo más conocido de un modelo arquitectónico genérico es un modelo de un compilador.

Tabla de Símbolos
Tabla de
Símbolos
genérico es un modelo de un compilador. Tabla de Símbolos Analizador Analizador Sintáctico Semántico Generación
genérico es un modelo de un compilador. Tabla de Símbolos Analizador Analizador Sintáctico Semántico Generación
genérico es un modelo de un compilador. Tabla de Símbolos Analizador Analizador Sintáctico Semántico Generación
genérico es un modelo de un compilador. Tabla de Símbolos Analizador Analizador Sintáctico Semántico Generación
genérico es un modelo de un compilador. Tabla de Símbolos Analizador Analizador Sintáctico Semántico Generación
genérico es un modelo de un compilador. Tabla de Símbolos Analizador Analizador Sintáctico Semántico Generación
Analizador Analizador Sintáctico Semántico
Analizador
Analizador
Sintáctico
Semántico
Tabla de Símbolos Analizador Analizador Sintáctico Semántico Generación de Código Analizador Léxico
Generación de Código
Generación
de Código
Tabla de Símbolos Analizador Analizador Sintáctico Semántico Generación de Código Analizador Léxico
Analizador Léxico
Analizador
Léxico

10.4.2 Modelos de referencia

!

Por lo regular se derivan de un estudio del dominio de la aplicación.

!

Representan la arquitectura ideal que incluye todas las características que un sistema podría tener.

! Las arquitecturas de referencia se utilizan como una base para la implementación de sistemas. Esta fue la intención original del modelo de referencia OSI para la interconexión de sistemas abiertos.

!

Si un sistema está acorde con el modelo, le debe ser posible comunicarse con otros sistemas que también están acordes al modelo.

! Sin embargo, los modelos de referencia normalmente no son considerados como la ruta para la implementación. En su lugar, la función principal es servir como medio de comparación de diversos sistemas en un dominio.

10.4.2 Modelos de referencia

!

Un modelo de referencia provee un vocabulario para la comparación.

!

Actúa como un estándar, contra el cual se deben evaluar los sistemas.

7

6

5

4

3

2

1

Modelo OSI

Aplicación

Presentación

Sesión Transporte Red Liga de Datos

Físico

Aplicación

Presentación

Sesión Transporte Red Liga de Datos

Físico

Red Liga de Datos

Físico

Medio de Comunicación