INTRODUCCIÓN AL ESTILO ARQUITECTÓNICO
*Arquitectura
de diseño de software:
La arquitectura de diseño es un
proceso de la ingeniería del software, que consiste en originar una representación
técnica del software que se va a desarrollar, además permite delimitar los
elementos más importantes así como también sus relaciones.
El diseño arquitectónico inicia
con el diseño de datos, que son los componentes de datos del sistema y posteriormente
se procede a la bifurcación de una o más representaciones de la estructura
arquitectónica del sistema, que son la representación de la estructura de los
componentes del software, sus propiedades e interacciones.
Es importante la arquitectura de
diseño ya que proporcionan la comunicación entre todas las partes interesadas
en el desarrollo de un sistema y permite representar un modelo pequeño y
comprensible de cómo está estructurado el sistema y de cómo trabajan sus
componentes.
*Ventajas
del diseño arquitectónico:
Ø Facilitan la comunicación entre todas las partes interesadas en el desarrollo de un sistema basado en computadora.
Ø Destaca decisiones tempranas de diseño que tendrán un profundo impacto en todo el trabajo de ingeniería del software
Ø Constituye un modelo relativamente pequeño e intelectualmente comprensible de cómo está estructurado el sistema y de cómo trabajan todos sus componentes juntos.
Tipos
de arquitectura de diseño
a-Sistema
de flujo de datos: Se basa
en un patrón tuberías y filtros. Este consta de un conjunto de componentes
denominados “filtros” conectados entre sí por “tuberías” que transmiten los
datos desde un componente al siguiente.
Cada filtro trabaja de manera
independiente de los componentes que se encuentren situados antes o después de
ella, en el cual estos se diseñan de tal modo que esperan que un conjunto de
datos entre con un determinado formato, para luego obtener como resultado datos
de salida en un formato especifico.
El sistema es visto como una serie
de transformaciones sobre piezas sucesivas de datos de entrada. El dato ingresa
en el sistema, y fluye entre los componentes, de uno en uno, hasta que se le
asigne un destino final (salida o repositorio).
La aplicación típica del estilo es
un procesamiento clásico de datos: el cliente hace un requerimiento; el requerimiento
se valida; un Web Service toma el objeto de la base de datos; se lo convierte a
HTML; se efectúa la representación en pantalla. El estilo tubería-filtros
propiamente dicho enfatiza la transformación incremental de los datos por
sucesivos componentes
b-Sistemas
basados en Llamado y Retorno (capas):
Están organizados jerárquicamente; cada capa
le presta servicios a la capa superior y es cliente de la capa inferior. El
sistema se constituye de un programa principal que tiene el control del sistema
y varios subprogramas que se comunican con éste mediante el uso de llamadas.
La programación por capas es una
arquitectura cliente-servidor, su 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.
La ventaja principal de este
estilo es que el desarrollo se puede llevar a cabo en varios niveles y, en caso
de que sobrevenga algún cambio, solo se ataca al nivel requerido sin tener que
revisar entre código mezclado. Un buen ejemplo de este método de programación
sería el modelo de interconexión de sistemas abiertos.
Además, 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.
c-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. En donde 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.
Con respecto a la coordinación a
lo largo del sistema, los componentes se comunican uno con el otro por medio de
interfaces. Cuando un componente ofrece servicios al resto del sistema, éste
adopta una interface proporcionada que especifica los servicios que otros componentes
pueden utilizar, y cómo pueden hacerlo. Esta interface puede ser vista como una
firma del componente – el cliente no necesita saber sobre los funcionamientos
internos del componente (su implementación) para hacer uso de ella.
d-Sistemas
Basados en transacciones:
Un sistema de procesamiento de
transacciones es un tipo de sistema de información que recolecta, almacena,
modifica y recupera toda la información generada por las transacciones
producidas en una organización. Una transacción es un evento que genera o
modifica los datos que se encuentran eventualmente almacenados en un sistema de
información.
Desde un punto de vista técnico,
un TPS monitoriza los programas transaccionales (un tipo especial de programas).
La base de un programa transaccional está en que gestiona los datos de forma
que estos deben ser siempre consistentes (por ejemplo, si se realiza un pago
con una tarjeta electrónica, la cantidad de dinero de la cuenta sobre la que
realiza el cargo debe disminuir en la misma cantidad que la cuenta que recibe
el pago, de no ser así, ninguna de las dos cuentas se modificará), si durante
el transcurso de una transacción ocurriese algún error, el TPS debe poder
deshacer las operaciones realizadas hasta ese instante.
Si bien este tipo de integridad es
que debe presentar cualquier operación de procesamiento de transacciones por
lotes, es particularmente importante para el procesamiento de transacciones
on-line: si, por ejemplo, un sistema de reserva de billetes de una línea aérea
es utilizado simultáneamente por varios operadores, tras encontrar un asiento
vacío, los datos sobre la reserva de dicho asiento deben ser bloqueados hasta
que la reserva se realice, de no ser así, otro operador podría tener la
impresión de que dicho asiento está libre cuando en realidad está siendo
reservado en ese mismo instante.
Sin las debidas precauciones, en
una transacción podría ocurrir una reserva doble. Otra función de los monitores
de transacciones es la detección y resolución de interbloqueos (deadlock), y
cortar transacciones para recuperar el sistema en caso de fallos masivos.
e-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
Por ejemplo, cuando un consumidor
compra una moto, el estado de la moto pasa de “se vende” a “vendido”. La
arquitectura del sistema del vendedor de motos debe tratar este cambio de
estado como un evento, cuyo suceso puede ser conocido en otras aplicaciones en
la arquitectura. Desde una perspectiva formal, lo que es producido, publicado,
propagado, detectado o consumido es un mensaje (típicamente asíncrono) llamado
notificación del evento, y no el evento en sí mismo, el cuál es el cambio de
estado que disparó la emisión del evento. Los eventos no viajan, solamente
ocurren. Por otro lado, el término evento es frecuentemente usado para denotar
el mensaje de notificación en sí mismo, lo cual puede llevar a algún tipo de
confusión.
f-PEER TO PEER o P2P:
Son aquellos programas que
convierten a los usuarios de una red en nodos, que automáticamente vuelven a
los ordenadores en clientes y servidores a la vez, lo que permite realizar transferencias
de archivos de manera rápida y sencilla entre usuarios de una misma red.
g-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, quien le da respuesta.
*
Aspectos de hardware en arquitectura del software:
Los aspectos relevantes que debe tener una arquitectura de
software son los siguientes:
-
Descripción general del sistema.
-
Descripción de los elementos del sistema.
-
Arquitectura del sistema.
En donde este último se organiza en cuatro niveles que son:
ü
Capa de control: Es la raíz de la
jerarquía y se corresponde con un PC, en él se ejecuta una interfaz gráfica
desarrollada en Java para que el usuario pueda manejar y controlar todo el sistema.
ü
Capa de adaptación de protocolos: Está
formada por un PIC que realiza la conversión entre datos y mensajes CAN, en el
cual esta se comunica con la capa de control mediante la interfaz RS485 y con
la capa inmediatamente inferior por el bus CAN.
ü
Capa de control de hardware: En ella se
encuentran todos los PIC del sistema que controlan los sensores y actuadores;
seguidamente realizan el trabajo de un esclavo CANopen, donde este se comunica
con los dispositivos de la capa inmediatamente inferior mediante el bus I2C, en
el cual el PIC actúa de maestro.
ü
Capa de Hardware: Es la capa de más bajo
nivel, en ella se encuentra los sensores y actuadores, estos dispositivos se
encargan de la interacción con el exterior.
* Notación para representar las
arquitecturas del software:
Existen muchas notaciones y
lenguajes para representar los artefactos del diseño software. Las dos
notaciones más utilizadas son la de tipo estática y la de tipo dinámica.
1. Notaciones estáticas: Son
aquellas que sirven para describir los aspectos estructurales (estáticos) de
los componentes y sus interconexiones. Las cuales son las siguientes:
Ø 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 de los componentes del software.
Ø Diagramas de Estructura de Jackson: Para describir las estructuras de datos en términos de secuencia, selección e iteración.
Ø Grafo de Estructura: Para describir la estructura de llamadas de los programas (qué módulos llaman y son llamados por qué módulos).
2- Notaciones dinámicas: Las
notaciones y lenguajes a continuación sirven para describir el comportamiento
de un software y sus componentes.
Ø Diagramas de Actividad: Se utilizan para mostrar el flujo de control entre actividades.
Ø Diagramas de Colaboración: Son aquellos que muestran las interacciones entre un grupo de objetos, haciendo énfasis en los objetos, sus conexiones y los mensajes que intercambian en dichas conexiones.
Ø Diagramas de Flujo de Datos (DFDs): Son los encargados de representar el flujo de datos entre un conjunto de procesos.
Ø Tablas y Diagramas de Decisión: Representa combinaciones complejas de condiciones y acciones.
Ø Diagramas de Flujo [Estructurados]: Representa el flujo de control y las acciones asociadas que deben ser realizadas.
Ø Diagramas de Secuencia: Para mostrar las interacciones entre un grupo de objetos, con énfasis en la ordenación temporal de los mensajes.
Ø Diagramas de Transición de Estados y Grafos de Máquinas de Estados: Para mostrar el flujo de control entre estados de una máquina de estados.
Ø Lenguajes de Especificación Formal: Lenguajes textuales que usan nociones básicas de las matemáticas tales como la lógica, conjuntos y las secuencias para definir de forma rigurosa y abstracta las interfaces y el comportamiento de los componentes (habitualmente en términos de pre y post-condiciones).
Ø Pseudocódigo y Lenguajes de Diseño de Programas Lenguajes: Es el estilo tradicional de programación estructurada, usados para describir, normalmente en la etapa de diseño detallado







Comentarios
Publicar un comentario