OODA-Loop

Lesezeit: 5 Minuten

Die OODA-Loop ist ein Konzept militärischen Ursprungs, das sich auf verschiedenste Bereiche anwenden lässt und auch in der IT interessant ist. Das Akronym OODA steht für Observe-Orient-Decide-Act und beschreibt einen Entscheidungsprozess, der in einer Endlosschleife immer wieder abgespielt wird.

Die OODA-Loop im Schach

Ein prädestiniertes Beispiel für die Anwendung der OODA-Loop ist das Schachspiel. Jeder Zug im Schach entspricht einem Durchlauf der OODA-Loop:

  • Observe: Mein Gegner hat soeben diese Figur von da nach dort bewegt. Jetzt bin ich am Zug.
  • Orient: Mein Gegner hat die Figur aus einer der folgenden Gründe bewegt. Er könnte versuchen als nächstes das und das zu tun. Ich arbeite gerade daran das und das zu erreichen. Kann ich weiter an diesem Vorhaben arbeiten? Muss ich mein Vorgehen nach dem letzten Schritt des Gegenspielers justieren oder sogar komplett verwerfen?
  • Decide: Diese Optionen habe ich aus den und den Gründen. Sollte ich als nächstes diesen Zug wählen?
  • Act: Die Figur wird bewegt.

Der Faktor Zeit

Im entferntesten Sinne lässt sich diese Denkweise auf beliebige Szenarien anwenden. Eine entscheidende Rolle nimmt dabei die benötigte Zeit ein, die für einen einzelnen Durchlauf in der Schleife benötigt wird. Beim Schach ist diese Zeit vorgegeben. Es wird rundenbasiert gespielt, daher ist der Gegenspieler immer genau dann am Zug, wenn der andere Spieler seinen aktuellen Zug beendet hat. In der freien Marktwirtschaft agieren alle Spieler gleichzeitig. Den entscheidenen Vorteil könnte derjenige haben, der die Idee der OODA-Loop für sich nutzt, um Trends und Veränderungen am Markt zu beobachten und dabei schneller als die Wettbewerber mit den richtigen Entscheidungen zu agieren.

Diese Idee lässt sich auch konkret auf die Software-Entwicklung beziehen. Je früher man gegensteuert, wenn die Umsetzung einer komplexeren Änderung nicht so gelingt wie ursprünglich gedacht, desto schneller kann man zu einer nachhaltigen Lösung gelangen, die den eigenen Vorstellungen entspricht. Die Gründe für ein Misslingen können vielfältig sein:

  • Die Änderung ist für den Endanwender nicht bedienbar oder intuitiv genug
  • Die Änderung ist für die nicht-funktionalen Anforderungen wie Performance, Skalierbarkeit, Ausfallsicherheit, nicht ausreichend
  • Die Änderung erfüllt die fachlichen Anforderungen nicht, da Entwickler und Fachbereich unterschiedliche Vorstellungen haben
  • Die Änderung erfordert die Zusammenarbeit mit anderen Abteilungen und diese gestaltet sich zäher als gedacht
  • Die Änderung ist auf Systeme von Dritten angewiesenen, diese verhalten sich nicht wie erwartet

Egal wie die Gründe sind, es kann immer etwas passieren, das man nicht bedacht hat. Die OODA-Loop kann dabei helfen, das nötige Situationsbewusstsein („Situational Awareness“) zu schaffen, um bei sich abzeichnenden Problemen frühzeitig und angemessen zu agieren.

Agieren vs Reagieren

Ich habe es im bisherigen Text vermieden, das Wort reagieren zu verwenden. Auch die OODA-Loop spricht von Act, nicht von React. Wenn es sich um menschliches Agieren handelt, so hat das Agieren gegenüber dem Reagieren einen besseren Beigeschmack, denn wer noch agiert, der hat noch die freie Wahl. Wer reagiert, hat sich in der Regel in eine Situation begeben, in der alles nur noch schlimmer wird, wenn er weiter nicht reagiert. Das impliziert auch, dass vorher Fehler gemacht wurden. Man hätte früher agieren können, dann müsste man nun nicht reagieren.

Die OODA-Loop als Design Pattern

Einen ganz besonderen Reiz hat die OODA-Loop für mich in der Software-Entwicklung als Design Pattern. Ein Algorithmus auf Basis der OODA-Loop kann eingesetzt werden, um auf Veränderungen zu reagieren. Gute Beispiele aus der Softwareentwicklung sind für mich:

  • eine Container-Orchestrierungs-Software
  • ein Smarthome-System
  • ein Monitoring

Die Container-Orchestrierungs-Software bewertet permanent, ob der angestrebte Zielzustand weiterhin gegeben ist und steuert gegen, wenn dies nicht so ist: Gibt es Container, die den Health-Check nicht bestehen, so werden diese heruntergefahren. Übersteigt die Last einen Schwellwert, so werden mehr Instanzen hochgefahren. Ist ein definiertes Minimum an Instanzen unterschritten, so werden neue Instanzen hochgefahren.

Das Smarthome-System überwacht kontinuierlich die Sensoren und spricht bei bestimmten Zuständen nach definierten Regeln Aktoren an: Ist das Fenster bereits seit einer halben Stunde geöffnet, so wird es automatisch geschlossen. Brennt das Licht aber es wird keine Bewegung registriert, dann wird das Licht ausgemacht. Wird eine Vibration im Briefkasten registriert, gibt es eine Push-Benachrichtung aufs Smartphone, dass Post da ist.

Das Monitoring reagiert auf den Status seiner aktiven und passiven Checks und alarmiert auf verschiedenen Kanälen, wenn Checks einen kritischen Zustand vermelden. Unter Umständen beinhaltet es sogar Regeln, bei bestimmten kritischen Zuständen selbst Maßnahmen zu ergreifen, etwa einen Dienst aus der Ferne neu zu starten, wenn dieser sich mutmaßlich aufgehangen hat.