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

Hola a todos. A menudo aplico principios de 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 en pocas palabras, es el proceso de desarrollar un sistema como componentes bastante abstractos, sin referencia a muestras de dispositivos específicas. Durante este proceso se establecen las propiedades de los componentes del sistema y las conexiones entre ellos. Además, es necesario hacer que el sistema sea consistente y óptimo y que el sistema cumpla con los requisitos. En este tutorial mostraré técnicas de ingeniería de sistemas utilizando el ejemplo del diseño de un sistema de control de acceso (ACS) bastante simple.

Formando la arquitectura inicial.

Cuando un sistema, sea cual sea, apenas comienza a desarrollarse, aparecen rectángulos con flechas en nuestra cabeza o en el papel. Tales rectángulos son componentes sistemas. Y las flechas son conexiones entre componentes. Y muy a menudo no tenemos tiempo para sentarnos y pensar en cómo funcionarán todos los componentes que hemos definido entre sí, y al final comenzamos a crear un montón de muletas, proponiendo 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 nuestro sistema tiene un microcontrolador, entonces a nivel arquitectónico solo nos importa que sea un microcontrolador, y no que sea STM32, Arduino o Milander. Además, a menudo no tenemos del todo claro 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. Por lo tanto, la tarea del sistema de control de acceso es permitir la entrada de un círculo limitado de personas a la habitación. Es decir, es una cerradura inteligente. En consecuencia, tenemos el primer componente: ¡una especie de dispositivo que bloquea y abre la puerta! llamémoslo Cerradura de la puerta

¿Cómo sabemos que una persona puede entrar? No queremos poner un vigilante y controlar los pasaportes, ¿verdad? Entreguemos a las personas tarjetas especiales con etiquetas RFID, en las que registraremos identificaciones únicas u otros datos que nos permitan identificar con precisión a una persona. Entonces, necesitaremos algún dispositivo que pueda leer estas etiquetas. Genial, tenemos un componente más, Lector RFID

Miremos nuevamente lo que tenemos. Lector RFID lee algunos datos, el sistema de control de acceso hace algo con ellos y, en base a esto, se controla algo Cerradura de la puerta. Hagamos la siguiente pregunta: ¿dónde almacenar la lista de personas con derechos de acceso? Lo mejor en base de datos. Por lo tanto, nuestro sistema debe poder enviar solicitudes y procesar respuestas desde la base de datos. Entonces tenemos un componente más: DBHandler. Así pues, hemos recibido una descripción del sistema extremadamente abstracta, pero suficiente para empezar. Entendemos lo que se supone que debe hacer y cómo funciona.

En lugar de una hoja de papel, usaré System Composer, una herramienta especial para modelar arquitecturas de sistemas en el entorno Simulink, y crearé 3 componentes. Arriba describí las conexiones entre estos componentes, así que conectémoslos inmediatamente:

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

Ampliando la arquitectura

Miremos nuestro diagrama. Parece que todo está bien, pero en realidad no es así. Mire este sistema desde el punto de vista del usuario: ¿el usuario acerca la tarjeta al lector y...? ¿Cómo sabe un usuario si se le permite o se le niega el acceso? ¡Es necesario notificarle de alguna manera sobre esto! Por lo tanto, agreguemos un componente más: notificación al usuario, Notificación de usuario:

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

Ahora bajemos a un nivel inferior de abstracción. Intentemos describir algunos componentes con un poco más de detalle. Empecemos con el componente. Lector RFID. En nuestro sistema, este componente se encarga de leer la etiqueta RFID. Su salida debe contener algunos datos (UID, datos de usuario...). Pero espere, RFID, como NFC, es principalmente hardware, no software. Por lo tanto, podemos suponer que tenemos por separado el propio chip RFID, que transmite datos "sin procesar" a algún tipo de preprocesador. Entonces, tenemos una pieza abstracta de hardware que puede leer etiquetas RFID y un software abstracto que puede convertir datos al formato que necesitamos. llamémoslos RFIDSensor и Analizador RFID respectivamente. ¿Cómo mostrar esto en System Composer? Puedes eliminar un componente. Lector RFID y poner dos componentes en su lugar, pero es mejor no hacer esto, de lo contrario perderemos la legibilidad de la arquitectura. En lugar de eso, entremos en RFIDReader y agreguemos 2 componentes nuevos:

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

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

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

Hemos creado la arquitectura de nuestro sistema, pero algo anda mal. ¿Qué? Veamos los nombres de las conexiones. En bus и Fuera de autobús - nombres no del todo normales que ayudarían al desarrollador. Es necesario cambiarles el nombre:

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

Entonces, analizamos cómo se aplican los métodos de ingeniería de sistemas en la más aproximada aproximación. Surge la pregunta: ¿por qué utilizarlos? El sistema es primitivo y parece que el trabajo realizado es innecesario. Inmediatamente podría escribir código, diseñar una base de datos, escribir consultas o soldar. El problema es que si no se analiza el sistema y no se comprende cómo se conectan sus componentes entre sí, la integración de los componentes del sistema llevará mucho tiempo y será bastante dolorosa.

La principal conclusión de esta parte es:

El uso de métodos de ingeniería de sistemas y modelado de arquitectura en el desarrollo de sistemas permite reducir los costos de integración de componentes y mejorar la calidad del sistema desarrollado.

Fuente: habr.com

Añadir un comentario