SLOG – Deterministische Datenbanksysteme die Lösung für alle* Probleme?

*zumindest im Bereich georeplizierter Datenbanken

Wir leben in einer globalisierten Welt, in welcher wir Anwendungen auf der ganzen Welt nutzen können. Egal wo wir gerade sind, können wir auf diese Programme und Daten zugreifen. Doch diese Möglichkeit stellt Softwaresysteme heutzutage vor große Herausforderungen. Nutzer möchten so schnell wie möglich auf Daten zugreifen und gehen davon aus, dass die Daten, die sie bekommen auch korrekt und auf dem richtigen Stand sind. Um die Verfügbarkeit der Daten für die Nutzer zu erhöhen, werden moderne Datenbank- und Softwaresysteme repliziert. Das heißt es werden Kopien derselben Daten hergestellt und regelmäßig abgeglichen, um die Daten auf dem gleichen Stand zu halten. Moderne Anwendungen replizieren Daten also über geografische Regionen hinweg. Jedoch zwingen bestehende Datenbanksysteme, welche geografische Replikationen unterstützen, die Nutzer auf mindestens eines der folgenden Merkmale zu verzichten, um eine hohe Verfügbarkeit zu erreichen:

  • Strict Serilizability: Bei strikter Serialisierbarkeit scheinen die Operationen in einer bestimmten Reihenfolge zu erscheinen, die mit der Echtzeit-Reihenfolge der Operationen übereinstimmen. Das heißt wenn zum Beispiel Operation A abgeschlossen ist, bevor Operation B beginnt, sollte A in der Serialisierungsreihenfolge vor B erscheinen. Die Serialisierbarkeit ist der Ausführungsplan für die parallele Ausführung mehrere Transaktionen. Es gibt die Reihenfolge vor, in welcher die einzelnen Operationen der Transaktion ausgeführt werden und es verhält sich wie ein System, das auf einer einzigen Maschine läuft und die Transaktionen sequenziell verarbeitet.
  • Low-latency writes: Um strikte Serialisierbarkeit zu erreichen muss auf Schreibvorgänge mit geringer Latenz verzichtet werden. Um die strenge Serialisierbarkeit in georeplizierten Datenspeichern zu garantieren, muss es mindestens ein Koordinationsprotokoll geben, um einen Schreibvorgang auf alle Replikate zu übertragen. Genau diese Koordination ermöglicht zwar die strikte Serialisierbarkeit, erhöht aber die Latenzzeit bei jedem Schreibvorgang. Je weiter die Regionen voneinander entfernt sind, desto länger dauert es einen Schreibvorgang abzuschließen.
  • High transaction throughput: Im Allgemeinen wird die Geschwindigkeit eines Datenbanksystems anhand des Transaktionsdurchsatzes gemessen, ausgedrückt als Anzahl der Transaktionen pro Sekunde. In replizierten Datenbanken kann es zu einer bereichsübergreifenden Koordinierung kommen, das heißt wenn bei Lese- und Schreibvorgängen auf eine weiter entfernte Region zugegriffen werden muss. Normalerweise sind die mit dem Nutzer verbunden Daten stark auf den physischen Standort des Nutzers ausgerichtet. Beliebige Transaktionen können jedoch auf mehrere Datenelemente zugreifen, wobei jedes Datenelement in einer anderen Region verwaltet wird. Hier muss schließlich wieder eine regionsübergreifende Koordinierung stattfinden, dies ist zeitaufwändig. Das Zeitfenster in den kollidierenden Transaktionen nicht ausgeführt werden können ist groß und der Transaktionsdurchsatz verringert. 

Um die Probleme zu lösen, die sich zur Erfüllung der genannten Eigenschaften ergeben, gibt es unterschiedliche Ansätze. Ein Ansatz ist Determinismus. Was das genau heißt und wie es genau funktioniert wollen wir an dem System „SLOG“ genauer betrachten. SLOG ist laut dem Paper von Run et al. „SLOG: Serializable, Low-Latency, Geo-Replicated Transactions“ der erste Systementwurf, welcher alle drei genannten Eigenschaften erfüllt.

Nachdem im Folgenden die Probleme georeplizierter Datenbanken noch einmal genauer betrachtet werden, wird der Begriff Determinismus vor allem im Kontext von modernen Datenbanksystemen geklärt und das Prinzip wird anhand des Systems SLOG noch einmal genauer erläutert.

Was ist das Problem?

Die Probleme, die uns in replizierten Datenbanken begegnen, erschließen sich bereits aus der vorangegangenen Erklärung der drei Eigenschaften moderner Anwendungen. Im Folgenden wird das Ganze noch einmal Schritt für Schritt genauer betrachten und es wird klar, warum es zu diesen Problemen kommt.

Single-Node-Datenbanken – Datenbanken, die für eine einzige Maschine konzipiert wurden – funktionieren sehr gut. Wenn Kunde 2 den Artikel 3 kaufen möchte, werden diese zwei Items gelocked und erst dann sind die Änderungen möglich (vgl. Abbildung 1). In einem einfachen Datenbanksystem ist die Serialisierbarkeit also ohne großes Zutun garantiert und über die anderen zwei Eigenschaften muss sich gar nicht gekümmert werden, da diese in diesem Kontext noch gar nicht wirklich relevant sind.

Abbildung 1: Single-Node-DB

Bei Multi-Node-Datenbanken wird das ganze schon etwas schwieriger und es braucht ein bisschen mehr Anstrengung. Man spricht hierbei auch von einem Scalability Problem. Die Kunden und die Artikel sind nicht mehr wie im Single-Node-Beispiel auf einer Maschine, sondern auf vier Maschinen aufgeteilt. Jede Maschine nutzt nur den Code welcher relevant für ihn ist. Jedoch muss es irgendeine Kommunikation zwischen beiden Maschinen geben, die den Maschinen gegenseitig bestätig, dass jede Maschine das getan hat, was sie auch tun soll. Jede Maschine muss ihren Part der Transaktion eigenständig durchführen. Diese Kommunikationsproblem kann durch Locking oder auch durch eine Two-Phase-Commit-Protokoll gelöst werden (vgl. Abbildung 2). Hierbei ergibt sich jedoch aufgrund dieser Protokolle wieder ein neues Problem. Durch das gesamte Protokoll muss gelockt werden. Dies führt zu einer Reduzierung der Geschwindigkeit unserer Transaktionen, da die Zeiträume, über die die Locks gehalten werden müssen, lange sind.

Abbildung 2: Multi-Node-DB

Wenn wir jetzt aber repliziere Datenbanken haben, also Kopien der Datenbank auf der ganzen Welt verteilt, müssen solche Locks noch viel länger gehalten werden, was noch mehr Zeit benötigt.     

Durch das Nutzen von replizierten Datenbanken an verschiedenen Locations wird Nähe zu den Nutzern erreicht und um dadurch die Verfügbarkeit zu steigern. Hierbei wird eine Transaktion erst in der eigentlichen Location durchgeführt und danach – genauer gesagt nach dem das Commit-Protokoll durchgeführt wird – wird die die Datenbank synchron in allen Locations auf der ganzen Welt repliziert (vgl. Abbildung 3). Das Problem ist hier, wie bereits erwähnt, dass die Locks sehr lange gehalten werden müssen, bis die Replikation abgeschlossen ist.

Abbildung 3: Georeplizierte DB

War es bei den Multi-Node-Datenbanken noch so, dass die Latenz vom Commit-Protokoll das Problem war, ist es bei replizierten Datenbanken nun die Latenz unseres Replikationsprotokolls. Beide Protokolle verursachen Latenzen durch das Halten von Locks.

Genau diese Herausforderung kann durch Determinismus gelöst werden.   

Was ist Determinismus im Kontext von Datenbanken?

Determinismus gibt es in allen möglichen Fachgebieten, wie z.B. der Linguistik, der Biologie oder auch der Theologie. Laut Wikipedia ist „der Determinismus (von lateinisch determinare ‚festlegen‘, ‚Grenzen setzen‘, ‚begrenzen‘) die Auffassung, dass alle – insbesondere auch zukünftige – Ereignisse durch Vorbedingungen eindeutig festgelegt sind.“ Diese Definition trifft es im Zusammenhang mit verteilten Datenbanksystemen eigentlich schon ganz gut. Denn das ist was versucht wird in deterministischen Systemen zu erreichen. Genauer gesagt, wenn zwei getrennte Kopien des Systems die gleiche Eingabe sehen, dann sind sie in der Lage diese Eingabe unabhängig voneinander zu verarbeiten und aufgrund des Determinismus garantiert die gleiche Ausgabe (den gleichen Endzustand) zu ergeben.

