Die Geschichte der Resilienz, Teil 1
Resilienz verstehen

Resilienz ist ein Schlüsselelement, um Fahrzeuge, industrielle Fertigung und medizinische Geräte auf die nächste Stufe zu heben. Es ist weitaus mehr als ein schickeres Synonym für Verlässlichkeit. Der Aspekt, für den Resilienz steht, ist für den Aufbau kognitiver Systeme unerlässlich. Aus diesem Grund steht Resilienz im Mittelpunkt einer neuen Serie im Safe Intelligence Blog. Im ersten Teil werden wir hinter den Begriff blicken und klären, warum Resilienz so wichtig ist und mehr als nur ein Synonym für Verlässlichkeit darstellt.

29. September 2022

mask Meereswelle

Der Begriff Resilienz hat in den vergangenen Jahren Konjunktur. Im Zusammenhang mit Software-Zuverlässigkeit wird er oft als ein neues, schickes Synonym für alte Konzepte verwendet. Tatsächlich aber ist Resilienz viel mehr als die traditionelle Zuverlässigkeit und Gegenstand von mehr als 15 Jahren Forschung. Daher kommt es darauf an zu verstehen, was Resilienz eigentlich ist und dass es viel mehr ist als nur ein neues Modewort .

Dennoch ist es sehr zu begrüßen, dass dieses wertvolle Konzept etwas mehr ins Rampenlicht rückt. Während derzeit vor allem die Geschichte der sicheren Künstlichen Intelligenz (KI) als Erfolg Kognitiver Systeme sowie fahrerloser Autos erzählt wird, ist es die Geschichte der Resilienz, die wirklich zählt. Warum und wie Resilienz zum essenziellen Bestandteil für sichere Kognitive Systeme wird, steht im Mittelpunkt der neuen Serie »Die Geschichte der Resilienz« auf dem Blog des Fraunhofer IKS.

Das Konzept der Resilienz

Obwohl der Begriff »Resilienz« in den vergangenen Jahren immer beliebter geworden ist, reichen seine Wurzeln bis ins 15. Jahrhundert zurück [1]. Nach seiner ersten Verwendung als juristischer Begriff wurde er von Francis Bacon definiert als physikalische Eigenschaft – nämlich, dass ein Körper nach Einwirkung einer Kraft in seinen ursprünglichen Zustand zurückkehren kann.

In den siebziger Jahren des letzten Jahrhunderts wurde der Begriff neben vielen anderen Disziplinen auf dem Gebiet der biologischen Ökosysteme geprägt [2]. Wenn beispielsweise ein Ameisenvolk in einen anderen Lebensraum umgesiedelt wird, konzentriert sich die Kolonie nicht auf Stabilität, indem sie ihre früheren Strukturen und Verhaltensmuster beibehält, die im neuen Kontext nicht (mehr) gut genug funktionieren würden. Stattdessen passt sie ihre Strukturen und Verhaltensweisen an den neuen Kontext an, um zu überleben und zu gedeihen. Im Allgemeinen ist es nicht das primäre Ziel eines biologischen (Öko-)Systems, starr an Strukturen oder Verhaltensweisen festzuhalten, sondern es ist das primäre Ziel, zu überleben und zu gedeihen. Jedes biologische System passt daher seine Strukturen und Verhaltensweisen ständig so an, dass es unter den sich ständig verändernden Bedingungen seines Umfelds gedeihen kann. Das ist es, was wir als Menschen ständig tun (müssen). Und das ist es, was das Ameisenvolk tut. Biologische Systeme passen ihre Struktur und ihr Verhalten an, um ihre übergeordneten Ziele in sich verändernden Umgebungen zu erreichen - das macht sie resilient.

Unvorhersehbarer Kontext der Systeme

