Veränderungen

Die Metapher

Das Troja-Prinzip ist eine Metapher für die Art und Weise, wie Selbstorganisation und moderne Führung es uns erlauben, in der Softwareentwicklung die verschiedenen dynamischen Prozesse zu beherrschen. Es beschreibt eine Abfolge von evolutionären und revolutionären Veränderungen in schematischer Weise. Auf den Punkt gebracht lautet das Troja-Prinzip also:

Führe möglichst oft kleine evolutionäre Änderungen und Anpassungen durch, um dadurch den Druck, revolutionäre Änderungen durchführen zu müssen, deutlich zu verringern bzw. deutlich zeitlich in die Zukunft zu verschieben. Revolutionäre Änderungen werden sich so nicht gänzlich vermeiden lassen, aber sie werden dann seltener notwendig werden und oft in ihren Konsequenzen geringer ausfallen.

Für die unterschiedlichen Situationen in der zeitlichen und inhaltlichen Entwicklung einer Organisation stehen verschiedene Methoden und Techniken bereit, um damit angemessen umgehen zu können. Werfen wir zuerst einen Blick auf die Metapher und bilden diese dann auf Softwarearchitektur ab.

Welches Bild steckt hinter dem Troja-Prinzip?

Komplexe Systeme verhalten sich in ihrer Dynamik ähnlich. Wenn wir ein Projektteam. eine Entwicklungsabteilung oder eine Firma über längere Zeit beobachten, können wir ähnliche Prinzipien erkennen, wie sie Archäologen in der Forschung für alte Städte finden.

Neues fußt auf Altem, wobei längere Phasen evolutionärer Veränderung durch kurze, revolutionäre Abschnitte unterbrochen werden. Ähnliche Abläufe finden wir in Firmen oder bei längeren Projekten wieder. Diese Mechanismen gilt es zu erkennen und zu nutzen.

Softwarearchitektur – ein typisches Beispiel

Ein treffendes Beispiel für einen Bereich, in dem sehr erfolgreich nach dem Troja-Prinzip vorgegangen werden kann, ist die Softwarearchitektur. Mit diesem Begriff werden nach Martin Fowler die Teile eines Softwaresystems bezeichnet, die sich nur schwer bzw. mit viel Aufwand nachträglich ändern lassen.

Gleichzeitig bedeutet Softwarearchitektur mit agilen Kontexten, dass sich das Entwicklerteam regelmäßig in jeder Iteration mit aktuell anstehenden Architekturaspekten befasst und beispielsweise gemeinsame Prinzipien schärft, Regeln anpasst oder kleine Refactorings durchführt. Dennoch wird es auch in agil durchgeführten Projekten beispielsweise für spätere Releases zu größeren Umbauten, also revolutionären Änderungen der Softwarearchitektur, kommen.

Durch begleitende Prozesse und Artefakte wie ein durchgängig testgetriebenes Vorgehen und der damit verbundenen hohen Anzahl an aussagekräftigen Unit-Tests wird diese revolutionäre Änderung jedoch schneller und qualitativ hochwertiger durchzuführen sein, als in einem traditionelleren Umfeld.