Diseño a nivel de sistema. Parte 2. Arquitectura detallada

En la primera parte del tutorial, obtuve la arquitectura de un sistema de control de acceso. El resultado alcanzado ya tiene beneficios prácticos, pero no suficientes, ya que ahora la arquitectura no tiene en cuenta los formatos y tipos de datos y la naturaleza de los componentes. En esta parte del tutorial, mostraré cómo diseñar flujos de datos en un sistema y trabajar con componentes de diversa naturaleza.

Interfaces de componentes


Miremos el sistema desde la primera parte nuevamente. Vemos que los componentes están conectados por flechas. Estas conexiones siguen siendo abstractas y representan conexiones de información simples. Sin embargo, podemos reducir ligeramente el nivel de abstracción. Considere la salida del componente DBHandler .



Este componente tiene una salida AccessStatus. Tratemos de describirlo. Entonces, AccessStatus es un enlace que contiene información de estado de acceso. El acceso puede ser otorgado o no. Es decir, ¡es una variable booleana explícita! Indiquemos el tipo de esta salida. Para hacer esto en System Composer, primero debe crear la interfaz adecuada :



Y luego indicamos que la interfaz creada está asignada al puerto AccessStatus:



Esta operación debe realizarse en todos los puertos necesarios. Podemos resumir y deducir la siguiente declaración:

al crear interfaces y asignarlas a puertos, brindamos a los desarrolladores que implementarán el sistema instrucciones precisas sobre qué datos utilizarán los componentes desarrollados y qué datos se requieren en la salida.

Otra ventaja de System Composer es su capacidad para ver el flujo de datos utilizando vistas de arquitectura personalizadas, Vistas de arquitectura . Podemos filtrar nuestra arquitectura de acuerdo con ciertos criterios. Tome la interfaz creada anteriormente como ejemplo. Cree una vista de flujo de datos de AccessStatus.

Primero, haga clic en Modelado -> Vistas de arquitectura . Y luego crea un filtro:



Aquí se establece el nombre de la vista y se crea un filtro: seleccione todos los componentes que tengan una interfaz llamada AccessStatus . Después de hacer clic en el botón Aplicar, obtenemos la siguiente imagen:


Por lo tanto, el uso de tales representaciones es útil para el desarrollo, ya que puede encontrar rápidamente los componentes o errores necesarios en el proyecto o flujo de datos.

Manejo de componentes heterogéneos


Sería posible detenerse allí, porque en este momento tenemos una hermosa arquitectura de sistema que ayuda en la implementación. Sin embargo, hay un gran problema: el sistema consta de hierro, es decir, componentes físicos y software. ¿Qué significa esto? Esto significa que el sistema es heterogéneo y debemos reflejar de alguna manera esta heterogeneidad. System Composer tiene características especiales: estos son perfiles y estereotipos. Para facilitar la comprensión, un estereotipo es una descripción abstracta de una clase de componentes con propiedades, y un perfil es una colección de estereotipos. Un ejemplo simple: supongamos que tenemos un estereotipo que describe un microcontrolador. Cualquier microcontrolador tiene propiedades comunes: núcleo, TDP, voltaje de suministro, frecuencia, etc. Son estas propiedades las que deberían reflejarse en el estereotipo.

Crea un perfil y los estereotipos necesarios:


Por ejemplo, creé el estereotipo de GenericComponent. Así es como se ve:



Varios ajustes son importantes aquí:

  1. Se aplica a - a qué se aplica el estereotipo - un componente, interfaz, puerto o conexión (sí, las conexiones en sí, estas flechas, también se pueden describir usando el estereotipo)
  2. Base Stereotype es el estereotipo padre. Los estereotipos heredan las propiedades de los estereotipos principales
  3. Tabla de propiedades: aquí se establecen propiedades personalizadas. Por ejemplo, mi propiedad se llama Carga de trabajo, es decir, la mano de obra involucrada en la implementación

Otros dos estereotipos de HardwareComponent se basan en este estereotipo : para hardware, y SoftwareComponent , para software.

Después de crear el perfil y los estereotipos, los importamos a la arquitectura y podemos comenzar a dispersarlo sobre sus elementos:



Como resultado, obtuve esta imagen:


Para mayor claridad, hice la siguiente presentación:


Veamos el mecanismo de heredar las propiedades de los componentes en acción. Seleccione el componente DoorLock y observe sus propiedades:


La propiedad Workload se heredó del GenericComponent, pero la propiedad Cost es específica del estereotipo HardwareComponent.

Para resumir esta parte:

La arquitectura detallada permite una descripción más completa del sistema que se está desarrollando y para evitar inconsistencias en las interfaces y la interacción de los componentes. El uso de estereotipos para el detalle ayuda a comprender la naturaleza de los componentes y obtener una imagen más completa del sistema que se está desarrollando.

En la siguiente parte del tutorial, hablaré sobre la integración de System Composer con MATLAB, Simulink y la herramienta de administración de requisitos, Simulink Requisitos.

All Articles