Ist IT komplex?
Dass IT-Systeme nicht einfach sind, wird wohl niemand bestreiten. Aber sind sie auch komplex? Da der Begriff Komplexität mit unterschiedlichen Bedeutungen verwendet wird, ist es müßig nach einem ja oder nein als Antwort zu suchen. Es ist aber sicher sinnvoll, IT einmal aus den unterschiedlichen Perspektiven zu betrachten.
Naheliegend, aber uninteressant
Obwohl es im Kontext von IT nahe liegen würde, möchte ich die in der Informatik verwendete Komplexität von Algorithmen außen vor lassen, die den Ressourcenbedarf bei der Ausführung der Algorithmen widerspiegelt. Auch die Verwendung zur Messung des Informationsinhaltes von Daten möchte ich nicht betrachten. Beide Bedeutungen werden von Spezialisten verwendet und passen nicht zu dem, was umgangssprachlich unter komplex verstanden wird.
Aspekt 1: Vernetzung
Schauen wir auf die in der Systemtheorie genutzte Sichtweise. Die Komplexität eines Systems steigt mit der Anzahl und Art an Elementen und der Anzahl an Verknüpfungen zwischen diesen Elementen. Komplexität entsteht also erst dadurch, dass Elemente miteinander verknüpft sind, also sich gegenseitig beeinflussen. Die große Anzahl alleine reicht nicht aus. 1000 Hühnereier die mit 1 cm Abstand nebeneinander auf einer großen Fläche liegen sind kein komplexes System. Die Eier beeinflussen sich nicht gegenseitig. Werden jedoch nur 100 Eier zu einer Pyramide gestapelt, sieht dies schon anders aus. Durch die Kopplung in Form des Aufeinanderliegens der Eier entsteht ein komplexes System. Was passiert mit der Pyramide wenn ein Ei die Belastung nicht aushält? Oder wenn man ein Ei entfernt?
In der Informationstechnik haben wir es sicher mit sehr vielen untereinander verknüpften Elementen zu tun, die sich gegenseitig beeinflussen. Nehmen wir die vielen Bauelemente in einem Computer, die Millionen Transistoren auf einem Chip oder die zig Steuergeräte, die vernetzt in einem Auto interagieren.
Aber auch innerhalb eines einzelnen Softwareprogramms finden wir unzählige miteinander verknüpfte Elemente. Tausende bis Millionen von Klassen, Methoden, Attributen, Feldern, Prozeduren usw. sind untereinander verknüpft und bestimmen, wie sich ein Computer verhalten soll. Im Sinn der Systemtheorie haben wir es somit mit äußerst komplexen Systemen zu tun.
Aspekt 2: die Möglichkeit zu exakten Prognosen
Im Gabler Wirtschaftslexikons des Springer Gabler Verlages wird ein Aspekt der Komplexität ergänzt: „Wichtigstes Merkmal komplexer Situationen ist die Intransparenz für den Entscheider: Er hat keine Möglichkeit, das Netzwerk zirkulärer Kausalität intuitiv zu erfassen, keine Möglichkeit exakter Modellierung und exakter Prognosen, er muss mit Überraschungen und Nebenwirkungen rechnen.“ (siehe Springer Gabler Verlag (Herausgeber), Gabler Wirtschaftslexikon, Stichwort: Komplexität, online im Internet: http://wirtschaftslexikon.gabler.de/Archiv/5074/komplexitaet-v8.html). Als Beispiel wird in diesem Zusammenhang häufig ein Mobile gebracht, dessen Verhalten bei leichtem Luftzug nicht vorhersehbar ist.
Ein einzelnes Softwareprogramm ist gemäß dieser Definition nicht komplex, obwohl es aus sehr vielen verknüpften Elementen besteht. Denn es gibt die Möglichkeit exakter Modelle, die Prognosen über das Verhalten des Computers erlauben, der die Software ausführt. Die Software selbst ist ja nichts anderes als ein exaktes Modell dessen, wie der Computer auf Grundlage seines bestehenden „Wissens“ in Form von Daten mit Eingaben der Benutzer oder anderer Systeme umgehen wird. Der Computer tut nichts, was nicht genau so im Programm steht. Sein Verhalten ist exakt vorhersagbar. Es sei denn, er ist defekt.
Weitestgehend im Griff: technische Vernetzung
Wie sieht es jedoch bei vernetzten Software-Systemen aus? Auf der technischen Ebene haben die Systemarchitekten den erforderlichen Überblick. Sie können Schnittstellen so festlegen, dass die kausalen Abhängigkeiten der Systeme beherrscht werden.
Leider wird dies in der Praxis häufig vernachlässigt. VHIT-Programmierung (vom Hirn ins Terminal) führt all zu oft zu unbeherrschbaren Strukturen. Die Ursache liegt neben dem hohen Zeitdruck der Programmierer, vor allem im mangelnden Verständnis des Managements und dem Mangel an kompetenten Mitarbeitern, die in der Lage sind, komplexe Zusammenhänge gedanklich zu erfassen.
Als in Autos die ersten Steuergeräte vernetzt wurden, hatten alle Herstellern das gleiche große Problem: die Steuergeräte wechselten nach dem Abschließen der Fahrzeuge nicht in den Energiesparmodus. An jedem Morgen waren die Batterien leer. Obwohl diese Funktionalität in den einzelnen Geräten einfach umzusetzen war, hat sie in der Kopplung als System nicht funktioniert. Dies lag nicht daran, dass die Ingenieure zu dumm waren. Sie waren schließlich in der Lage, komplexeste rückgekoppelte Systeme in ihren Steuergeräten umzusetzen. Eine nicht einfache Aufgabe. Sie waren jedoch noch nicht darin geübt zu denken, wie ihre Geräte sich im Verbund gegenseitig beeinflussen.
Besonders problematisch wird die Vernetzung immer dann, wenn die Verantwortung darüber nicht in einer Hand liegt. Dies ist z.B. der Fall, wenn Systeme unterschiedlicher Firmen miteinander gekoppelt werden. Leider schaut hier meist jeder nur auf seinen Verantwortungsbereich, der Gesamtblick wird vernachlässigt.
Sehr kritisch: Kopplung auf nicht-technischer Ebene
Die Betrachtung der technischen Kopplungen/Schnittstellen in vernetzten Systemen reicht alleine nicht aus. Technische Systeme sind immer nur ein Mittel zum Zweck. Kopplungen finden auch auf der Ebene des Zwecks, also der Ebene der Verarbeitung von Informationen statt. Denken Sie an automatisierte Trading-Systeme, die Aktien kaufen und verkaufen. Auch wenn diese Systeme auf der technischen Ebene stabil laufen, die Gefahr, dass es auf der Ebene ihres Zweckes, nämlich dem Handel mit Aktien, zu einem gegenseitigen Hochschaukeln kommt, ist gewaltig und birgt Risiken für komplette Volkswirtschaften. Die Komplexität auf der technischen Ebene hat man im Griff. Die über den gemeinsamen Markt ist kaum zu beherrschen.
Was tun?
Gablers Wirtschaftslexikon sagt dazu: „Der Umgang mit komplexen Systemen erfordert ein hohes Maß an Wissen über die kausalen Zusammenhänge der Systemelemente (Art der Vernetzung) und die Fähigkeit, Komplexität auf wenige Merkmale und Muster zu reduzieren (Komplexitätsreduktion).“ Diese Fähigkeit der Komplexitätsreduktion erfordert neben Übung und praktischer Erfahrung auch eine gewisse Begabung. Das reicht jedoch nicht. Dieses Wissen muss so gut wie möglich allen Beteiligten bereitgestellt werden, wenn sie z.B. an der Planung der Systeme beteiligt sind. Neben der Fähigkeit, die Komplexität reduzieren zu können, muss das Wissen über die Zusammenhänge auch vermittelt werden können. Und dies nicht nur auf der technischen Ebene, sondern auf allen Ebenen, auf denen systemische Zusammenhänge zu beachten sind.
Wenn Sie kompetente Unterstützung beim Umgang mit komplexen Systemen brauchen, rufen Sie mich an. Ich stehe Ihnen gerne zur Verfügung.