FANDOM


Die Entwicklung komplexer Systeme umfasst ein durch die industrielle Entwicklung immer präsenter werdendes Themengebiet des Ingenieurswesens. In einer digitalen Welt, in der die Automatisierung von Systemen und Produkten Einzug hält, ist dies vor allem in sicherheitskritischen Branchen, wie beispielsweise der Luft- und Raumfahrttechnik oder Medizintechnik, gefragter denn je. Es setzt sich mit dem Entwicklungsprozess komplexer Systeme auseinander und handelt von der Systementwicklung, dem Datenmanagement, der Verifikation und Validierung, dem Testing und insbesondere von der darin beinhaltete Fehleranalyse. Um dies zu erfassen, spielt sowohl das System Engineering als auch das Requirements Engineering eine große Rolle.

Beschreibung

Es ist ein weit verbreiteter Irrtum, dass umso mehr Komponenten ein System hat, es umso komplexer ist. Dies kann in einigen Fällen durchaus möglich sein, ist allerdings keine Bedingung. Ein aufgrund vieler Komponenten äußerlich komplex erscheinendes System kann tatsächlich relativ einfach strukturiert sein. In diesem Falle spricht man von einem komplizierten System: Es ist möglich, es durch Zerlegung in seine Einzelteile nachzuvollziehen.

Eine genaue Definition eines komplexen Systems gibt es nicht, da die Komplexität eines Systems von vielen unterschiedlichen Faktoren abhängt. So spielt beispielsweise die Verbundenheit der einzelnen Komponenten, sowie die Zahl dieser Verknüpfungen eine große Rolle. Des Weiteren steigern Intransparenz und nicht-lineare Dynamiken die Komplexität. Fest steht, dass die Systeme im Zuge der industriellen Entwicklung gerade in sicherheitskritischen Branchen, wie zum Beispiel Luftfahrttechnik oder Medizintechnik, immer komplexer werden. Die Verfügbarkeit der Systeme, welche die volle Funktionalität belegt, spielt dabei eine große Rolle. Sie muss gegeben sein, um die optimale und (fast) fehlerfreie Nutzung der Systeme sicherzustellen. Dies ist besonders wichtig, da Systeme im sicherheitskritischen Bereich eine sehr große Verantwortung (teilweise gegenüber Menschenleben) haben.

Entwicklung komplexer Systeme

Wo ist der Unterschied zwischen der Entwicklung komplexer Systeme und „einfacher“ Systeme? Beides sind Entwicklungsprozesse, wobei bei komplexen Systemen die Herausforderung vor allem in der fehlerfreien Integration sowie dem Zusammenspiel der einzelnen Komponenten mit dem eingebetteten System liegt. Nicht nur die Systeme an sich, sondern auch die Entwicklung dieser nimmt somit an Komplexität rasant zu.

So besteht die Schwierigkeit vor allem in der Fehlersuche und -analyse während diesem recht intransparentem Prozess. Dies stellt Unternehmen und vor allem ihre Ingenieure vor eine große Herausforderung. Allein das Erkennen der möglichen Fehlerquellen ist bei der Entwicklung äußerst kompliziert und schwierig. Dies hat mehrere Gründe: Zum Einen ist inzwischen nicht nur das Fertigprodukt, sondern auch der Entwicklungsprozess, beziehungsweise die benötigten Werkzeuge, nicht zuletzt infolge der Veränderungen durch Industrie 4.0 teilweise automatisiert. Dies macht eine ständige Kontrolle sehr schwierig und es muss überaus genau und strukturiert voran gegangen werden. Zum Anderen stellt die Unendlichkeit der Systemzustände, beispielsweise bei einer Software, eine weitere Problematik dar. Die Simulation von „riskanten“ Zuständen ist daher aufgrund der Menge und der Unvorhersehbarkeit der Testfälle (beinahe) unmöglich. Es ist wie auch bei sonstigen Entwicklungsprozessen üblich, zunächst model based design, also modellbasierte Entwürfe, anzuwenden. Hier besteht allerdings wie bei der Simulation das Problem der unendlichen Möglichkeiten. Man greift daher bevorzugt auf zwei andere Arten zurück: Model Checking und design by contract. Beide Formen haben den Vorteil, dass sie nicht auf „was-wäre-wenn-Überlegungen“ beruhen, sondern versuchen, Ausfälle kategorisch auszumustern. Beim „model checking“ wird also getestet, ob das Modell überhaupt unzulässige Betriebszustände einnehmen kann und nicht etwa, was es für welche geben könnte. Beim „design by contract“ wird formal garantiert, dass eine bestimmte Komponente genau die festgelegte Eigenschaft besitzt. So wird ein bestimmtes Verhalten beim Verwenden von Schnittstellen zu anderen Komponenten gewährleistet und hidden links (s.u.) werden vermieden.

Grundsätzlich ist das Ziel bei der Entwicklung von komplexen Systemen, die Komplexität, beispielsweise durch Entkopplung einiger Komponenten zu reduzieren und Fehler auszumerzen, um die Sicherheit der späteren Nutzer zu gewährleisten. In dieser Hinsicht spielt bei komplexen Systemen vor allem das Requirement- bzw. Anforderungsmanagement eine große Rolle. Die Arbeit der Requirements-Spezialisten zielt darauf ab, Anforderungen der Systeme zu ermitteln, zu spezifizieren, exakt zu analysieren und genau zu prüfen, damit Qualitätssicherheit und Produktplanung für Kunden und Hersteller gewährleistet werden können.[1] Requirements Engineering ist für den Produkt- und Systementstehungsprozess daher enorm wichtig.