Lange war die stärkste Garantie in Datenbanksystemen die Serialisierbarkeit. Hierbei wird sichergestellt, dass der Endzustand des Datenbanksystems auch bei der gleichzeitigen Verarbeitung vieler Transaktionen, dem entspricht, als hätte es alle Transaktionen seriell verarbeitet. Jedoch wird hierbei keine Garantie übernommen, in welcher seriellen Reihenfolge die Transaktionen verarbeitetet werden. Bei deterministischen Systemen wird aber die Äquivalenz einer seriellen Reihenfolge garantiert. Es gibt also eine Verarbeitung von Transaktionen in einer einzigen vorbestimmten seriellen Reihenfolge. Dadurch gibt es nur einen möglichen Zustand, in dem sich das System befinden kann, trotz des Vorhandenseins von potenziell nicht-deterministischem Code in der Transaktionslogik.

Um nur einen möglichen Endzustand zu erreichen, müssen moderne deterministische Datenbanksysteme bei einem Anfangszustand und einer definierten Eingabe in das System, die Eingaben vorverarbeiten.

Normalerweise arbeiten verschiedene Kommunikations-Threads, die es in bestehenden nicht-deterministischen Datenbanksystemen gibt, unabhängig voneinander. Für deterministische Datenbanksysteme ist diese Architektur nicht praktikabel, da Determinismus nur garantiert werden kann wenn es eine klare, allgemeine vereinbarte Eingabe gibt. Um diese Garantie aber zu erfüllen, muss eine Aufzeichnung der Eingabe erstellt werden, nach der sich das gesamte System richten kann. In einer Ein-Maschinen-Architektur zum Beispiel kann dies erreicht werden, in dem alle Transaktionen durch einen Thread geleitet werden, der die Eingabetransaktionen in der Reihenfolge aufzeichnet, in der er sie beobachtet.

Für die Erstellung eines solchen deterministischen Ausführungsplans für mehrere replizierte Datenbanksysteme im Vergleich zu herkömmlichen nichtdeterministischen Systemen ist mehr Wissen über die Transaktion erforderlich, bevor sie verarbeitet werden kann. Vor allem aber muss die gesamte Transaktion während des Planungsprozesses vorhanden sein. Außerdem erfordert die Vorausplanung in der Regel Kenntnisse darüber, auf welche Daten eine Transaktion zugreifen wird. Dieses Wissen wird entweder statisch aus der Inspektion des Transaktionscodes abgeleitet, durch konservative Schätzungen vorgenommen oder es werden Teile der Transaktion spekulativ ausgeführt. In georeplizierten, hochskalierbaren Systemen kann dies zum Beispiel durch ein Protokoll wie Paxos geschehen. Hierbei werden alle Transaktionen vor der Verarbeitung durch dieses Protokoll geleitet, um einen Konsensus über das System hinweg zu erzielen. Dies hat jedoch den Nachteil, dass jede Transaktion die regionsübergreifende Latenzzeit für die Ausführung von Paxos über die Regionen hinweg bezahlen muss.

Jedes System sieht in einem deterministischen System durch ein Konsensus-Protokoll wie Paxos dieselbe Eingabetransaktion, und solange sie dieselbe Eingabe sehen, werden sie in denselben Endzustand gelangen. Die einzige Koordination, die in einem deterministischen Datenbanksystem noch stattfinden muss, ist die Kommunikation, die erforderlich ist, um sich über die Eingabe in das System zu einigen. Jegliche andere Kommunikation wie zum Beispiel Locking oder Two-Phase-Commit-Protokolle werden dann nicht mehr benötigt und Determinismus verringert dadurch die Latenzzeit und verbessert den Durchsatz.

Die einzige Latenz, die wir jetzt noch haben ist die des Konsensus-Protokolls. Dies kann mit dem System SLOG gelöst werden, welches noch diesen Schritt weiter geht und versucht die Latenz, verursacht durch das globale Konsensus-Protokoll, zu entfernen.

Wie funktioniert SLOG?

SLOG ist nicht der einzige deterministische Ansatz. Jedoch ist SLOG der einzige Ansatz, welcher den globalen Konsensus eliminiert und dadurch alle drei Eigenschaften garantieren kann. Dieses System entfernt den globalen Paxos-Prozess, um die Latenzzeit zu verringern. Im Folgenden wollen wir SLOG oberflächlich betrachten und sehen wie SLOG diesen Schritt im Vergleich zu herkömmlichen deterministischen Ansätzen weitergeht.

Wie schafft es SLOG nun dieses Konsensus-Protokoll abzuschaffen? SLOG verwendet eine Master-orientierte Architektur. Hierbei wird jedes Datenelement in einer sogenannten „Home“-Region oder Heimatregion verwaltet, was bedeutet, dass jeder Datensatz einen primären Speicherort besitzt. Schreib- und linearisierbare Lesevorgänge eines Datenelements müssen an seine Heimatregion gerichtet sein und am primären Speicherort verarbeitet werden. Eine Region in SLOG ist eine Gruppe von Servern, die über ein Netzwerk mit niedriger Latenz verbunden sind. Jede SLOG-Region enthält eine Reihe von Servern, auf die die in dieser Region gespeicherten Daten aufgeteilt (und repliziert) werden. Ein Teil dieser Daten wird von dieser Region beherrscht (sie ist die Heimatregion für diese Daten) und der Rest ist eine Kopie von Daten aus einer anderen Heimatregion. Jedes Datenelement hat also seine primäre Location (Heimatregion), was so viel bedeutet wie Nutzer in Berlin haben ihre primäre Location in Berlin, Nutzer in Sydney haben ihre primäre Location in Sydney. Wenn ich als Berliner nun Daten aus Sydney lesen möchte, muss ich die Daten auch aus der Region Sydney lesen, weil diese Up-to-date sind.

Die Transaktionen in SLOG werden basierend auf dieser Aufteilung in Heimatregionen in zwei Kategorien eingeteilt:

  • Single-Home: Die Daten, auf die zugegriffen werden soll, haben ihr Home-Replika in derselben Region
  • Multi-Home: Die Daten, auf die zugegriffen werden soll, haben ihr Home-Replika in unterschiedlichen Regionen

Lese- und Schreibzugriffe auf nahe gelegene Daten erfolgen schnell und ohne regionsübergreifende Kommunikation. Für Lese- und Schreibvorgänge auf entfernte Daten sowie für Transaktionen, die auf Daten aus mehreren Regionen zugreifen, einer Multi-Home-Transaktion, fallen jedoch regionsübergreifende Kommunikationskosten an. Die Ausführung von Multi-Home-Transaktionen stellen auch das technisch schwierigste Problem bei der Entwicklung von SLOG dar. Das Ziel besteht darin, strenge Serialisierungsgarantien und einen hohen Durchsatz bei einer potenziell großen Anzahl von Multi-Home-Transaktionen aufrechtzuerhalten, auch wenn diese auf konkurrierende Daten zugreifen und eine Koordinierung über physisch entfernte Regionen hinweg erfordern.

Auch SLOG verwendet ein Koordinationsprotokoll, um denselben Endzustand zu erreichen und nutzt einen solchen deterministischen Ausführungsrahmen wie oben beschrieben, um Skalierbarkeits- und Durchsatzbeschränkungen zu überwinden. Jedoch ersetzt SLOG das globale Protokoll durch ein regionales Protokoll. In SLOG wird der globale, auf Paxos-basierte, Log entfernt und durch ein lokales Log-Protokoll, welches ebenfalls auf Paxos basiert, ersetzt. Jede Region unterhält ein lokales Eingabeprotokoll, das über Paxos auf ihren Servern implementiert wird. Dieses lokale Protokoll enthält nur Transaktionen, die voraussichtlich Daten verändern, die in dieser Region verwaltet werden. Dieses Eingabeprotokoll wird in Batches an alle anderen Regionen gesendet. Jeder Batch ist mit einer Sequenznummer gekennzeichnet und die anderen Regionen verwenden diese Sequenznummer, um sicherzustellen, dass sie keine Chargen aus dieser Region übersehen haben. Auf diese Weise ist jede Region schließlich in der Lage das vollständige lokale Protokoll von jeder anderen Region zu rekonstruieren

Angenommen wir haben eine Transaktion, welche nur auf Datenelemente aus einer Region zugreift (Single-Home-Transaktion), sieht das ganze wie in der folgenden Abbildung 4 aus:

Abbildung 4: SLOG-Single-Home-Transaction

Wenn nun eine Transaktion auf Datenelemente aus zwei verschieden Regionen auftritt (T3 und T5 in Abbildung 5), wird diese aufgeteilt. Man spricht dann von einer Multi-Home-Transaktion:

Abbildung 5: Multi-Home-Transaction

Das globale Paxos-Log, welches zuvor in anderen deterministischen Ansätzen für Multi-regionale Datenbanken vorhanden war, weicht einer lokalen Version eines solchen Paxos-Protokolls pro Region, welches nur noch asynchron an die anderen Regionen repliziert wird (vgl. Abbildung 6).

Abbildung 6: SLOGs lokale Protokolle

Die lokalen Protokolle werden in jede andere Region repliziert und sind unterschiedlich verschachtelt, was dazu führt, dass T3 zum Beispiel in jeder Region anders angeordnet ist (vgl. Abbildung 7), was aber nicht weiter problematisch ist, da die Daten disjunkt sind. 

