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

Entradas populares de este blog

Introducción