Diese Idee der Resilienz beeinflusste auch die erste Definition des Begriffs im Kontext der Softwarezuverlässigkeit von Jean-Claude Laprie: »Die Beständigkeit der Zuverlässigkeit bei Änderungen.« [3]. Ein sehr wichtiger Aspekt ist für Laprie, dass dies auch Änderungen einschließt, die nicht vorhergesehen wurden oder sogar unvorhersehbar sind. Das bedeutet, dass das Konzept der Resilienz die Tatsache akzeptiert, dass wir einfach nicht in der Lage sind, den Kontext unserer Systeme vorherzusagen. Und dass wir daher nicht in der Lage sind, statische Systeme zu bauen, die in jedem gegebenen Kontext verlässlich sein werden. Stattdessen bedeutet Resilienz, dass sich Systeme immer wieder anpassen müssen (entweder auf selbstanpassende Weise oder in einem DevOps-ähnlichen Ansatz), um ihre übergeordneten Ziele in sich verändernden, unsicheren Kontexten zu erreichen. Betrachtet man die Open-World-Herausforderung beispielsweise im Zusammenhang mit fahrerlosen Autos, klingt dies sehr vertraut und die Bedeutung von Resilienz für solche Systeme wird deutlich.

Ganz allgemein betrachtet, zeichnen sich resiliente Softwaresysteme durch drei Schlüsseleigenschaften aus:

  1. Resilienz ist die Fähigkeit eines Systems, auf eine (starke) Veränderung in seinem betrieblichen Kontext zu reagieren,
  2. indem es sich dem jeweiligen Kontext anpasst,
  3. sodass es wesentliche Eigenschaften des Systems erhalten oder optimieren kann.

Die Betrachtung dieser Merkmale hilft uns auch, die Unterschiede zu anderen Begriffen zu verstehen. Ausgehend von der Zuverlässigkeit konzentriert sich letztere eher auf interne Probleme wie fehlerhafte Komponenten oder Programmierfehler. Im Gegensatz dazu konzentriert sich die Resilienz auf den externen Kontext. Auch wenn Änderungen im Kontext eines Systems oft innerhalb des Systems erkannt werden, liegt die Ursache des Problems im Kontext. Beispielsweise erkennt eine Komponente des Maschinellen Lernens ein hohes Maß an Unsicherheit.

Resilienz ist also in gewisser Weise mit Robustheit verwandt, d. h. »dem Grad, in dem ein System oder eine Komponente in Gegenwart ungültiger Eingaben oder stressiger Umgebungsbedingungen korrekt funktionieren kann « [4]. Aber Resilienz ist viel mehr als Robustheit. Resilienz bezieht sich auf Veränderungen im Kontext. Es reicht nicht aus, die gleichen Dinge nur ein wenig strikter zu tun, das gleiche System nur ein wenig härter und robuster zu bauen. Resilienz bezieht sich auf Veränderungen in seinem Kontext. Anpassung der Systeme ist erforderlich, da die derzeitigen Strukturen und Verhaltensweisen des Systems unter den neuen Randbedingungen des veränderten Kontexts die Ziele des Systems nicht mehr erreichen würden – so wie das Ameisenvolk sein Verhalten anpassen muss, um in dem neuen Lebensraum zu überleben.

Zitat

Resilienz bedeutet, den Nutzen zu optimieren und gleichzeitig die Sicherheit in unsicheren Kontexten zu bewahren

@webroot/assets/icons/core/quote-close.svg
Prof. Dr.-Ing. habil. Mario Trapp

Institutsleiter des Fraunhofer-Instituts für Kognitive Systeme IKS

