- IT&Production - https://www.it-production.com -

Bindeglieder für das Systems Engineering

Komplexe Produkte entwickeln

Bindeglieder für das Systems Engineering

Systems Engineering ist für viele Entwicklungsabteilungen der Hebel, komplexe Produkte rechtzeitig und fehlerfrei voranzubringen. Dr. Marc Segelken, Principal Application Engineer bei MathWorks, berichtet über den Umgang mit der systemimmanenten Komplexität und wie sich die Simulation integrieren lässt.

 (Bild: ©Gorodenkoff/stock.adobe.com) [1]

(Bild: ©Gorodenkoff/stock.adobe.com)

Der interdisziplinäre Ansatz des Systems Engineering ist eine Aufgabe von immer größerer Komplexität. Nur wenn Arbeitsschritte und Modifikationen über alle Designebenen hinweg rückverfolgbar sind und synchronisiert werden, können groß angelegte Entwicklungsprogramme rationalisiert werden. Häufig fehlt in einem Top-down-Designprozess jedoch ein Bindeglied zwischen dem Systems Engineering und der Design-Implementierung. Systems Engineering kommt die große Aufgabe zu, den Balanceakt zwischen immer größeren und komplexeren Systemen und deren vielfältige Anforderungen sowie den Einschränkungen hinsichtlich Leistung, Kosten, Markteinführungszeit, Energieverbrauch, Gewicht und anderen Bereichen zu meistern. Das Ergebnis dieses Prozesses ist in der Regel eine Reihe von Ausgangspunkten für das Design der Unterkomponenten mit Schnittstellenbeschreibungen, Unterbeschränkungen und abgeleiteten Anforderungen. Die größte Herausforderung besteht darin, sich auf jede Komponente im System zu konzentrieren, ohne den Überblick zu verlieren. Essentielle Informationen zum Systemkontext oder die Rückverfolgbarkeit der Anforderungen auf Systemebene und (abgeleiteter) Komponentenebene sind dabei von entscheidender Bedeutung. Ein einfacher Übergang für eine Weiterentwicklung des Systems und garantierte Konsistenz sind weitere wichtige Erfolgsfaktoren.

Zerlegung der Anforderungen

Zuerst sollte ein Anforderungsprofil erstellt werden. Ein Systems Engineering-Projekt beginnt typischerweise mit Anforderungen auf hoher Ebene und optional einem Vorgängersystem, das bis zu einem gewissen Grad wiederverwendet werden kann. Die Hauptaufgabe besteht dann in der Erstellung einer Architektur mit Unterkomponenten, die jeweils abgeleiteten Anforderungen zugeordnet sind, um ihren Anteil an der Gesamtfunktionalität zu erfüllen. Hierbei sind so viele Hierarchieebenen beteiligt wie nötig. Diese strukturelle Zerlegung geht also mit einer korrespondierenden Zerlegung der Anforderungen einher, sodass die Einschränkungen jeder Unterkomponente ausreichend definiert sind.

Nicht-funktionale Anforderungen

Viele Anforderungen beziehen sich auf Fragen des Lebenszyklus oder andere nicht-funktionale Einschränkungen wie Gewicht, Kosten, Zuverlässigkeit, Entwicklungsaufwand und andere domänenspezifische Designdaten. Dementsprechend muss eine Hierarchie von Stereotypen definiert werden, die jede Art von Unterkomponente repräsentiert und Eigenschaften nach Bedarf erfasst, einschließlich der oben erwähnten nicht-funktionalen Anforderungen.

Komplexe Produkte entwickeln

Bindeglieder für das Systems Engineering

Funktionale Anforderungen

