Introducción al diseño arquitectónico



Resultado de imagen para diseño arquitectonico informatica
El diseño arquitectónico 
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.




Resultado de imagen para sistemas basados en llamado y retorno (capas)



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.
Resultado de imagen para sistemas de componentes independientes






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
Resultado de imagen para sistemas basados en transacciones



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




eventos





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.
Resultado de imagen para cliente servidor
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