Resilienz bedeutet also, dass es nicht sinnvoll ist, sich streng an eine statisch festgelegte Spezifikation von Struktur und Verhalten zu halten. Stattdessen liegt der Fokus darauf, , wichtige Eigenschaften zu erhalten und die Ziele des Systems zu optimieren. Das Verhalten und die Struktur werden flexibel und können angepasst werden, um die übergeordneten Ziele zu erreichen. Währenddessen bleiben wichtige Eigenschaften erhalten. Im Prinzip ist es sehr flexibel, wie diese Ziele und Eigenschaften aussehen können. In unserem speziellen Bereich ist die Schlüsseleigenschaft, die die Systeme bewahren sollen, die Sicherheit. Aber wir verkaufen Systeme nicht, weil sie sicher sind, sondern weil sie eine wettbewerbsfähige Funktionalität sicher bereitstellen. Daher versuchen wir, den Nutzen des Systems zu optimieren und gleichzeitig die Sicherheit in unsicheren, unbekannten und sich verändernden Kontexten zu erhalten. Dies führt zu unserer Definition von Resilienz: »Optimierung des Nutzens unter Wahrung der Sicherheit in unsicheren Kontexten«.

Die Bedeutung der Resilienz für Kognitive Systeme

Ein cyber-physisches System bildet immer eine Einheit mit seiner Umgebung, mit der es interagiert. Es wird daher nur dann sicher und zuverlässig funktionieren können, wenn die Entwickler die Umgebung richtig vorhersagen, richtig verstehen, richtig spezifizieren und das System dafür richtig entwickeln. In Anbetracht der oben genannten Dynamik ist es jedoch schlicht unmöglich, den Kontext angemessen und vollständig vorherzusagen, zu verstehen und zu spezifizieren. Es ist auch nicht möglich, eine einzige statische Lösung zu entwickeln, die für alle möglichen Betriebssituationen geeignet ist. Außerdem ist es oft einfacher, spezifische Lösungen für spezifische Betriebssituationen zu gewährleisten, als alles in eine einzige hochkomplexe allgemeine Lösung zu packen. Damit die Vision von Systemen wie fahrerlosen Autos Wirklichkeit werden kann, ist es daher unerlässlich, die Systeme in die Lage zu versetzen, sich an ihren Kontext anzupassen. Damit soll deren Nutzen maximiert und gleichzeitig die Sicherheit gewährleistet werden. Wir haben also keine andere Wahl, als resiliente Systeme zu bauen.

Die Herausforderung der Resilienz

Sobald Systeme in die Lage versetzt werden, sich ihres eigenen Zustands, ihrer Ziele und ihres Kontexts bewusst zu werden, um sich an neue Kontexte anpassen zu können, erkaufen wir uns dies mit enormer Kompliziertheit (im nächsten Teil dieser Serie wird deutlich werden, warum ich den Begriff Komplexität hier nicht verwende).

In den meisten Fällen führt die Einführung von Resilienz-Architekturen und Resilienz-Engineering-Ansätzen jedoch nicht zu mehr Komplexität. Sie macht lediglich die bereits vorhandene Komplexität sichtbar. Dies liegt daran, dass Anpassungsmechanismen in den heutigen Systemen bereits implizit als Teil der Funktionalität implementiert oder in neuronale Netze hinein »trainiert« sind. Als Folge einer solchen impliziten Anpassung wird das Anpassungsverhalten zu einem versteckten, impliziten Teil des Systems, der nicht kontrolliert werden kann. Qualitätsprobleme sind vorprogrammiert, und sichere Lösungen sind unmöglich.

Gleichzeitig ist es nicht wirklich sinnvoll, einerseits dem System eine flexible Anpassung zu ermöglichen und andererseits feste »Wenn-dann-sonst-Anpassungen« einzubauen. Angesichts der aktuellen Herausforderungen bei der Gewährleistung der Sicherheit von Maschinellem Lernen (ML) wäre es jedoch eher kontraproduktiv, ML für die Umsetzung von Anpassungen anstelle von fest eingebauten Regeln zu verwenden. Außerdem erfordert Resilienz ein semantisches Verständnis des Systems, seiner Ziele und seines Kontexts - etwas, wozu zumindest die heutigen neuronalen Netze nicht in der Lage sind.

Executive director Mario Trapp
Bild

Prof. Dr.-Ing. habil. Mario Trapp: »Um resiliente Systeme zu bauen, müssen wir KI, technische Methoden und geeignete Architekturen ganzheitlich betrachten. Wir nennen das ›Safe Intelligence‹.«