Abbildung 7: SLOGs lokale Transaktionsreihenfolge

Die Regionen weichen nicht voneinander ab, da

  1. das globale Protokoll in jeder Region die ursprüngliche Reihenfolge der lokalen Protokolle, die es verschachtelt, beibehält.
  2. lokale Protokolle aus verschiedenen Regionen auf disjunkte Daten zugreifen.
  3. die deterministische Verarbeitungsmaschine sicherstellt, dass die Transaktionen so verarbeitet werden, dass das Endergebnis dem Ergebnis der Verarbeitung in der seriellen Reihenfolge entspricht, die im globalen Protokoll der jeweiligen Region vorliegt.

Single-Home-Transaktionen (T1, T2, T4) werden übertragen, sobald sie in ihrer Primärregion abgeschlossen sind.

Multi-Home-Transaktionen (T3, T5), die auf Daten in mehreren Regionen zugreifen, müssen auf die asynchrone Replikation des Eingabeprotokolls warten, bevor sie die Transaktion festschreiben können (sie müssen auf das Eintreffen des Protokolls warten). Die Transaktion wird verarbeitet, sobald die entsprechenden Protokollsätze in jeder lokalen Region vorhanden sind.

Durch die Aufteilung in Single-Home und Multi-Home wird realisiert, dass die meisten Transaktionen schnell sind (Single-Home). Auch wenn die Transaktionen in mehreren Regionen etwas langsamer sind, verschlechtern sich die Latenzen und der Durchsatz nicht so stark.

Fazit

Determinismus verringert die Latenzzeit und verbessert den Durchsatz, in dem es die Möglichkeit lokaler Deadlocks ausschließt und verteilte Commit-Protokolle wie z.B. Two-Phase-Commit reduziert, beziehungsweise gänzlich eliminiert. Experimente haben gezeigt, dass der Durchsatz bei deterministischen Systemen im Vergleich zu nicht-deterministischen Systemen bei zunehmender Konkurrenz deutlich besser performt (vgl. Abbildung 8).

Abbildung 8: Durchsatzvergleich deterministischer und nicht-deterministischer Systeme

Herkömmliche deterministische Systeme haben zwar weiterhin mit Latenzen (bzgl. des Konsensus-Protokolls) zu kämpfen, jedoch gibt es Systeme wie SLOG, die versprechen auch diese Latenz zu verringern oder sogar zu eliminieren, um alle drei in der Einleitung genannten Eigenschaften zu erfüllen.  

Für Datenbankreplikationen ist der offensichtlichste Vorteil deterministischer Datenbanksysteme die Gewährleistung, dass, solange alle Replikate denselben Input erhalten, diese nicht voneinander abweichen. Weitere Vorteile in der deterministischen Architektur sind auf jeden Fall die Skalierbarkeit, die Modularität und die Gleichzeitigkeit. Nicht-deterministische Ausfälle führen in einem deterministischen System nicht zu einem Transaktionsabbruch, da die Datenbank ihren Zustand zum Zeitpunkt des Absturzes immer wiederherstellen kann, was diese Systeme auch robuster gegen Fehler macht.

Auf den ersten Blick scheinen deterministische Architekturansätze in verteilten Datenbanken die Lösung für viele bekannte Probleme, doch leider ist dieser Ansatz nicht für alle Datenbankanwendungen praktikabel. Da für den Planungsprozess die gesamte Transaktion vorhanden sein muss, sind deterministische Datenbanksysteme schlecht geeignet für ORM-Tools und andere Anwendungen, die Transaktionen nur in Teilen an die Datenbank übermitteln.

Deterministische Datenbanksysteme haben sich als vielversprechender Weg zur Verbesserung der Skalierbarkeit, Modularität, des Durchsatzes und der Replikation von transaktionalen Datenbanksystemen erwiesen. Leider bieten alle neueren Implementierungen nur begrenzte oder gar keine Unterstützung für interaktive Transaktionen, so dass sie in vielen bestehenden Implementierungen bisher nicht eingesetzt werden können.

Quellen

Abadi, Daniel J. „SLOG: Serializable, Low-Latency, Geo-Replicated Transactions“. Gehalten auf der CMU Database Group – Vaccination Database Tech Talks (2021), CARNEGIE MELLON UNIVERSITY, 1. Februar 2021. https://www.youtube.com/watch?v=TAdiilOOvNI&t=645s.

„Determinismus“. In Wikipedia, 25. Dezember 2021. https://de.wikipedia.org/w/index.php?title=Determinismus&oldid=218485694.

Faleiro, Daniel J. Abadi, Jose M. „An Overview of Deterministic Database Systems“. Zugegriffen 15. März 2022. https://cacm.acm.org/magazines/2018/9/230601-an-overview-of-deterministic-database-systems/fulltext.

Ren, Kun, Dennis Li, und Daniel J. Abadi. „SLOG: Serializable, Low-Latency, Geo-Replicated Transactions“. Proceedings of the VLDB Endowment 12, Nr. 11 (Juli 2019): 1747–61. https://doi.org/10.14778/3342263.3342647.

„Strict Serializability“. Zugegriffen 23. März 2022. https://jepsen.io/consistency/models/strict-serializable.

„Transaction throughput“. Zugegriffen 23. März 2022. https://docs.oracle.com/cd/E17276_01/html/programmer_reference/transapp_throughput.html.

Featured image: https://www.keysight.com/content/dam/keysight/en/img/prd/ixia-homepage-redirect/network-visibility-and-network-test-products/Network-Monitoring.jpg

The Way of System Thinking – Was Systemdenken ausmacht

Ein Artikel von Jessica Hofmann und Julia Grimm

In unserem Leben, egal ob im Privaten oder Beruf, müssen wir Entscheidungen treffen. Diese Entscheidungen haben so gut wie immer eine Konsequenz. Bei alltäglichen Entscheidungen ist uns das oft nicht bewusst. Erst bei großen und schweren Entscheidungen sind wir Menschen uns darüber im Klaren, dass das was wir vorhaben zu tun unser Leben in Zukunft beeinflussen wird. Wir erwarten häufig von uns selbst Entscheidungen schnell zu treffen, da wir uns nur selbst als nützlich erachten, wenn wir etwas tun. Daher kommt es, dass wir uns oft nicht die Zeit nehmen über Entscheidungen nachzudenken und herauszufinden was gerade wirklich passiert. Wir fokussieren uns darauf so schnell wie möglich weiterzukommen und verlieren das große Ganze – the Big Picture – aus den Augen, in welchem sich alle unserer Entscheidungen und unser Handeln zusammenfinden.

Die Welt, in der wir leben ist immer mehr vernetzt und durch die wachsende Globalisierung wächst auch die Komplexität sozialer Systeme. Der internationale Handel zum Beispiel verknüpft Nationen auf der ganzen Welt zu einem mächtigen wirtschaftlichen Feedbackloop. Was genau ein solcher Feedbackloop ist werden wir später noch genauer betrachten. Einzelne Systeme (falls diese überhaupt je getrennt voneinander funktioniert haben) wachsen und kommen immer näher zusammen. Verwachsen einige dieser Systeme miteinander, erzeuget dies komplexe und unvorhersagbare Effekte. Es ist also kaum noch möglich, einen Überblick über das gesamte System zu haben. Aber dieser Tatsache sind wir uns nicht immer bewusst. Je nachdem welche Perspektive wir hierbei einnehmen, bekommen wir ganz unterschiedliche Eindrücke wie die Realität aussieht. Hier passt das bekanntes Gleichnis „Die blinden Männer und der Elefant“ sehr gut.

In dieser Erzählung untersuchen fünf Blinde, die noch nie zuvor einem Elefanten begegnet sind, einen echten Elefanten mit ihren Händen. Sie sollen dadurch einen Eindruck bekommen, was ein Elefant ist. Jeder von ihnen steht an einer anderen Stelle und betastet so eine andere Stelle des Elefanten. Einer untersucht den Rüssel, einer ein Ohr usw.. Am Ende sprechen sie darüber wie ein Elefant aussieht und fangen heftig an zu streiten, weil jeder sein Bild für richtig hält, aber alle völlig unterschiedlich sind. Schließlich kommt der Elefantenführer dazu und sagt ihnen, dass sie alle richtig und alle falsch liegen, denn jeder von ihnen kennt nur einen Teil des wirklichen Elefanten. Wenn sie all ihre Erfahrungen zusammennehmen, dann würden sie einen Eindruck bekommen, wie der tatsächliche Elefant aussieht. Jeder von ihnen ist also aufgrund seiner individuellen Erfahrung zu einer eigenen, unvollständigen, aber logischen Schlussfolgerung gekommen.

Genau mit diesen Problemen – der Komplexität von Systemen, dem Hang überstürzte Entscheidungen zu treffen und die Realität nur aus einer Perspektive zu betrachten – befasst sich System Thinking.

Was ist System Thinking?

