(angelehnt an ‘einfach mehr’, brand eins 1/2006)
in der heutigen zeit der immer stärkeren vernetzung und kollaboration von anwendungssystemen wird ein zentraler begriff häufig als grund für viele probleme genannt: die komplexität. wird ein system zu komplex, ist ein verständnis und eine handhabung schwieriger. sofern es sich um ein nicht mehr verständliches chaos von systembestandteilen, architekturausprägungen oder quellcode-artefakten handelt, wandelt sich die komplexität schnell zur kompliziertheit – der horror für jeden software-architekten.
bei einer fülle von verflechtungen und abhängigkeiten zwischen elementen (im ungünstigsten fall zyklisch) oder einer vielfalt an ausprägungen eines architekturellen vorgehens bei der implementierung ist der “architekturelle verfall” nicht fern. die quantität, das komplizierte, verdeckt dann die qualität, die komplexität.
Jeder liebt die Vielfalt,
doch kaum jemand mag die Komplexität.
Die ist, heißt es, an allem schuld.
Aber wenn wir es uns zu einfach machen,
wird alles kompliziert.
dabei wollte man am anfang doch alles möglichst einfach und verständlich machen. keep it simple, war das motto. im prinzip auch gar keine so schlechte idee die komplexität so gering wie möglich zu halten. das problem dabei ist nur: es kommt immer etwas nach, es gibt immer eine überraschung!
aus diesem grund ist es problematisch zu glauben, eine architektur würde oder könnte sich im laufe der zeit nicht ändern. gerade das gegenteil ist der fall: sie ändert sich kontinuierlich. “architecture is a framework for change” hat tom de marco bereits treffend formuliert. architekturen entstehen immer in zyklen oder iterationen und nicht in einem großen wurf. änderungen geschehen kontinuierlich. hier gilt: nichts ist beständiger als der wandel.
warum iterativ-inkrementelles vorgehen (das ja auch als state of the art in der software-entwicklung generell angesehen wird) besonders geschickt ist, kann u.a. mit der funktionsweise des menschlichen gehirns erklärt werden. forscher haben festgestellt, dass das zentrale denkorgan unserer spezies eher lineares, analoges denken bevorzugt, also das vorgehen schritt für schritt. wir nehmen immer nur ausschnitte der welt wahr, nicht die welt selbst.
Jeder Versuch, die Komplexität zu reduzieren,
erhöht die Komplexität an einem anderen Ort.
Man muß schon ziemlich doof und arrogant sein, um zu glauben,
man könne die Dinge an sich in den Griff kriegen.
eine weitere bedenkliche einstellung, die mit der zuvor beschriebenen idee der unveränderbarkeit einhergehen kann, ist, dass es sich bei der architektur um eine patentlösung oder die einzige wahrheit für alle probleme handelt. besonders bei sehr technologiezentrierten architektur-entwürfen ist dieser grundgedanke nicht fern. mit der festlegung der architektur auf eine technologische plattform werden bewußt andere alternativen ausgeschlossen (man möchte ja die komplexität reduzieren).
kurzfristig ist das vielleicht ein verständliches vorgehen. diverse veröffentlichungen in der literatur über sogenannte “standards” haben einem vielleicht eine perfekte lösung suggeriert und damit das denken abgenommen. langfristig bedeutet die reduktion der möglichkeiten eine verringerung der flexibilität und die gefahr in eine technologische falle zu tappen. die scheinbare lösung kann dann schnell zum eigentlichen problem werden.
was er macht, macht er zwar immer ähnlich,
aber immer unter anderen bedingungen.
so wie für die architektur gilt auch für das vorgehensmodell aus strategischer sicht: wer allzu methodisch oder nach einem vorgekauten plan vorgeht, geht davon aus, dass die welt so bleibt wie sie ist. und das ist bekanntlich falsch. ein modell wie rup oder xp sind nur methodenvorschläge oder -empfehlungen. es ist zwingend erforderlich in jeder konkreten situation abzuwägen, ob denn wirklich ein bestimmter bestandteil daraus besonders hilfreich oder eher hinderlich sein kann. spontanität und improvisation sind hier die wichtigsten eigenschaften im umgang mit komplexen vorgehensmodellen.
man ist also gut beraten, wenn man von anfang an komplexer denkt und zwar mit dem ziel, auf zukünftige veränderungen – sei es inhaltlich oder methodisch – angemessen zu reagieren. das entscheidende dabei ist die beherrschung von varianten. eine architektur ist dann gut, wenn sie der vielfalt dient und nicht der heiligen norm. ein vorgehen kann nur dann funktionieren, wenn es eine hohe flexibilität mit vielen variablen einzelschritten beinhaltet.