Design auf Systemebene. Teil 1. Von der Idee zum System

Hallo alle zusammen. Ich wende in meiner Arbeit oft die Prinzipien des Systems Engineering an und möchte diesen Ansatz mit der Community teilen.

System Engineering - ohne Standards, aber auf einfache Weise, ist dies der Prozess der Entwicklung eines Systems als ziemlich abstrakte Komponente, ohne Bezugnahme auf bestimmte Gerätemodelle. Während dieses Prozesses werden die Eigenschaften der Systemkomponenten und die Beziehungen zwischen ihnen hergestellt. Darüber hinaus muss das System konsistent und optimal sein und die Anforderungen erfüllen. In diesem Tutorial zeige ich Ihnen die Techniken der Systemtechnik am Beispiel eines relativ einfachen Zugangskontrollsystems (ACS).

Wir bilden die ursprüngliche Architektur


Wenn ein System, egal welches, gerade erst entwickelt wird, erscheinen Rechtecke mit Pfeilen in unseren Köpfen oder auf Papier. Solche Rechtecke sind die Komponenten des Systems. Und Pfeile sind Verbindungen zwischen Komponenten. Und sehr oft haben wir keine Zeit, uns zu setzen und darüber nachzudenken, wie alle von uns bestimmten Komponenten miteinander funktionieren, und am Ende beginnen wir, eine Reihe von Krücken zu erstellen, um redundante Designs zu erfinden.

Es ist wichtig, sich daran zu erinnern, dass eine Komponente aus Sicht des Systems und seiner Architektur eine eher abstrakte Sache ist. Wenn sich beispielsweise ein Mikrocontroller in unserem System befindet, ist es auf Architekturebene für uns nur wichtig, dass es sich um einen Mikrocontroller handelt und nicht um einen STM32, Arduino oder Milander. Darüber hinaus verstehen wir oft nicht einmal genau, was im System enthalten sein wird, und wenden uns an die Systemtechnik, um Anforderungen an Geräte, Software usw. zu entwickeln.

In unserem Beispiel mit ACS werden wir versuchen, seinen Zweck zu formulieren. Dies hilft uns bei der Identifizierung seiner Komponenten. Die Aufgabe von Zugangskontrollsystemen besteht also darin, einen begrenzten Personenkreis in den Raum zu lassen. Das heißt, es ist ein intelligentes Schloss. Deshalb haben wir die erste Komponente - eine Art Gerät, das die Tür ver- und entriegelt! Nennen wir es DoorLock

Und woher wissen wir, dass eine Person hineinkommen kann? Wir wollen keine Wache stellen und keine Pässe überprüfen? Geben wir den Menschen spezielle Karten mit RFID-Tags, auf denen wir eindeutige IDs oder andere Daten aufzeichnen, mit denen wir eine Person genau identifizieren können. Dann brauchen wir ein Gerät, das diese Tags lesen kann. Großartig, wir haben eine weitere Komponente, RFIDReader.

Schauen wir uns noch einmal an, was wir haben. RFIDReader liest einige Daten, das ACS-System macht etwas mit ihnen und basierend darauf verwaltet DoorLock etwas. Wir stellen die folgende Frage: Wo soll die Liste der Personen mit Zugriffsrechten gespeichert werden? Am besten in einer Datenbank. Daher muss unser System in der Lage sein, Anforderungen zu senden und Antworten aus der Datenbank zu verarbeiten. Wir haben also eine andere Komponente - DBHandler . Wir haben also eine extrem abstrakte Version erhalten, die jedoch ausreicht, um mit einer Beschreibung des Systems zu beginnen. Wir verstehen, was sie tun soll und wie es funktioniert.

Anstelle eines Blattes Papier verwende ich System Composer, ein spezielles Tool zum Modellieren von Systemarchitekturen in einer Simulink-Umgebung, und erstelle drei Komponenten. Oben habe ich die Beziehungen zwischen diesen Komponenten beschrieben, also verbinden Sie sie sofort:



Architektur erweitern


Schauen wir uns unser Diagramm an. Alles scheint in Ordnung zu sein, aber nicht wirklich. Betrachten Sie dieses System aus der Sicht des Benutzers - der Benutzer bringt die Karte zum Lesegerät und ...? Woher weiß der Benutzer, dass ihm der Zugriff gewährt oder verweigert wird? Es ist notwendig, ihn irgendwie darüber zu informieren! Aus diesem Grund fügen wir eine weitere Komponente hinzu - die Benachrichtigung des Benutzers UserNotify :



Und jetzt gehen wir auf die niedrigere Abstraktionsebene. Versuchen wir, einige Komponenten etwas detaillierter zu bemalen. Beginnen wir mit der RFIDReader- Komponente. In unserem System ist diese Komponente für das Lesen des RFID-Tags verantwortlich. Die Ausgabe sollte aus einigen Daten bestehen (UID, Benutzerdaten ...). Aber warten Sie, RFID ist wie NFC in erster Linie Hardware, keine Software! Daher können wir davon ausgehen, dass wir den RFID-Chip selbst separat haben, der die Rohdaten an einen bestimmten Präprozessor überträgt. Insgesamt haben wir ein abstraktes Stück Eisen, das RFID-Tags lesen kann, und eine abstrakte Software, die Daten in das von uns benötigte Format konvertieren kann. Wir werden sie RFIDSensor bzw. RFIDParser nennen . Wie wird dies in System Composer angezeigt? Sie können die RFIDReader- Komponente entfernenund setzen Sie zwei Komponenten an ihre Stelle, aber es ist besser, dies nicht zu tun, damit wir die Lesbarkeit der Architektur verlieren. Lassen Sie uns stattdessen in RFIDReader gehen und zwei neue Komponenten hinzufügen:



Großartig, jetzt fahren wir mit der Benachrichtigung des Benutzers fort. Wie benachrichtigt das System den Benutzer, dass ihm der Zugang zu den Räumlichkeiten verweigert oder verweigert wird? Eine Person nimmt Geräusche und etwas wahr, das am besten blinkt. Daher können Sie ein bestimmtes Tonsignal ausgeben, damit der Benutzer darauf achtet und die LED blinkt. Fügen Sie UserNotify die entsprechenden Komponenten hinzu :



Wir haben die Architektur unseres Systems erstellt, aber etwas stimmt nicht. Was denn? Schauen wir uns die Namen der Verbindungen an. InBus und OutBus sind keine ganz normalen Namen, die dem Entwickler helfen würden. Sie müssen umbenannt werden:



Wir haben uns also angesehen, wie die systemtechnischen Methoden in gröbster Näherung angewendet werden. Es stellt sich die Frage, warum sie überhaupt angewendet werden. Das System ist primitiv und es scheint, dass die geleistete Arbeit überflüssig ist. Sie können sofort Code schreiben, eine Datenbank entwerfen, Abfragen schreiben oder löten. Das Problem ist, dass, wenn Sie nicht über das System nachdenken, nicht verstehen, wie seine Komponenten miteinander zusammenhängen, die Integration von Systemkomponenten lange und ziemlich schmerzhaft weitergeht.

Die Hauptschlussfolgerung aus diesem Teil lautet wie folgt: Die

Anwendung von Methoden der Systemtechnik und Architekturmodellierung im Systemdesign ermöglicht es, die Kosten für die Komponentenintegration zu senken und die Qualität des entwickelten Systems zu verbessern.

All Articles