Beim System Denken wird davon ausgegangen, dass sich all unsere Handlungen und Entscheidungen mehr oder weniger in Verbindung zueinanderstehen und voneinander abhängig sind. System Thinking soll Menschen und auch Organisationen, wie Teams, Abteilungen oder Firmen dabei helfen, die Konsequenzen ihres Handelns besser zu verstehen und sich an die Umwelt, in welcher wir uns befinden anzupassen. System Thinking ist ein Skillset, um die Komplexität des Verhaltens besser vorherzubestimmen und zu verstehen und letzten Endes auch den Ausgang anzupassen. System Thinking bietet uns Menschen eine Möglichkeit die Realität zu sehen so wie sie ist und über diese zu Sprechen.

Bevor wir uns genauer damit beschäftigen und dieses Skillset genauer betrachten, wie man tatsächlich im System denkt, werden wir uns erst noch genauer mit dem Begriff System Thinking auseinandersetzen und diesen genauer einordnen. Außerdem wollen wir uns noch genauer mit den psychologischen Aspekten befassen, die die Denkweise des Menschen beeinflussen und was hierbei besonders wichtig wird, wenn wir im System denken wollen. Zu guter Letzt werden noch einige methodische Ansätze kurz erläutert, um ein paar praktische Methoden des System Thinkings mit auf den Weg zu geben.

Sind wir nur schick angezogene Höhlenmenschen?

Versetzen wir uns in folgende Situation: Bei einem Projekt laufen wir in ein Problem. Wir können nicht weitermachen, weil weitere Arbeitsschritte von dem Problem abhängig sind. Was tust du? Findest du schnell eine Lösung, um das Problem zu lösen oder nimmst du dir die Zeit, um die Ursache des Problems zu finden?

Die meisten Menschen würden hierbei wahrscheinlich antworten, dass sie sich die Zeit nehmen würden, die verschiedenen Möglichkeiten für die Ursache des Problems abzuwägen, und dann nach dem sie alle Pros und Cons für die unterschiedlichen Lösungen verglichen haben, treffen sie eine rationale Entscheidung.

Dieses rationale Entscheidungsmuster wird von uns Menschen jedoch gar nicht so oft genutzt, wie wir uns das gerne einreden. Oft verlassen wir uns bei der Lösung komplexer Probleme auf unsere sogenannte Intuition und treffen eine emotionsgetriebene Entscheidung. Der rational denkende Mensch, das was uns vom Tier unterscheidet, ist vielmehr ein Bild, welches wir Menschen gerne von uns selbst haben, aber meist nicht immer der Realität entspricht.

Der Grund dafür liegt aber schon Jahrtausende zurück. Und zwar tragen wir Menschen immer noch unser evolutionäres Erbe von vor 10 000 Jahren mit uns herum. Denn seit her hat sich bei der Entwicklung unseres Gehirns nicht mehr viel getan.  Unsere Umwelt hat sich hingegen in den letzten 10 000 Jahren rapide geändert. War es bei unseren Vorfahren vor 20 Generationen noch wichtig im Bruchteil einer Sekunde über Leben oder Tod zu entscheiden, weil hinter jedem Baum ein Raubtier lauern konnte, welches einen fressen wollte, leben wir heutzutage in einer vollkommen industrialisierten und digitalisierten Welt.

Die Welt, in der wir aktuell leben ist so komplex, dass emotional Entscheidungen oft nicht zielführend sind. In einer so vernetzen Welt ist es wichtig, sich erst ein Bild und Überblick über dieses Komplexe zu verschaffen und das direkte Tun und Handeln einen Moment zurückzustellen und stattdessen zu denken. Und genau hier kommt System Thinking ins Spiel.

Das Seerosen-Modell

Es steckt oft mehr dahinter als das, was wir im ersten Moment sehen. Beim System Thinking geht es darum unter die Oberfläche zu blicken oder wie man gerne sagt über den Tellerrand hinauszuschauen. Es geht darum die Muster in unserem Alltag oder bei der Arbeit zu erkennen und Situationen besser einzuschätzen und zu bewältigen.

Bei der Recherche für diesen Artikel sind wir immer wieder auf die Metapher des Seerosenteichs gestoßen, um den Grundgedanken des System Thinkings zu veranschaulichen. So ist bei einer Seerose der größte Teil verborgen und liegt unter der Wasseroberfläche. Unsere Aufmerksamkeit gilt auf den ersten Blick aber nur den wunderschönen Blüten und Blättern der Seerose.  Diese wunderschöne Blüte kann jedoch nur existieren und wachsen, weil sie durch ein enormes Wurzelsystem mit Nährstoffen aus dem Wasser und dem Boden versorgt wird. Es bringt also nichts nur die Seerosen an der Oberfläche zu betrachten und diese zu pflegen. Um einen gedeihenden Seerosenteich zu haben, reicht es nicht nur die verwelkten Blüten und Blätter zu stutzen. Wir müssen auch unter die Wasseroberfläche schauen und an der Wurzel arbeiten, denn nur dann kann die Seerose weiterwachsen. Wenn wir nun unsere Welt mit einer Seerose gleichsetzen, bedeutet das, dass wenn wir bei einem System strukturelle Änderungen vornehmen und die Wurzel des Problems anpacken wollen, um nicht nur Symptome zu behandeln, sondern die Ursache, wir tiefer schauen und einen Blick unter die Oberfläche wagen müssen. Je tiefer wir also in den Teich hinabschauen, desto effektiver sind unsere Maßnahmen.

Nachdem wir das Seerosen-Modell nun im Kontext des System Thinking betrachtet haben, lässt sich sagen, dass es beim System Thinking in erster Linie darum geht das große Ganze – the Big Picture – zu betrachten.  

Wo sind die Ursprünge des System Thinking? Was sind die Grundannahmen?

Die Ursprünge des System Thinking liegen in der System Theorie. Die Wurzeln finden sich in so unterschiedlichen Disziplinen wie Biologie, Kybernetik und Ökologie. Systemdenken bietet einen Einblick in die Funktionsweise der Welt, die sich deutlich von der traditionellen reduktionistischen, analytischen Sicht unterscheidet. Kognitive Prozesse des Erkennens und Problemlösens, die auf Konzepte der Systemtheorie Bezug nehmen, werden oft unter dem Begriff System Thinking oder Systemdenken zusammengefasst.

Wie bereits erwähnt leben wir in einer immer komplexer werdenden Welt. Um in dieser Welt vernünftig zu überstehen, fordern Experten, welche sich mit System Thinking befassen, mehr Systemdenker. Menschen mit solch einem Skillset werden nicht nur in wissenschaftlichen oder Disziplinen oder dem Ingenieurwesen benötigt, sondern in allen Bereichen unseres Lebens. Entscheidungen am anderen Ende der Welt, wie zum Beispiel die Rodung des Regenwaldes haben Auswirkungen auf den gesamten Globus. Auf Grundlage dieser Überlegung könnte man gar argumentieren, dass alle Menschen in Entscheidungspositionen ein solides Verständnis für das System Thinking haben sollten.

Wenn nun System Thinking das Allheilmittel für die Probleme dieser Welt sind, was ist es überhaupt genau? Hierauf gibt es keine eindeutige Antwort.

In der Literatur gibt es eine Reihe verschiedener Definition für den Begriff des System Thinking, jedoch unterscheiden sich diese oftmals und es gibt keine eindeutige allgemeingültige Definition. Das Problem bei der Begrifflichkeit ist, bzw. was sie so schwer macht zu definieren, dass dieser Begriff schon so oft definiert und redefiniert wurde. Wenn man die verschiedenen Definitionen und Erklärungen betrachtet, weißen sie dennoch eine Vielzahl an Gemeinsamkeiten auf. Diese wollen wir im Folgenden genauer betrachten und damit den Oberbegriff, um den es in diesem Blogbeitrag geht eingrenzen.

Prägend für das System Thinking an sich ist der Begriff System für sich selbst. Schon das Wort System hat je nach dem in welchem Kontext und welcher Disziplin es verwendet wird unterschiedliche Bedeutungen. In dem Fall des System Thinking macht die naturwissenschaftliche Definition wohl am meisten Sinn. So ist ein System laut Duden in einem naturwissenschaftlichen Kontext eine „Gesamtheit von Objekten, die sich in einem ganzheitlichen Zusammenhang befinden und durch die Wechselbeziehungen untereinander gegenüber ihrer Umgebung abzugrenzen sind“. Ein Grundprinzip eines Systems ist also, dass es mehr ist als eine bloße Ansammlung seiner Teile. Dies können wir auch für das System Thinking annehmen. So finden sich einige Grundannahmen, die für das bloße System gelten auch beim System Thinking wieder. Wenn wir System Thinking genau betrachten, besteht es in erster Linie zunächst einmal aus drei Dingen. Den einzelnen Elementen, die Beziehung der einzelnen Elemente zueinander und dem Zweck oder auch dem Ziel. Aus diesen Grundannahmen lassen sich wiederum Charakteristiken für ein System ableiten.

