Agilität und Komplexität

 
Inhalt

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ät
Zunehmende 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ät
Berechnung 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ät
Darstellung 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:

  • Die Geschwindigkeit der Abstimmung im System sinkt
  • Die Kommunikationsaufwände steigen
  • Die Flexibilität, Dinge zu ändern, sinkt

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 Effizienz
Darstellung 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 Architektur
Schlechte 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 Architektur
Bessere 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.