Fehlerbeispiele und ihre Ursachen

Risiken bei der Entwicklung von Systemen sind, beispielsweise durch kleinste Unaufmerksamkeit oder verpasste Überlegungen, Fehler bei dem System einzubauen oder die potenziellen Risiken nicht vor Fertigstellung zu erkennen. Folgend sind drei Probleme aufgelistet, die häufig bei komplexen Systemen auftreten.

  • Als „hidden link“ bezeichnet man eine Verknüpfung einzelner Komponenten, die erst aktiviert wird, wenn bestimmte Betriebszustände eintreffen. Daher sind sie nicht immer bei der Entwicklung vorherzusehen und können ein immenses Sicherheitsproblem darstellen. Ursache hierfür ist meistens, dass die einzelnen Komponenten zwar ausreichend getestet wurden, aber im Zusammenspiel in bestimmten Betriebszuständen nicht wie erwartet bzw. erwünscht funktionieren.
  • Dysfunktionales Verhalten heißt, dass ein grundsätzlich funktionierendes System einen veränderten Betriebszustand nicht erkennen kann und somit keinem klaren Muster mehr folgen kann. Dies wird häufig durch Fehlerkompensationen hervorgerufen, bei denen der Betriebszustand sehr stark verändert wird.
  • Emergenz ist sozusagen die Folge des „gefährlichsten“ hidden links. Ein winziger Fehler auf der untersten Ebene des Systems zieht sich dabei aufgrund der hohen Verkettung durch die komplette Systemstruktur und wird zuletzt auf der obersten Ebene manifestiert, wobei neue Eigenschaften entstehen.

Ein hidden link kann also zu einer Emergenz führen, die durch die Veränderung wiederum dysfunktionales Verhalten hervorrufen kann. Anhand dieser wenigen Beispiele ist bereits die starke Vernetzung der einzelnen Komponenten sichtbar.

Fehlerbehebung

Um eine Fehlerbehebung bei dieser Art Systeme durchzuführen, müssen bestimmte Verhaltensweisen im Falle einer Fehlermeldung installiert werden. Fehlertoleranz stellt die weitere Funktionalität eines Systems bei einem Fehler sicher. Es erfordert eine interne Kommunikation, da das System in der Lage sein muss, einen Fehler zu erkennen und diesen eventuell sogar auf einem anderen Weg auszugleichen. Durch die hohe Komponentenzahl in komplexen Systemen ist dies zwar sehr kompliziert, aber durchaus wirkungsvoll. Eine Komponente erkennt in diesem Fall also den Fehler einer anderen und kann diesen unter Umständen auch ausgleichen.

Eine solche Überwachungseinrichtung führt zu zwei verschiedenen Formen der Fehlerkompensation.

  • Fail passive bedeutet, dass Gerät schaltet sich im Falle einer Fehlermeldung aus. Was zunächst wie ein Totalausfall klingt, ist aus Sicht der Betriebssicherheit durchaus sinnvoll. Wird etwas beispielsweise zu heiß und es könnte zu einer Explosion kommen, ist das Abschalten der Maschine zweckmäßig.
  • Bei einem fail operative sucht das System nach einer Lösung ohne den Betrieb einzustellen und gewährleistet somit die Ausfallsicherheit. Beispielsweise wird eine Redundanz eingebaut, wodurch das Gerät nahezu ohne Veränderung weiterarbeiten kann.

Auch eine Fachkraft kann eine entscheidende Rolle bei der Fehlerbehebung spielen und einen maschinellen Fehler korrigieren. Dies ist nötig, wenn es gilt, (für die Maschine) unscharfe Situationen zu erkennen und dennoch nach einem passenden Muster zu lösen. Diese Form der Kompensation im Wechselspiel von Mensch und Maschine ist bei kooperativen Systemen sinnvoll, da dem Menschen der Fehler zunächst mitgeteilt wird und er dann durch seine Kreativität das passende Lösungsmodell finden kann.

Literatur

  • Andreas Liening: Komplexe Systeme zwischen Ordnung und Chaos: neuere Entwicklungen in der Theorie nicht-linearer dynamischer Systeme und die Bedeutung für die Wirtschaftswissenschaft und ihre Didaktik. LIT Verlag, 1999, ISBN 3825840239.
  • Klaus Richter, Jan-Michael Rost: Komplexe Systeme. S.Fischer Verlag, 2015, ISBN 3105603077.
  • Johannes Treu: Strategisches Management komplexer Systeme: Ideen, Methoden und Grenzen. GRIN Verlag, 2004, ISBN 3638301494.

Sonstige Quellen

Einzelnachweise

  1. "Warum viele Software und/oder Hardware Projekte scheitern" Experten-Blog der unitepeople GmbH, Beitrag von Martin Brocks
Nutzung von Community-Inhalten gemäß CC-BY-SA , sofern nicht anders angegeben.