Conception au niveau du système. Partie 1. De l'idée au système

Bonjour à tous. J'applique souvent les principes de l'ingénierie des systèmes dans mon travail et j'aimerais partager cette approche avec la communauté.

Ingénierie des systèmes - sans normes, mais de manière simple, il s'agit du processus de développement d'un système en tant que composants assez abstraits, sans référence à des modèles spécifiques d'appareils. Au cours de ce processus, les propriétés des composants du système et les relations entre eux sont établies. De plus, il est nécessaire de rendre le système cohérent et optimal et que le système réponde aux exigences. Dans ce tutoriel, je vais vous montrer les techniques d'ingénierie des systèmes en utilisant l'exemple de la conception d'un système de contrôle d'accès (ACS) assez simple.

Nous formons l'architecture initiale


Lorsqu'un système, peu importe lequel, commence à peine à se développer, des rectangles avec des flèches apparaissent dans nos têtes ou sur du papier. Ces rectangles sont les composants du système. Et les flèches sont des connexions entre les composants. Et très souvent, nous n'avons pas le temps de nous asseoir et de réfléchir à la façon dont tous les composants que nous avons déterminés fonctionneront les uns avec les autres, et à la fin, nous commençons à créer un tas de béquilles, inventant des conceptions redondantes.

Il est important de se rappeler que du point de vue du système et de son architecture, un composant est une chose plutôt abstraite. Par exemple, s'il y a un microcontrôleur dans notre système, alors au niveau de l'architecture, il est seulement important pour nous qu'il s'agisse d'un microcontrôleur, et non qu'il s'agisse d'un STM32, Arduino ou Milander. De plus, souvent nous ne comprenons même pas ce qu'il y aura exactement dans le système, et nous nous tournons vers l'ingénierie système pour développer les exigences en matière d'équipement, de logiciels, etc.

Pour notre exemple avec ACS, nous allons essayer de formuler son objectif. Cela nous aidera à identifier ses composants. Ainsi, la tâche des systèmes de contrôle d'accès est de laisser entrer un cercle restreint de personnes dans la pièce. Autrement dit, c'est une serrure intelligente. Par conséquent, nous avons le premier composant - une sorte d'appareil qui verrouille et déverrouille la porte! Appelons ça DoorLock

Et comment savons-nous qu'une personne peut pénétrer à l'intérieur? Nous ne voulons pas mettre un gardien et vérifier les passeports? Donnons aux gens des cartes spéciales avec des étiquettes RFID, sur lesquelles nous écrirons des identifiants uniques ou d'autres données qui nous permettront d'identifier avec précision une personne. Ensuite, nous avons besoin d'un appareil capable de lire ces balises. Très bien , nous avons un autre composant, RFIDReader

Revoyons ce que nous avons obtenu. RFIDReader lit certaines données, le système ACS fait quelque chose avec elles, et sur cette base, DoorLock est contrôlé. Nous posons la question suivante - où stocker la liste des personnes ayant des droits d'accès? Meilleur dans une base de données. Par conséquent, notre système doit pouvoir envoyer des demandes et traiter les réponses de la base de données. Nous avons donc un autre composant - DBHandler . Nous avons donc obtenu un résumé extrêmement abstrait, mais suffisant pour commencer par une description du système. Nous comprenons ce qu'elle doit faire et comment cela fonctionne.

Au lieu d'un morceau de papier, j'utilise System Composer, un outil spécial pour modéliser les architectures système dans un environnement Simulink et créer 3 composants. Ci-dessus, j'ai décrit les relations entre ces composants, alors connectez-les immédiatement:



Extension de l'architecture


Regardons notre diagramme. Tout semble aller bien, mais pas vraiment. Regardez ce système du point de vue de l'utilisateur - l'utilisateur apporte la carte au lecteur et ...? Comment l'utilisateur sait-il que l'accès lui est autorisé ou refusé? Il faut en quelque sorte l'informer! Par conséquent, nous ajoutons un autre composant - la notification de l'utilisateur, UserNotify :



Et maintenant nous descendons au niveau d'abstraction plus bas. Essayons de peindre certains composants plus en détail. Commençons par le composant RFIDReader. Dans notre système, ce composant est responsable de la lecture de l'étiquette RFID. Sa sortie devrait être quelques données (UID, données utilisateur ...). Mais attendez, la RFID, comme la NFC, est principalement du matériel, pas du logiciel! Par conséquent, nous pouvons supposer que nous avons séparément la puce pour RFID elle-même, qui transfère les données brutes à un certain préprocesseur. Au total, nous avons un morceau de fer abstrait qui peut lire les étiquettes RFID et un logiciel abstrait qui peut convertir les données au format dont nous avons besoin. Nous les appellerons respectivement RFIDSensor et RFIDParser . Comment afficher cela dans System Composer? Vous pouvez supprimer le composant RFIDReaderet mettre deux composants à sa place, mais il vaut mieux ne pas le faire, donc nous perdrons la lisibilité de l'architecture. Au lieu de cela, allons à l'intérieur de RFIDReader et ajoutons 2 nouveaux composants:



Super, passons maintenant à la notification de l'utilisateur. Comment le système informera-t-il l'utilisateur qu'il se voit refuser ou autoriser l'accès aux locaux? Une personne perçoit mieux les sons et quelque chose qui clignote. Par conséquent, vous pouvez émettre un certain signal sonore, afin que l'utilisateur y prête attention et clignote la LED. Ajoutez les composants appropriés à UserNotify :



nous avons créé l'architecture de notre système, mais quelque chose ne va pas. Quelle? Regardons les noms des connexions. InBus et OutBus ne sont pas des noms tout à fait normaux qui pourraient aider le développeur. Ils doivent être renommés:



Nous avons donc examiné comment les méthodes d'ingénierie des systèmes sont appliquées dans l'approximation la plus grossière. La question se pose - pourquoi les appliquer? Le système est primitif et il semble que le travail effectué soit superflu. Vous pouvez immédiatement écrire du code, concevoir une base de données, écrire des requêtes ou souder. Le problème est que si vous ne réfléchissez pas au système, ne comprenez pas comment ses composants sont liés les uns aux autres, l'intégration des composants du système se poursuivra pendant longtemps et assez douloureusement.

La principale conclusion de cette partie est la suivante: L'

application des méthodes d'ingénierie des systèmes et de modélisation de l'architecture dans la conception des systèmes permet de réduire le coût de l'intégration des composants et d'améliorer la qualité du système développé.

All Articles