Agilität und Komplexität

Letztes Update: 08.03.2024

Komplexität

Komplexität ist ganz einfach ausgedrückt ein Maß für die Anzahl von Beziehungen zwischen Entitäten. Je mehr Beziehungen zwischen Entitäten existieren oder existieren können, desto komplexer ist ein System. Die folgende Grafik zeigt wie die Komplexität (K) mit zunehmender Anzahl von Entitäten (E) und deren Beziehungen zunimmt:

Zunehmende KomplexitätZunehmende Komplexität

Allgemein ausgedrückt lässt sich die Komplexität über folgende Formel berechnen (wobei n die Anzahl der Entitäten ist):

Berechnung der KomplexitätBerechnung der Komplexität

Geplottet auf einem Graphen zeigt sich, dass die Komplexität sehr schnell wächst, wenn die Anzahl der Entitäten zunimmt (x-Achse: Anzahl der Entitäten, y-Achse: Komplexität):

Darstellung der KomplexitätDarstellung der Komplexität

Was bedeutet höhere Komplexität?

Die zunehmende Komplexität hat Folgen für die Entitäten - seien es Menschen, die miteinander sprechen oder Maschinen, die Daten austauschen:

Komplexität & Agile Effizienz

Setzen wir die Komplexität nun ein um die Kommunikationsbeziehungen einer Gruppe von Menschen abzubilden, lässt sich daraus ihre Effizienz berechnen unter der Annahme, dass wir andere Faktoren ausblenden. Daraus ergibt sich die Formel für agile Effizienz:

Berechnung der agilen Effizienz in %Berechnung der agilen Effizienz in %

Komplexität in die Formel eingesetzt:

Berechnung der agilen Effizienz in %Berechnung der agilen Effizienz in %

Agile Effizienz als Graph

Tragen wir die agile Effizienz in einen Graphen ein, ist deutlich sichtbar, dass sie abnimmt mit je mehr Menschen sich ein Team abstimmen muss. Der Idealwert bei einem Team mit 5 Personen liegt links oben (bei 100%). Muss sich das Team mit 15 weiteren Menschen (insgesamt also 20 Personen) abstimmen, dann sinkt die agile Effizienz auf nur noch 5,26%. Sind Abstimmungen zwischen so vielen Menschen für ein Projekt tatsächlich nötig, sollte man gut überlegen ob man das Projekt tatsächlich agil durchführt.

Darstellung der Agilen EffizienzDarstellung der Agilen Effizienz

Gute Architektur

Wie kann an dieser Stelle eine gute IT-Architektur helfen? Die Architektur eines Systems und die Kommunikationsbeziehungen derjenigen, die das System aufbauen, beeinflussen sich gegenseitig (siehe auch:  Gesetz von Conway. Eine wohlüberlegte Architektur kann also dazu beitragen, dass die notwendigen Kommunikationsbeziehungen zwischen Menschen und diejenigen zwischen Systemen niedrig gehalten werden. Dies senkt die Komplexität und steigert somit die agile Effizienz.

„Organisationen, die Systeme entwerfen, […] sind gezwungen, Entwürfe zu erstellen, die die Kommunikationsstrukturen dieser Organisationen abbilden.“

– Melvin E. Conway

Schlechte Architektur

Folgendes Schaubild zeigt eine Architektur ohne Begrenzungen, wie sie bei agilen Projekten gerne mal entstehen kann. Die Kommunikationsbeziehungen zwischen den Entitäten (in diesem Fall Anwendungen, Systeme oder Komponenten) entwickeln sich weitgehend willkürlich und erreichen so schnell einen hohen Wert an Komplexität und einen geringen Wert an Effizienz. Änderungen an einem solchen System werden also mit jeder Iteration aufwändiger und langsamer.

Schlechte ArchitekturSchlechte Architektur

Bessere Architektur

Eine durchdachte Architektur kann an dieser Stelle Abhilfe schaffen um eine Systemlandschaft nachhaltig wartbar und zukünftige Projekte schnell und effizient zu machen. Hierfür zieht der Architekt Grenzen in dem Gesamtsystem ein (z.B.: Schichten, Domänen, etc.) und legt Regeln für die Kommunikation fest. Dadurch wird die Komplexität reduziert und die agile Effizienz bleibt erhalten.

Bessere ArchitekturBessere Architektur

Fazit

Die hier gezeigten Umstände sollen deutlich machen, dass eine agile Organisation keinesfalls auf Architekten und von ihnen aufgestellte Begrenzungen verzichten kann, sondern sie umgekehrt unbedingt benötigt um langfristig schnell und effizient zu sein.