Diseño a nivel de sistema. Parte 1. De la idea al sistema

Hola a todos. A menudo aplico los principios de la ingeniería de sistemas en mi trabajo y me gustaría compartir este enfoque con la comunidad.

Ingeniería de sistemas: sin estándares, pero de una manera simple, este es el proceso de desarrollar un sistema como componentes bastante abstractos, sin referencia a modelos específicos de dispositivos. Durante este proceso, se establecen las propiedades de los componentes del sistema y las relaciones entre ellos. Además, se requiere que el sistema sea consistente y óptimo y que el sistema cumpla con los requisitos. En este tutorial, le mostraré las técnicas de ingeniería de sistemas utilizando el ejemplo del diseño de un sistema de control de acceso (ACS) bastante simple.

Formamos la arquitectura inicial.


Cuando un sistema, sin importar cuál sea, apenas comienza a desarrollarse, aparecen rectángulos con flechas en nuestras cabezas o en papel. Tales rectángulos son los componentes del sistema. Y las flechas son conexiones entre componentes. Y muy a menudo no tenemos tiempo para sentarnos y pensar en cómo todos los componentes que determinamos funcionarán entre sí, y al final comenzamos a crear un montón de muletas, inventando diseños redundantes.

Es importante recordar que desde el punto de vista del sistema y su arquitectura, un componente es algo bastante abstracto. Por ejemplo, si hay un microcontrolador en nuestro sistema, entonces, a nivel de arquitectura, solo es importante para nosotros que sea un microcontrolador, y no que sea un STM32, Arduino o Milander. Además, a menudo ni siquiera entendemos qué habrá exactamente en el sistema, y ​​recurrimos a la ingeniería de sistemas para desarrollar requisitos para equipos, software, etc.

Para nuestro ejemplo con ACS, intentaremos formular su propósito. Esto nos ayudará a identificar sus componentes. Entonces, la tarea de los sistemas de control de acceso es dejar que un círculo limitado de personas ingrese a la sala. Es decir, es una cerradura inteligente. Por lo tanto, tenemos el primer componente: un tipo de dispositivo que bloquea y desbloquea la puerta. Llamémoslo DoorLock

¿Y cómo sabemos que una persona puede entrar? ¿No queremos poner guardia y revisar los pasaportes? Ofrezcamos a las personas tarjetas especiales con etiquetas RFID, en las que escribiremos identificaciones únicas u otros datos que nos permitan identificar con precisión a una persona. Entonces, necesitamos algún dispositivo que pueda leer estas etiquetas. Genial, tenemos otro componente, RFIDReader.

Veamos nuevamente lo que tenemos. RFIDReader lee algunos datos, el sistema ACS hace algo con ellos y, en base a esto, se controla DoorLock. Hacemos la siguiente pregunta: ¿dónde almacenar la lista de personas con derechos de acceso? Lo mejor en una base de datos. Por lo tanto, nuestro sistema debe poder enviar solicitudes y procesar respuestas desde la base de datos. Entonces tenemos otro componente: DBHandler . Entonces, obtuvimos un resumen extremadamente, pero suficiente para comenzar con una descripción del sistema. Entendemos lo que debe hacer y cómo funciona.

En lugar de una hoja de papel, uso System Composer, una herramienta especial para modelar arquitecturas de sistemas en un entorno Simulink y crear 3 componentes. Arriba, describí las relaciones entre estos componentes, así que conéctelos inmediatamente:



Arquitectura en expansión


Miremos nuestro diagrama. Todo parece estar bien, pero en realidad no. Mire este sistema desde el punto de vista del usuario: ¿el usuario lleva la tarjeta al lector y ...? ¿Cómo sabe el usuario que tiene permitido o denegado el acceso? ¡Es necesario informarle de alguna manera sobre esto! Por lo tanto, agregamos otro componente: la notificación del usuario, UserNotify :



y ahora bajamos al nivel de abstracción más bajo. Intentemos pintar algunos componentes con un poco más de detalle. Comencemos con el componente RFIDReader. En nuestro sistema, este componente es responsable de leer la etiqueta RFID. Su salida debe ser algunos datos (UID, datos del usuario ...). Pero espere, ¡RFID, como NFC, es principalmente hardware, no software! Por lo tanto, podemos suponer que tenemos por separado el chip para RFID, que transfiere los datos en bruto a un determinado preprocesador. En total, tenemos una pieza de hierro abstracta que puede leer etiquetas RFID, y un software abstracto que puede convertir datos al formato que necesitamos. Los llamaremos RFIDSensor y RFIDParser, respectivamente. ¿Cómo mostrar esto en System Composer? Puede eliminar el componente RFIDReadery colocamos dos componentes en su lugar, pero es mejor no hacerlo, así perderemos la legibilidad de la arquitectura. En su lugar, vamos a RFIDReader y agreguemos 2 componentes nuevos:



Genial, ahora pasemos a notificar al usuario. ¿Cómo notificará el sistema al usuario que se le niega o le permite el acceso a las instalaciones? Una persona percibe sonidos y algo parpadea mejor. Por lo tanto, puede emitir una determinada señal de sonido para que el usuario preste atención y parpadee el LED. Agregue los componentes apropiados a UserNotify :



creamos la arquitectura de nuestro sistema, pero algo está mal. ¿Qué? Veamos los nombres de las conexiones. InBus y OutBus no son nombres normales que ayudarían al desarrollador. Deben renombrarse:



Entonces, observamos cómo se aplican los métodos de ingeniería de sistemas en la aproximación más cruda. Surge la pregunta: ¿por qué aplicarlos? El sistema es primitivo, y parece que el trabajo realizado es superfluo. Puede escribir código inmediatamente, diseñar una base de datos, escribir consultas o soldar. El problema es que si no piensa en el sistema, no comprende cómo se relacionan sus componentes entre sí, entonces la integración de los componentes del sistema continuará durante mucho tiempo y será muy dolorosa.

La principal conclusión de esta parte es la siguiente: la

aplicación de ingeniería de sistemas y métodos de modelado de arquitectura en el diseño de sistemas permite reducir el costo de integración de componentes y mejorar la calidad del sistema desarrollado.

All Articles