Es stellt sich also die Frage, wie die Herausforderung der Resilienz gelöst werden kann. Auch wenn die Softwaretechnik heute im Schatten der KI steht, bietet sie doch bereits ein vielversprechendes Instrumentarium für die Entwicklung widerstandsfähiger Systeme. Und selbst anpassende Systeme sind sicherlich ein wesentlicher Bestandteil davon [5]. Seit mehr als zwei Jahrzehnten werden Methoden und Architekturen für selbst anpassende Systeme entwickelt, die eine vielversprechende Grundlage für die Entwicklung resilienter Systeme bilden. Kombiniert man diese Ansätze mit dem Konzept des Dynamic Safety Management [6][7], so ergibt sich ein stabiles Fundament. Auf diesem kann der unabdingbare Schritt in Richtung Resilienz getan und die daraus resultierende Komplexität beherrscht werden.

Zusammenfassung

Resilienz bietet also das Potenzial oder ist meines Erachtens sogar unverzichtbar für die Entwicklung von Systemen, die in hochkomplexen, dynamischen und unsicheren Umgebungen funktionieren müssen. Es ist daher nicht verwunderlich, dass viele Softwareunternehmen die Grundlage der Resilienz, nämlich die Anpassungsfähigkeit, bereits als impliziten Bestandteil in die Funktionalität ihrer Anwendungen einbauen. Jahrzehntelange Erfahrungen aus anderen Bereichen haben jedoch gezeigt, dass dieser Ansatz zum Scheitern verurteilt ist - trotz der viel zu geringen Flexibilität eines solchen impliziten Ansatzes sind Qualitätsprobleme vorprogrammiert und eine Gewährleistung von Sicherheit ist kaum möglich.

Andererseits können wir mit den Konzepten, die wir von selbst anpassenden Systemen und dergleichen kennen, die Komplexität belastbarer Systeme beherrschen und damit die Vision Kognitiver Systeme Wirklichkeit werden lassen. Zu diesem Zweck muss über die Grenzen der alleinigen sicheren KI hinausgedacht werden. Um resiliente Systeme zu entwickeln, müssen wir KI, technische Methoden und geeignete Architekturen ganzheitlich betrachten. Wir nennen dies »Safe Intelligence«.

Quellen

[1] S. Gößling-Reisemann, H. D. Hellige, und P. Thier, The Resilience Concept: from its historical roots to theoretical framework for critical infrastructure design, Bd. 217. Bremen: Universität Bremen, Forschungszentrum Nachhaltigkeit (artec), 2018.

[2] C. S. Holling, „Resilience and stability of ecological systems“, Annu. Rev. Ecol. Syst., Bd. 4, Nr. 1, S. 1–23, 1973.

[3] J.-C. Laprie, „From dependability to resilience“, in 38th IEEE/IFIP Int. Conf. On dependable systems and networks, 2008, S. G8–G9.

[4] I. O. for Standardization, I. E. Commission, I. of Electrical, und E. Engineers, ISO/IEC/IEEE 24765: 2017(E): ISO/IEC/IEEE international standard - systems and software Engineering–Vocabulary. IEEE.

[5] D. Weyns, An introduction to self-adaptive systems: A contemporary software engineering perspective. Wiley, 2020. [Online]. Verfügbar unter: https://books.google.de/books?...

[6] M. Trapp, D. Schneider, und G. Weiss, „Towards safety-awareness and dynamic safety management“, in 2018 14th European Dependable Computing Conference (EDCC), 2018, S. 107–111.

[7] M. Trapp und G. Weiss, „Towards Dynamic Safety Management for Autonomous Systems“, in Safety-Critical Systems Symposium: Engineering Safe Autonomy, 2019, Bd. 27, S. 193–205.


Nächster Artikel

The Story of Resilience, Part 3
Understanding Self-Adaptive Systems

Institutsleiter Mario Trapp
Mario Trapp
Safety Engineering / Fraunhofer IKS
Safety Engineering