Charakteristik von Systemen

  1. Zweck: Systeme haben immer einen Zweck. Der Zweck oder auch das Ziel eines Systems ist eine Eigenschaft des Systems als Ganzes und nicht eines der Elemente. So ist das System Flugzeug in seiner Gesamtheit dafür verantwortlich Passagiere von A nach B zu fliegen. Dieser Zweck ist eine Eigenschaft des gesamten Systems und nicht das einer einzelnen Turbine oder eines Flügels und wird erst durch das Zusammenspiel der einzelnen Flugzeugteile erreicht.
  2. Gesamtheit: Es müssen alle Teile vorhanden sein, damit ein System seinen Zweck optimal erfüllen kann. Wenn wir einem System ein Element wegnehmen oder auch hinzufügen können, ohne dass es die Funktion des Systems beeinflusst, dann haben wir kein System, sondern eine bloße Ansammlung von Elementen, die nicht in Abhängigkeit zueinanderstehen. Wenn wir zum Beispiel aus einem Werkzeugkasten ein Werkzeug herausnehmen, bleibt die Funktion des Kastens erhalten. Wir haben lediglich den Inhalt geändert.
  3. Reihenfolge: Die Reihenfolge, in der die Elemente unseres Systems angeordnet sind, beeinflussen dessen Leistung. Wenn wir die Elemente beliebig anordnen können, dann ist es kein System. So spielt es bei unserem Werkzeugkasten keine Rolle, ob der Schraubenzieher über oder unter dem Hammer liegt. Bei unserem Flugzeug hingegen ist die richtige Anordnung der einzelnen Elemente für einen sicheren Flug überlebenswichtig. Daraus können wir schließen, dass die Anordnung der einzelnen Elemente in einem System sehr wichtig ist.
  4. Feedback: Beim Feedback oder auch zu Deutsch der Rückkopplung werden Informationen übermittelt und zurückgegeben. Das wichtigste Merkmal des Feedbacks ist, dass es Informationen an das System liefert, die es wissen lassen, wie es sich in Bezug auf einen bestimmten Zustand verhält.

Dies sind wichtige Charakteristika, die für die Definition eine prägende Rolle spielen.

So definiert Barry Richmond, System Thinking als die Kunst und Wissenschaft, zuverlässige Rückschlüsse auf das Verhalten zu ziehen, indem man ein immer tieferes Verständnis der zugrunde liegenden Struktur entwickelt. Er betont, dass Menschen, die Systemdenken praktizieren, sich so positionieren, dass sie sowohl den Wald als auch die Bäume sehen können.

Auf Richmonds Definition berufen sich die meisten anderen Definitionen, jedoch werden diese noch erweitert.

Eine Definition, welche sich aus der Auswertung umfassender Literatur ergab, ist die von Megan Hopper und Krystyna Stave. Hopper und Syave bekräftigen die Notwendigkeit einer allgemein akzeptierten Definition. Sie warnen auch davor, dass der Begriff System Thinking auf verschiedene und manchmal auch widersprüchliche Weise verwendet wird, was bei der Findung für eine allgemeingültige Definition nicht gerade hilfreich ist.

Aus der Arbeit von Hopper und Stave ergeben sich folgende Grundannahmen für das System Thinking, welche auch die bereits erwähnten Charakteristiken von Systemen ergänzen:

  1. Erkennen von Zusammenhängen
  2. Erkennen von Rückkopplungen
  3. Dynamisches Verhalten verstehen
  4. Unterscheidung der Arten von Flüssen und Variablen
  5. Konzeptuelle Modelle verwenden
  6. Erstellen von Simulationsmodellen
  7. Erprobung von Politiken

Was alle Definitionen berücksichtigen und worunter sich die meisten einig sind ist, dass Elemente und die Charakteristiken, die ein System ausmachen, die Zusammenhänge, das Verständnis von dynamischen Verhalten, die Systemstrukturen als Ursache für dieses Verhalten und die Idee, Systeme als Ganzes und nicht als Teile zu betrachten, sind.

Einblick in unsere Psyche

Jetzt haben wir einen Eindruck was unter System Thinking eigentlich zu verstehen ist. Bevor wir nun mit den Methoden des System Thinking beschäftigen, sollten wir nochmal einen Schritt zurücktreten und uns anschauen, wie das menschliche Denken überhaupt funktioniert. Wie fällen wir Urteile und kommen zu Entscheidungen? Zuerst einmal müssen wir uns von dem Gedanken verabschieden, dass wir in der Lage sind rein objektive Entscheidungen aufgrund der Kenntnis aller relevanter Fakten zu treffen. Der Mensch ist weder in der Lage völlig objektiv zu sein noch die Wirklichkeit zu 100% exakt zu erfassen.

Wir konstruieren uns unsere Wirklichkeit

Unser Gehirn ist ein Meister darin Lücken zu schließen, um ein vollständiges Bild zu formen. Ohne dass wir bewusst etwas davon mitbekommen, ergänzt unser Gehirn fehlende Informationen oder übergeht Unpassende (zumindest bis zu einem gewissen Grad). Und diese Eigenschaft ist essenziell wichtig, damit wir uns in der Welt überhaupt orientieren können.

Unsere Wahrnehmung ist durch mehrere Faktoren beschränkt. Zum einen sind unsere Sinnesorgane nicht in der Lage alle möglichen Informationen auch aufzunehmen. Beispielsweise können Licht nur in im Spektrum zwischen 380 nm und etwa 780 nm wahrnehmen. Ein anderer Faktor ist die beschränkte Verarbeitungskapazität unseres Gehirns. Pro Sekunde sind wir in der Lage 15.000.000 Bits an Daten über unsere Sinnesorgane wahrzunehmen. Von all diesen Informationen können wir aber nur ca. 0,0004% bewusst verarbeiten. Unser Gehirn hat sich also im Laufe der Evolution so entwickelt, dass es sich auf ein Minimum der notwendigen Informationen beschränkt und den Rest ergänzt. Auf diese Weise konstruiert das Gehirn ein Abbild unserer Realität. Dieses Konstrukt hat Einfluss darauf, was wir fühlen und wie wir handeln.

Neben den biologischen Faktoren wird die Wahrnehmung auch von psychologischen und soziokulturellen Faktoren beeinflusst. Das bedeutet, dass unsere aktuelle Stimmung, unsere Erwartungen und Erfahrungen mitbeeinflussen was wir wahrnehmen und wie wir es verarbeiten. Somit ist der Wahrnehmungsprozess keine reine Abbildung der physiologischen Realität, sondern vielmehr eine Konstruktion der individuellen Wirklichkeit. Das unser Gehirn auf diese Weise alle Informationen zusammenfügt, sorgt dafür, dass wir uns relativ problemlos in der Welt orientieren und in ihr agieren können.

Wir sind in der Lage innerhalb von Sekundenbruchteilen eine Situation einzuschätzen, indem die gesammelten Informationen in unser mentales Model – unseren Bezugsrahmen – gesetzt werden und fehlende Informationen ergänzt werden. Welche Teile des Gesamtbildes in unserem Kopf nun aber auch tatsächlich wahrgenommenen Reizen beruhen und welche ergänzt wurden, ist für uns nicht mehr nachvollziehbar. Das ist mitunter einer der Gründe warum Augenzeugenberichte sich teilweise stark voneinander unterscheiden können. Je nachdem was die Zeugen für Vorerfahrungen hatten und wo ihre Aufmerksamkeit in dem Moment lag unterscheiden sich die Bilder, welche sie von der Situation im Gedächtnis behalten.

Diese Funktionsweise unseres Gehirns hat sich über viele Jahre entwickelt und unseren Vorfahren das Überleben gesichert. Das Problem ist aber, dass sich unsere Umwelt seitdem dramatisch verändert hat. Unsere heutige Umwelt ist deutlich komplexer und erfordert viel mehr Vorausdenken, um Veränderungen zu antizipieren.

Denken wir immer gleich?

In der modernen Psychologie wird davon ausgegangen, dass wir zwei voneinander abhängige Systeme des Denkens haben. Ein System (System 1) für das unbewusste, automatische und schnelle Denken und ein System (System 2) für das bewusste und langsame Denken. Welches System gerade aktiv ist, ist uns oft gar nicht bewusst. Doch in den meisten Fällen ist System 1 aktiv. Die Aktivitäten von System 1 geschehen automatisch und nahezu mühelos, während System 2 Aufmerksamkeit und mehr kognitive Ressourcen erfordert.

