Die Entwicklung von Software-Architekturen ist nicht zu vergleichen mit der Konstruktion etwa einer Kathedrale - so Martin Lippert in einem lesenswerten Blogeintrag, in dem er den Einfluss agiler Erkenntnisse auf die Softwareentwicklung beschreibt.
Während früher dieser Vergleich zwischen Software-Architekturen und materiell zu Stein gewordenen Architekturen oft bemüht worden sei, müsse man heute anerkennen, dass die Entwicklung von Software eigenen Gesetzen gehorche. Die Entwicklung von Software stelle nämlich eher ein flexibler Lernprozess dar, in dem sich ständig neues Wissen und sich verändernde Anforderungen reflektieren können sollten.
Modern software architectures need to be build for flexibility, for changing requirements all the time, for changing even fundamental layers of our software in a flexible way without causing tremendous costs. Martin Lippert
Keine monolithisch dastehenden Kathedralen also, sondern flexibel erweiterbare und hoch anpassungsfähige Gebilde seien das Ideal guter Software-Architektur.
Doch wie eine flexible Architektur bauen, wenn man weiß, dass jede Vorabplanung ohnehin wieder über den Haufen geworfen werden muss?
Hier könnten Techniken der Software-Modularisierung, wie sie beispielsweise durch den OSGi-Standard möglich sind, weiterhelfen. Modularität zwinge den Entwickler nämlich dazu, direkt die Flexibilität zum Grundprinzip zu erheben und über Dinge wie interne Zusammenhänge, Abhängigkeiten und Kopplungen der Module nachzudenken.
And I think we all agree on having a good, decoupled design makes life easier when things change - and they will change. Martin Lippert















