Introducción al diseño arquitectónico
El diseño arquitectónico
Es la fase en donde debemos modelar el funcionamiento interno del sistema, describiendo:
Es la fase en donde debemos modelar el funcionamiento interno del sistema, describiendo:
- Estructuras de datos
- La estructura del programa
- Los detalles procedimentales
Al hablar de la arquitectura del software, estamos hablando de la forma interna del software en sí, la forma como almacenara la información, los módulos que manipularan los datos y las acciones de dichos módulos, pero el punto en donde debemos comenzar el diseño, dado que es el cimiento de toda la estructura es en el diseño de datos.
Sistema de Flujos de Datos
Esta familia de estilos enfatiza la reutilización y la modificabilidad. Es apropiada para sistemas que implementan transformaciones de datos en pasos sucesivos. Ejemplares de la misma serían las arquitecturas de tubería-filtros y las de proceso secuencial en lote.
Caracterizadas por:
- La disponibilidad de los datos controla la ejecución
- La estructura del diseño está dominada por el movimiento ordenado de los datos de un componente a otro
- El patrón del flujo de datos es explícito
- En un sistema puro no hay otra interacción entre procesos.
El sistema tubería-filtros se percibe como una serie de transformaciones sobre sucesivas piezas de los datos de entrada. Los datos entran al sistema y fluyen a través de los componentes. En el estilo secuencial por lotes (batch sequential) los componentes son programas independientes; el supuesto es que cada paso se ejecuta hasta completarse antes que se inicie el paso siguiente. Garlan y Shaw sostienen que la variante por lotes es un caso degenerado del estilo, en el cual las tuberías se han vuelto residuales [SG94].
Características:
•Por los tubos fluyen datos, transmisión de salidas de un filtro a la entrada de otro
•Cada filtro admite una o varias entradas (tubos) y una o varias salidas (tubos)
•Cada filtro es independiente del resto y no conocen la identidad de los filtros antes y después de él
•La transformación del filtro puede comenzar antes de terminar de leer la entrada (distinto al proceso por lotes)
•Respetando el grafo, no importa la secuencia (paralelismo).
Bondades:
•Fácil comprender el comportamiento total de entrada/salida del sistema a partir de los efectos de cada filtro
(entrada->transformación->salida).
•Permite reutilización (simplicidad de interfaces, filtros reutilizables).
•Fácil evolución y mantenimiento (agregar, sustituir, eliminar filtros).
•Permite evaluar desempeño (independencia de filtros).
•Permite ejecución en paralelo.
Limitaciones:
•Orientado a procesamiento por lotes (no interactivo).
•Necesidad de consistencia entre flujos de datos.
•La independencia entre filtros puede acarrear la repetición de procesos de
preparación.
La programación por capas es una arquitectura cliente-servidor
en el que el objetivo primordial es la separación de la lógica de
negocios de la lógica de diseño; un ejemplo básico de esto consiste en
separar la capa de datos de la capa de presentación al usuario.
permite distribuir el trabajo de creación de una aplicación por
niveles; de este modo, cada grupo de trabajo está totalmente
abstraído del resto de niveles, de forma que basta con conocer la API
que existe entre niveles.
Sistemas de Componentes Independientes
Un componente de software individual es un paquete de
software, un servicio web, o un módulo que encapsula un
conjunto de funciones relacionadas (o de datos).
Todos los procesos del sistema son colocados en componentes
separados de tal manera que todos los datos y funciones dentro
de cada componente están semánticamente relacionados. Debido
a este principio, con frecuencia se dice que los componentes son
modulares y cohesivos.
SISTEMAS BASADOS EN TRANSACCIONES
Este estilo permite compartir los detalles entre cliente servidor, este estilo
se prefiere cuando se conoce de antemano la transacción y no cambian con
frecuencia
Sistemas Basados en eventos
Una arquitectura basada en eventos responde a las acciones o
acontecimientos generados por un directorio y sus usuarios.
Los eventos del directorio conectado actúan como un
disparador para iniciar la replicación o sincronización de los
datos de ese directorio. El cambio del repositorio genera un
evento resultante, y dicho evento acciona los cambios en los
demás directorios conectados. Como consecuencia de los
eventos y de los cambios correspondientes, se sincronizan los
datos de identidad de todos los directorios conectados
SISTEMAS CLIENTE SERVIDOR.
La arquitectura cliente-servidor es un modelo de aplicación distribuida en el
que las tareas se reparten entre los proveedores de recursos o servicios,
llamados servidores, y los demandantes, llamados clientes. Un cliente realiza
peticiones a otro programa, el servidor, que le da respuesta. Esta idea también
se puede aplicar a programas que se ejecutan sobre una sola computadora,
aunque es más ventajosa en un sistema operativo multiusuario distribuido a
través de una red de computadoras.
NOTACIÓN PARA REPRESENTAR LAS
ARQUITECTURAS DEL SOFTWARE.
Existen muchas notaciones y lenguajes para representar los artefactos del
diseño
software. Unas son para representar la estructura y otras el comportamiento, unas
sirven principalmente durante el diseño arquitectural, otras durante el diseño
detallado, y algunas durante ambos, algunas se emplean principalmente en el
contexto de métodos específicos.
Notaciones de aspectos estructurales (estática), es decir, los componentes y sus interconexiones.
Lenguajes de Descripción de Arquitecturas (ADLs):
Lenguajes textuales formales ideados para describir una
arquitectura software en términos de componentes y
conectores.
Diagramas de Clases y Objetos: Para representar un conjunto
de clases (y objetos) y sus interrelaciones
.
Diagramas de Componentes: Para representar un conjunto
de componentes (partes físicas y reemplazables de un
sistema que son conformes a y proveen un conjunto de
interfaces) y sus interrelaciones.
Tarjetas CRC (Clase Responsabilidad Colaborador):Para
denotar los nombres de los componentes (clases), sus
responsabilidades, y los nombres de los componentes con los
que colaboran.
Diagramas de Despliegue: Para representar un conjunto de
nodos físicos y sus interrelaciones, modelando los aspectos
físicos de un sistema.
Diagramas Entidad-Interrelación: Para representar modelos
conceptuales de los datos almacenados en sistemas de
información.
Lenguajes de Descripción de Interfaces (IDLs):
Similares a los lenguajes de programación normales,
sirven para definir las interfaces (nombres y tipos de
las operaciones exportadas) de los componentes
software.
Diagramas de Estructura de Jackson: Para describir
las estructuras de datos en términos de secuencia
selección e interacción.
Comentarios
Publicar un comentario