In den meisten alltäglichen Situationen ist der Hauptakteur System 1, da dieses deutlich weniger mentale Ressourcen benötigt und viel schneller ist. In den meisten Situationen ist System 1 auch völlig ausreichend beziehungsweise notwendig. Wir wären kaum lebensfähig, wenn wir über jeden Schritt, jeden Atemzug und jede unserer Handlungen bewusst nachdenken müssten. System 1 geht dabei nach dem What you see is all there is (WATASI) Prinzip vor und ist auch in der Lage Informationen parallel zu verarbeiten. Es geht davon aus, dass wir alle notwendigen Informationen besitzen, um die richtige Entscheidung zu treffen. Unser Gehirn ignoriert in diesem Fall, dass es Informationen gibt, auf die es keinen Zugriff hat. System 1 ist auch völlig unempfindlich gegenüber Qualität und Quantität von Informationen. Das oberste Ziel ist es ein konsistentes Gesamtbild aus den vorhandenen Informationen zu schaffen, um handlungsfähig zu bleiben. Das ist auch der Grund warum wir dazu neigen überall kausale Zusammenhänge herzustellen und bereits aus einem Minimum an Informationen einen Kontext abzuleiten. System 1 beurteilt alle Ereignisse danach, ob sie in unser mentales Muster passen. Da wir unbewusst danach streben, ein möglichst konsistentes Gesamtbild zu erhalten, akzeptieren wir oftmals auch wenig stichhaltige Argumente, solange diese in unser mentales Modell passen.

Wollen wir nun im Zuge des System Thinking das Gesamtsystem versuchen zu erfassen und das im Bewusstsein, dass wir niemals alle Informationen besitzen, müssen wir aktiv das System 2 nutzen. System 2 ist für das bewusste Denken und unsere Selbstbeherrschung zuständig. Dieses Denksystem ist in der Lage zu zweifeln und Dinge zu überdenken, indem wir bewusst nach neuen Informationen suchen oder die gegebenen Informationen neu strukturieren. Es ist das Kontrollsystem, welches die Aktivitäten von System 1 überwacht und dann aktiv wird, wenn System 1 an seine Grenzen stößt. Bei der Lösung komplexer Denkaufgaben greifen wir auf dieses System zu. Allerdings schöpft dieses System auch deutlich stärker unsere mentale Arbeitskraft aus, was dazu führt, dass wir schneller ermüden. System 2 kann sich auch nur auf eine Aufgabe konzentrieren es arbeitet Informationen sequentiell ab. Das heißt, wenn wir mental gerade sehr mit einer Aufgabe beschäftigt sind, werden wir in allen anderen Bereichen leichtgläubig, da System 1 keine Zweifel kennt und System 2 beschäftigt ist.

System 2 wird also nur in bestimmten Situationen und für eine bestimmte Zeit lang aktiv. Es akzeptiert auch eine gewisse Fehleranfälligkeit von System 1. Der Grund ist, dass voreilige Schlussfolgerungen dann effizient sind, wenn sie mit hoher Wahrscheinlichkeit zutreffen, wenn die Kosten eines gelegentlichen Fehlers akzeptabel sind und wenn dadurch Mühe und Zeit gespart werden können. Dieses Vorgehen hat uns im Laufe unserer Evolution vor dem Aussterben bewahrt. Wir mussten oft innerhalb von Sekunden auf Basis der aktuell vorhandenen Informationen entscheiden, ob wir fliehen oder kämpfen sollten.

Das System Thinking hingegen erfordert, dass wir uns ganz bewusst mit allen Möglichkeiten auseinandersetzen und damit gezielt das System 2 nutzen ohne dass wir den Vereinfachungen von System 1 zu sehr vertrauen. Dies erfordert ein hohes Maß an Selbstbeherrschung und bewusstem Denken. Aber allein das Bewusstsein, über die beiden Systeme und ihre Funktionsweise kann dabei hilfreich sein, das eigene mentale Modell häufiger infrage zu stellen, um Unstimmigkeiten aufzudecken.

Wie lösen wir eigentlich Probleme?

Nachdem wir uns jetzt mit den beiden Systemen beschäftigt haben, ist die nächste Frage: Wie lösen wir eigentlich Probleme und was macht ein Problem für uns kompliziert? Und was ist für uns überhaupt ein Problem?

Ein Problem entsteht dann, wenn man in irgendeiner Form ein Ziel hat und dieses erreichen will, aber dabei auf ein oder mehrere Hindernisse stößt. Wenn wir für die Überwindung dieser Hindernisse keine Routine verfügbar haben, haben wir ein Problem. Das problemlösende Denken ist eine der Fähigkeiten, welche uns gegenüber vielen anderen Spezies besonders auszeichnet. Problemlösendes Denken erfolgt immer zu dem Zweck, ein oder mehrere Handlungsziele zu erreichen. Dabei bedarf es zielgerichteter Entscheidungen und weiterer Komponenten wie z.B. Problemidentifikation, strategisches Planen, Reflexion und Abstraktion.

Auch wir als Informatiker werden oft mit dem Thema Problemlösen konfrontiert.

Wie kann ich den Wunsch meines Kunden am besten umsetzten? Wie setzte ich es überhaupt um? Warum funktioniert das schon wieder nicht? Warum habe ich plötzlich mehr Fehlermeldungen als vorher?

Egal welche der Fragen wir lösen müssen eins haben alle gemeinsam. Idealerweise sollten wir zuerst das zugrundeliegende Problem identifizieren, bevor wir es lösen können. Klingt logisch, ist aber in der Praxis oft ein Problem für sich. Wir neigen gerade bei komplexen Problemen dazu lieber eine schnelle sofort verfügbare Lösung zu probieren, als erst mal zu warten und das Problem in seinem gesamten Umfang zu erfassen. Vor allem wenn wir unter Druck stehen, nehmen wir öfter mal die erstbeste Lösung, ohne sie richtig zu prüfen.

Aber: „There is no use of running, if you’re on the wrong road.”

Oftmals liegt dem Offensichtlichen ein größeres komplexeres Problem zugrunde, welches tiefer im System verankert ist. Um eine Lösung zu finden, die das Problem wirklich langfristig und vollständig löst, ist es notwendig das gesamte System oder zumindest einen deutlich größeren Kontext im System zu betrachten. Wie umfangreich die Veränderungen dann sein müssen, um das Problem zu beheben, kann dann wieder ganz unterschiedlich sein. In Bezug auf Software bedeutet das, dass die Lösung, die der Kunde sich wünscht, nicht immer die ist, die er braucht.

Bei der Erfassung eines Problems bekommen wir es wieder mit einigen Fallstricken unseres Denkens zu tun. Denn wir überschätzen systematisch unser eigenes Wissen und Fokussieren und eher auf das was wir wissen und ignorieren das wir etwas nicht wissen. Es ist leichter davon auszugehen, dass man alle relevanten Informationen zur Lösung eines Problems schon hat, als zu überlegen was man nicht weiß, was aber wichtig sein könnte. Haben wir dann eine These, welche für uns schlüssig ist, gebildet, tendieren wir dazu vor allem den Fakten Beachtung zu schenken, die diese These stützen. Wir verbiegen ganz unbewusst die hinzukommenden Informationen so, dass sie möglichst nicht mit unserer gefassten Meinung kollidieren. Also aufpassen, wenn eine Lösung zu leicht erscheint und alles wunderbar zu passen scheint. Lieber noch einmal bewusst kritisch auf die Lösung schauen.

Aber um ein Problem lösen zu können, sollten wir auch anschauen, unter welchen Umständen ein Problem für uns komplex erscheint.

In unserem Alltag werden wir ständig mit unterschiedlichen Problemen konfrontiert, manche davon sind leicht zu lösen und manche schwer. Verbrennt uns beispielsweise das Abendessen und wir brauchen schnell eine Alternative, wenn wir nicht hungern wollen, ist das für die Meisten von uns kein allzu großes Problem. Die Frage wie wir die Klimaerwärmung noch aufhalten können, ist hingegen ein deutlich komplexeres Problem.

Aber was macht die Komplexität eines Problems eigentlich aus? Was mach ein Problem zu einem schweren Problem? Dazu tragen mehrere Faktoren bei. Einige dieser Faktoren sind:

  • Intransparenz: Wenn wir nicht alle relevanten Informationen besitzen und damit zu viele Variablen oder vielleicht sogar ein ganzes System außerhalb unseres Horizontes liegen, ist es schwierig ein Problem zu lösen. In der Realität ist es sogar meisten so, dass wir nicht alle Variablen eines Problems kennen.
  • Vielschichtigkeit: Wir verfolgen gleichzeitig zu viele Ziele und haben nicht genügend Ressourcen, um sie alle zu erreichen. Wenn wir an zu vielen Stellen gleichzeitig aktiv werden müssen, wird es schwer mit den vorhandenen Ressourcen zum Ziel zu kommen.
  • Komplexität: Sind an einem Problem eine Vielzahl von Variablen beteiligt, welche alle miteinander in Abhängigkeit stehen, macht dies die Lösung des Problems um einiges schwieriger. Um das Problem lösen zu können, müssen wir dann ein hochkomplexes Geflecht aus Variablen durchschauen, um die Lösung zu finden.
  • Konnektivität der Variablen: Nicht nur die Anzahl der Variablen macht ein Problem schwer. Vor allen die Abhängigkeiten zwischen den Variablen machen es schwer Vorhersagen zu den Konsequenzen von Handlungen zu treffen. Wenn die Veränderung einer Variablen viele andere in mehr oder weniger bekannter Weise beeinflusst, wird es sehr schwer die Resultate abzuschätzen.
  • Dynamische Entwicklung: Ein weiterer Faktor ist Zeitdruck. Wenn es sich um ein Problem handelt, welches sich mit der Zeit weiterentwickelt oder sogar verschlimmert, erhöht auch dies die Problemkomplexität.
  • Zeitliche Trennung: Es fällt uns sehr schwer ein Problem nachzuvollziehen, wenn Ursache und Wirkung zeitlich voneinander getrennt sind. Wenn Einwirkungen auf Variablen des Problems erst zeitlich versetzt zu einem Effekt führen, wird es sehr schwer abzuschätzen, was genau welchen Effekt hatte oder haben wird.