Abgesehen von zeitlichen Randbedingungen werden funktionale Anforderungen in der Regel auf der Architekturebene nicht speziell behandelt, außer dass sie parallel zur Systemzerlegung ebenfalls in abgeleitete Anforderungen zerlegt werden. Die vollständige Analyse in diesem frühen Stadium ist mit formalisierten Anforderungen prinzipiell möglich. Aber aufgrund der Schwierigkeit, einen vollständigen Satz von Anforderungen und Annahmen zu erhalten, wird sie in der Praxis nur sehr selten angewandt. Stattdessen wird eine Simulation auf Komponenten- und Architekturebene vorgeschlagen, um die Konsistenz der Anforderungen sowohl lokal als auch im Gesamtsystemverhalten zu validieren. Dafür ist es essenziell, das Gesamtarchitekturmodell simulieren zu können, das zur Definition der Komponenten mit ihren Schnittstellen und Verbindungen verwendet wurde. So lassen sich viele Fehler vermeiden, die durch einen Bruch des Systems Engineering und des Designablaufs verursacht werden.

Umgang mit Komplexität

Per Definition sind Systeme komplexer als nur die Software oder nur die Hardware oder jede andere Segmentierung des Systems. Die Konzentration auf Teile des Systems während jeder Entwurfstätigkeit ist jedoch zwingend erforderlich, um sich nicht in Komplexitätsfragen zu verheddern. Wenn aber wichtige Kontextinformationen über die Rolle einer Komponente oder ihrer systeminternen Umgebung fehlen, werden Spezifikations- oder Designfehler meist unvermeidlich. Es muss also eine geeignete Teilmenge (eine Ansicht) des Systems eingerichtet werden, um ein spezifisches Design- oder Analyseanliegen zu verstehen, wobei nur die minimal erforderlichen Kontextinformationen enthalten sein dürfen. Alles, was für die vorliegende Aufgabe nicht relevant ist, sollte ausgeblendet werden können. Es ist zwar anspruchsvoll, eine angemessene Ansicht zu finden, die den oben genannten Kriterien entspricht, aber es reicht in der Regel nicht aus, nur eine Ansicht für einen Teil des Systems zu haben. Eine Ansicht für alle erforderlichen Betrachtungen funktioniert hier nicht, da verschiedene Perspektiven der Systembetrachtung verschiedene Ansichten erfordern, die sich überlappen. Dies sind etwa funktionale Abhängigkeiten, organisatorische Abhängigkeiten, Engpassbetrachtungen, Überlegungen zum Energieverbrauch, Lieferantenabhängigkeiten, Reifegrade, Ansichten zur Ausfallwahrscheinlichkeit, Abschnitte zum Sicherheitsintegritätsniveau usw. Ein vollständiges Verständnis eines bestimmten Design- oder Analyseanliegens erfordert ein schnelles Umschalten zwischen einer großen Anzahl verschiedener Gruppierungen und Filter auf der (Teil-)System-Ebene. Da all diese unterschiedlichen Sichtweisen auf ein System stets einheitlich sein müssen, ist die Tool-Unterstützung für die Definition und Verwendung solcher Sichtweisen von entscheidender Bedeutung.

Die passenden Werkzeuge

Aufgrund der Größe und Komplexität von Systemen sind klassische Ansätze mit Zeichentools und Tabellenkalkulationen zur Berücksichtigung benutzerdefinierter Eigenschaften und entsprechender Analysen nicht mehr angemessen. Die Wahrscheinlichkeit von Problemen durch fehlende Konsistenz oder veraltete Daten ist ohne Spezialtools zu hoch. Aus diesem Grund sind Systems-Engineering-Werkzeuge oder Entwicklungsumgebungen für Software und für Hardware, die Lösungen für die genannten Herausforderungen und Aufgaben bieten, anzuraten. Darüber hinaus sollte diese Funktionalität in eine Entwicklungsumgebung integriert sein, so dass die Verwendung der strukturellen Architektur, der Schnittstellendefinitionen oder der Anforderungen für den anschließenden Entwurf der Verhaltensspezifikation innerhalb der Umgebung möglich ist. So wird eine nahtlose Fortsetzung der Arbeit auf Komponentenebene sowie eine automatische Integration in das Architekturmodell einschließlich der Systemsimulationsfunktionen für die Validierung ermöglicht.