Während viele der kleinen Alltagsprobleme mit wenig Aufwand und oftmals ohne bewusstes Nachdenken gelöst werden können, erfordern komplexe Probleme unsere volle Aufmerksamkeit. Unser Gehirn versucht darum öfter schwere Fragen durch leichtere zu ersetzen, um unser System 2 nicht zu sehr zu belasten. Wenn wir beispielsweise gefragt werden, wie zufrieden wir mit unserem Leben sind, ersetzt unser Gehirn diese Frage gerne durch eine leichter zu beantwortende. Beispielsweise wie unsere Stimmung gerade ist. Das passiert unbewusst und ist in vielen Fällen ausreichend zielführend. Aber eben nicht immer.

Im Vergleich zu der Zeit, in der sich unser Gehirn hauptsächlich entwickelt hat, haben wir es heute vermehrt mit komplexen Problemen zu tun, welche unsere volle Aufmerksamkeit benötigen. Wir müssen zum Teil ein großes Geflecht zusammenhängender Variablen beachten, um ein Problem wirklich verstehen zu können. Um alles zu erfassen und entsprechende Lösungsmaßnahmen antizipieren zu können, brauchen wir vor allem mehr Zeit. Wir können oft nicht innerhalb kürzester Zeit alle relevanten Informationen herausfiltern und ihre Zusammenhänge erfassen. Wir müssen lernen stillzustehen und erst alle Informationen und Möglichkeiten zu betrachten, bevor wir aktiv werden. Was so einfach klingt, ist oft enorm schwer umzusetzen. Wir sind darauf programmiert schnell zu agieren. Wenn wir ein Problem vor uns haben wollen wir so schnell wie möglich etwas dagegen tun. Auch wenn wir dabei riskieren etwas Falsches oder wenig Wirkungsvolles zu machen.

“Getting it right or getting it right now”

Auch wenn wir in der Regel ziemlich gut darin sind Probleme zu lösen, kommen wir in einer immer komplexer werdenden Welt auch öfter an unsere Grenzen und müssen vermehrt mentale Stolpersteine umgehen. Um dem gegenüberstehen zu können, sollten wir uns bewusst werden, wie unser Gehirn arbeitet und uns auch die Zeit nehmen, uns von mental anstrengenden Aufgaben zu erholen. Dass sich auch mentale Anstrengung körperlich auswirken kann, zeigt sich beispielsweise darin, dass unser Blutzuckerspiegel sinkt, wenn wir über ein schwieriges Problem nachdenken oder große Selbstkontrolle aufbringen müssen.

Methodische Ansätze

System Thinking in der Theorie klingt ja schön und gut, aber wie kann ich diese Denkweise nun praktisch anwenden.

“To Enlarge first, To Shrink then.”

Ein wichtiger Ansatz ist das Big Picture zusehen. Dies erreichen wir am besten in dem wir zuerst auf den Kontext erweitern, bevor man dann wieder einschränkt. Das bedeutet wir nehmen zusätzliche Faktoren, wie z.B. Zeit und das Umfeld in welchem sich unser System befindet mit auf und können dadurch mögliche Einflüsse auf unser System erkennen und diese mit einfließen lassen und mögliche Störungen und Probleme schneller erkennen oder diese sogar komplett verhindern. Wenn wir also beispielsweise Dinge clustern wollen, macht es Sinn, erst den Kontext der einzelnen Elemente zu erweitern, um herauszufinden, wie sie wirklich sinnvoll geclustert werden können. Nach diesem Ansatz sollte immer zuerst vorgegangen werden, um die anderen Methoden richtig einsetzen zu können.

Ein weiterer methodischer Ansatz sind hierbei die sogenannten Feedbackloops.

Um Systeme richtig zu verstehen, müssen wir uns im Klaren sein, dass beim System Thinking alles miteinander verbunden ist und wir davon ausgehen, dass diese Denkweise eine Organisation als lebendes System betrachtet. Die Teile eines Systems stehen in einem Ursache-Wirkungs-Zusammenhang und formen sogenannte dynamische Feedbackloops. Es gibt nur zwei Arten von solchen Feedbackloops, positives (Reinforcing) Feedback und negatives (Balancing) Feedback. In einem Feedbackloop gibt es außerdem auch nur zwei Arten von Beziehungen in welcher die einzelnen Elemente zueinanderstehen können. Elemente können entweder in einer kausalen Beziehung „+/s“ (gleich) oder „-/o“ (gegenteilig) verbunden sein. Eine solche visuelle Repräsentation, wie die Teile miteinander interagieren, hilft uns zu verstehen, wie zum Beispiel eine Intervention unser System beeinflussen würde.

Reinforcing-Feedbackloop

Ein Reinforcing oder auch positiver Feedbackloop ist die Basis von allen Veränderungen und der Motor für Wachstum aber auch Abschwung. Als Beispiele für solche Feedbackloops wären hier zum einen der Schneeball-Effekt, Pygmalion-Effekt oder auch das Phänomen „Die Reichen werden reicher, die Armen werden ärmer“ aufzuführen. Hierbei kann der Trend entweder rauf oder runter gehen.

Eine Eigenschaft ist, welche auch schon im Namen dieser Feedbackschleife steckt, dass sie selbstverstärkend ist. Sie verbindet Veränderungen in eine Richtung mit noch mehr Veränderungen, was zu exponentiellem Wachstum, aber auch zu einem Kollaps führen kann.

Wie kann ich einen solchen Reinforcing-Feedbackloop erkennen?

Eine schnelle Methode, um festzustellen, ob eine Schleife verstärkend oder ausgleichend ist, besteht darin, die Anzahl der „-/o“ zu zählen. Ist die Anzahl von „-/o“ gerade (oder Null) ist die Schleife verstärkend, bei einer ungeraden Anzahl ist sie ausgleichend. Obwohl dies eine effiziente Methode ist, sollten wir den Feedbackloop immer noch einmal genau überprüfen und checken, ob die Verbindungen richtig beschriftet sind.

Wann immer wir ein exponentielles Wachstum oder einen Niedergang erleben, steckt mindestens ein verstärkender Prozess dahinter. Reinforcing-Feedbackloops neigen dazu, Systeme aufgrund ihres Schneeballeffekts zu destabilisieren und so werden kleine Veränderungen schnell zu großen Veränderungen. Deswegen macht es Sinn diesen Prozess so früh wie möglich zu identifizieren, um die Ursache für das Wachstum oder auch dem Abschwung zu finden und gegebenenfalls rechtzeitig eingreifen zu können.

Balancing-Feedbackloop

Balancing-Feedbackloops sind die Grundlage aller Stabilität in unserer Umwelt und die Natur ist voll von solchen Ausgleichsprozessen. So besteht zum Beispiel der menschliche Körper aus tausenden von stabilisierten Prozessen, die dafür sorgen, dass unser Bedarf an Nahrung durch Hunger und Wasser gedeckt wird oder unsere Temperatur konstant bleibt. Auch im Arbeitsumfeld finden sich solche Feedbackloops. Zum Beispiel die, die dafür sorgen, dass Angebot und Nachfrage übereinstimmen. In solch einem Prozess wird auf ein Ziel hingearbeitet, ob es nun sichtbar ist oder nicht. Dieses Ziel oder auch Normwert wird Set Point genannt. Beim Ausgang eines solchen Feedbackloops besteht immer eine Lücke zwischen dem gewünschten Niveau (Ziel oder Norm) und dem tatsächlichen Niveau. Das tatsächliche Niveau wird bei einer zu großen Diskrepanz zwischen beiden so lange durch korrekturmaßnahmen angepasst, bis die Lücke kleiner wird. Ein Balancing-Feedbackloop versucht also immer die Bedingungen ins Gleichgewicht zu bringen.

Was bei einem Balancing-Feedbackloop eine große Rolle spielt ist die Verzögerung. Zwischen einer Aktion und dessen Ergebnis gibt es fast immer eine Verzögerung. Wenn solche Schleifen in Verbindung mit Verzögerungen stehen, können diese ein komplexes Verhalten hervorrufen. Dies liegt dran, dass es so viele verschiedene Quellen und Größen von Verzögerungen gibt. Wenn wir nun vermuten, dass es sich um einen Balancing-Feedbackloop mit Verzögerung handelt, macht es Sinn die beteiligten Verzögerungen zu identifizieren und zu beschreiben. Wenn uns das gelingt, können wir die Verzögerungen gegebenenfalls verkürzen oder zumindest besser damit umgehen und unser System damit zu einer größeren Stabilität verhelfen.

Das gute beim Systemdenken ist, dass es diesen Effekt der Zeit mit aufnimmt, da wir den Kontext erst erweitern bevor wir ihn dann schließlich wieder verkleinern.

In der folgenden Darstellung sehen wir noch jeweils ein Beispiel für einen Reinforcing- und einen Balancing-Feedbackloop.

Wir müssen uns darüber im Klaren sein, dass die Systeme, mit denen wir im Alltag oder Beruf zu tun haben, selten ein einzelner kleiner Feedbackloop ist, sondern aus vielen zusammenhängenden Feedbackloops besteht.

Kausale Zusammenhänge

Wie bereits erwähnt stehen die Elemente unseres Systems in sogenannten Ursache-Wirkungs-Zusammenhängen. Die einzelnen Teile unseres Systems können unterschiedlich in Verbindung miteinander stehen. Wir unterscheiden im Folgenden zwischen drei verschiedenen Verbindungen:

Mediator Junction: A → B → C

Hierbei handelt es um eine vermittelnde Verbindung. Wenn wir folgendes Beispiel betrachten, dann sehen wir, wenn „Rauch“ gefixt wurde, dann stehen „Feuer“ und „Alarm“ nicht länger in einer kausalen Verbindung zueinander. „Rauch“ nimmt hierbei die Rolle des Mediators (dt. Vermittler) ein.

Feuer → Rauch → Alarm

Fork Junction:   A ← B → C

Bei einer Gabelverbindung hat eine Ursache mehrere Wirkungen. Die beidem Wirkungen haben eine gemeinsame Ursache und es besteht eine Scheinkorrelation zwischen A und C. So könnte man im folgenden Beispiel schließen, dass Kinder mit größeren Schuhen tendenziell besser lesen.  Da zwischen der „Schuhgröße“ und der „Leserfertigkeit“ aber kein kausaler Zusammenhang besteht, ist die Schlussfolgerung wahrscheinlich falsch.

Schuhgröße ← Alter der Kinder → Lesefertigkeit

Collider Junction: A → B ← C

Bei einer Kollisionsverbindung beeinflussen mehrere Ursachen ein Ergebnis. In dem folgenden Beispiel beeinflussen die Ursachen „Talent“ und „Schönheit“ das Ergebnis „Prominente“.  

Talent → Prominente ← Schönheit

So ist für Prominente nur eines von Beiden relevant, um prominent zu sein. Wenn eine bekannte Persönlichkeit ein guter Sänger wäre, müsse er weniger gut aussehen. Und umgekehrt müsste ein Sänger mit weniger Talent besser aussehen.

Wir haben nun einige wichtige methodische Ansätze kennen gelernt haben, um Systemdenken praktisch umzusetzen. Was wir aus den oben genannten methodischen Ansätzen mitnehmen sollten ist, dass wir zuerst den Kontext vergrößern, dann wieder verkleinern, die Zusammenhänge verstehen und die Hintergründe prüfen bevor wir handeln.

Was offen bleibt

Wir haben jetzt ausführlich betrachtet was die Grundannahmen des System Thinking sind, welche Methoden es gibt und was die psychologischen Grundlagen sind, aber es bleiben dennoch einige Fragen für uns offen. Denn so wie wir es verstehen basiert das System Thinking vollständig auf Prozessen von System 2 und es scheint eher so zu sein, dass versucht wird gegen System 1 zu kämpfen. Das ist aber auf Dauer nicht nur extrem anstrengend, es ist auch wenig sinnvoll, wenn man so ausgereifte und leistungsstarke Prozesse einfach ignoriert. Es ist natürlich sinnvoll, die Schwächen unseres Gehirns zu kennen, aber ebenso sinnvoll wäre es, wenn wir lernen, wie wir die Stärken besser nutzen. Zum Beispiel könnte es wirkliches Potential haben, wenn wir die Fähigkeit unseres Gehirns Zusammenhänge herzustellen und auf Basis von wenig Informationen ein mentales Modell zu schaffen nutzen würden. Mit der falschen Auswahl an Informationen wird unser mentales Modell fehlerhaft, aber wenn wir optimieren welche Informationen wir aufnehmen, dann würde auch das mentale Modell besser werden. Strategien wie wir die „richtigen“ Informationen herausfiltern, sollten deswegen besser herausgearbeitet werden. Es wäre also interessant, wenn das System Thinking sich noch gezielter die Stärken unseres Gehirns zunutze macht.

Auch bei der Problemlösung sollten wir keine Energie darauf verwenden, unseren angeborenen Drang schnell handeln zu wollen immer zu unterdrücken. Stattdessen wäre eine mögliche Strategie dem Ganzen eine produktivere Richtung zu geben. Welche Handlungen, die man schnell machen kann, helfen dabei dem Verständnis des eigentlichen Problems und damit einer langfristigen Lösung näher zu kommen? Denn wenn wir unser Verlangen immer unterdrücken bei einem für uns schwerwiegenden Problem nach etwas zu suchen, dass wir sofort tun können, setzt uns das unter Stress und gerade unter Stress treffen wir oft unreflektierte Entscheidungen oder fallen sogar in ein unproduktives „ich gegen die“ Denken.

Alles in allem bietet das System Thinking aber tolle Ansätze, um unser alltägliches Denken und Handeln ins Positive zu lenken. Es zeigt einige relativ einfache aber sinnvolle Methoden auf, wie wir komplexe Vorgänge besser verstehen können und die Zusammenhänge überblicken können. Es gibt einigen bekannten Methoden wie dem Clustern eine neue Richtung. Aber es verlangt auch ein hohes Maß an Selbstreflexion und Selbstkontrolle und ist demnach nicht für jede Situation im Alltag anwendbar. Um die Art des Denkens wie es im System Thinking vermittelt wird, besser zu verbreiten, sollten wir uns fragen, ob es nicht etwas sein sollte, was bereits in unser Bildungssystem einfließen sollte. Nicht nur Inhalte, sondern auch Konzepte und Strategien wie wir mit unserer komplexen Welt umgehen und zielführend Denken lehren.

Gerade im Management ist das System Thinking ein sehr wichtiges Konzept. Instinktive Entscheidungen stehen gutem Management oft im Weg und es wird selten über den Tellerrand des eigenen Teams oder der eigenen Abteilung hinausgeschaut. Aber genau das ist wichtig. Es ist notwendig über die alltäglichen Probleme hinauszudenken und wenn nötig in einem großen Kontext nach Lösungen zu suchen. Dazu ist ein interdisziplinärer Ansatz oft der richtige. Egal wie gut jemand ist, er kann nie ein Experte für alles sein und nie alle Blickwinkel annehmen. Das fliegt häufig noch unter dem Radar, obwohl es in unserer heutigen Zeit ein mächtiges Werkzeug sein kann, um gute Entscheidungen zu treffen.

Ein wichtiger Aspekt, über den man sich bewusst sein sollte, wenn man versucht tiefer in das System Thinking einzusteigen und die Konzepte auch anzuwenden ist, dass es uns nicht leicht fällt. Zum einen ist das System Thinking sehr umfangreich in seiner Theorie und zum anderen ist es sehr schwer die eigenen Denkmuster und Gewohnheiten abzulegen. Jede Veränderung, die zu einer neuen Sichtweise auf die Welt, unsere Arbeit und unsere Beziehungen und wie wir uns zu anderen verhalten führt, kann Widerstand hervorrufen. Es braucht Zeit, etwas Neues zu lernen und wenn wir mit dem Anspruch herangehen, von Anfang an alles wissen zu wollen und alles „richtig“ zu machen, blockieren wir uns im Endeffekt nur selbst.

Aber ist System Thinking jetzt das Schlüsselkonzept des 21. Jahrhundert?

Wir würden sagen ja und nein. System Thinking ist ein wichtiges Konzept und mehr Menschen sollten darauf zurückgreifen, aber es ist nur ein Werkzeug unter vielen. Auch der analytische Ansatz hat beispielsweise seine Berechtigung und kann für manche Probleme die essenzielle Schlüsselrolle spielen. Es sollte also eher so sein, dass wir uns mit einer Reihe von Denkkonzepten und Strategien dem 21. Jahrhundert gegenüberstellen. Würden wir uns zu sehr auf ein Konzept versteifen, würden wir uns ja wieder einschränken und uns weiteren Verbesserungen und Neuerungen verschließen.

Ob wir wollen oder nicht, die Welt wird immer komplexer und es ist immer mehr voneinander abhängig. System Thinking sieht dabei die Individuen und Organisationen als Bestandteile, die auf einer multidisziplinären Ebene in einem großen System arbeiten und nicht als einzelne unabhängige Elemente. Die Akzeptanz, dass alles miteinander in Verbindung steht, hilft uns unsere Interessen, Ziele, Probleme und Lösungen klarer zu kommunizieren und in unserer Realität zu verorten.

Quellen