Follow my new blog

Sonntag, 17. Mai 2009

Lass wachsen! Ein Bild für die Softwareentwicklung heute [OOP 2009]

So abstrakt und virtuell Software wie ist, fällt es oft schwer, darüber zu denken und zu reden. Schnell stellen sich unterschiedliche Bilden in den Köpfen der Gesprächspartner ein. Dann ist es hilfreich, konkret zu werden, um das Denken zu synchronisieren. Dabei helfen Analogien: eine Klasse ist z.B. wie ein Stempel, mit dem man viele Stempelabdrücke/Instanzen erzeugen kann.

Aber was, wenn es komplexer wird? Wie ist das mit einer ganzen Software? Hier ein Bild, über das ich gerade gestolpert bin:

image 
Quelle: http://ecotopian.blogspot.com/2008/04/tree-shaping-tree-house.html

Das ist ein Haus. Und da wir in der Softwareentwicklung auch von Architektur sprechen, erlaube ich mir, es als Analogie für Software zu benutzen. Die Entwurfsmuster-Bewegung verweist ja auch ausdrücklich auf die Inspiration durch bauarchitektonische Konzepte.

Warum aber dieses Haus als Analogie? Weil es besonders ist: es ist nämlich nicht gebaut worden, sondern gewachsen. Dieses Haus besteht aus Bäumen, die "in Form gebracht" wurden. Tree Shaping nennt man das auch. Bonsais sind dagegen trivial. Hier ein weniger komplexes Beispiel für "Baumformung":

image 
Quelle: http://indianblogger.com/2009/04/05/learn-growing-amazing-furniture-arborsculpture/

Häuser wachsen lassen, statt sie zu bauen. Das ist ein interessanter Gedanke aus ökologischer Sicht. Solche "Baumhäuser" sind nachhaltig und kostengünstig. Man braucht vor allem Zeit. "Leben in der Natur" bekommt dann eine ganz andere Bedeutung.

Aber zurück zur Softwareentwicklung: Warum ist ein solches gewachsenes Haus für mich eine Analogie für Software? Weil es sehr schön zeigt, wie Softwarearchitektur bzw. Softwarebau wirklich sind.

Die gewöhnliche Analogie "Hausbau" hinkt nämlich sehr schnell. Der Hausbau ist tausende Jahre alt und sehr effizient. Häuser sind heute hochmodular und werden extrem arbeitsteilig gebaut. Beides gilt für Software nicht.

Aber mit dem "Baumhaus" passt die Analogie wieder. Denn das "Baumhaus" ist nicht so arbeitsteilig errichtet worden, das "Baumhaus" hat eine wörtlich zu nehmende gewachsene Struktur, das "Baumhaus" ist rigide, es ist monolithisch. Schön anzusehen, funktional, aber im Grunde nicht mehr zu ändern. Und das sollte Ihnen bekannt vorkommen in der Softwareentwicklung.

Unsere Programme lassen wir auch wachsen. Wir haben eine Idee davon, wie sie aussehen sollen - und dann formen wir ihr Wachstum dahingehend. Wie beim "Baumhaus". Was dann rauskommt erfüllt die bei Beginn erkennbaren Anforderungen, ist jedoch starr. Die gewachsenen und weiter wachsenden Verflechtungen machen es immer schwerer, die Software zu ändern. Wie beim "Baumhaus".

So kommen Gebäude-Analogie und Software besser zusammen, finde ich. Wir können unsere Software wertschätzen für das, was und wie sie ist. So wie wir ein "Baumhaus" wertschätzen können.

Aber wir sehen auch ganz klar die Grenzen des "Baumhauses". Es ist nicht transportabel, es zu "bauen" dauert sehr lange, es ist absolut inflexibel. Und so werden uns im Umkehrschluss auch die Grenzen unserer "gewachsenen" Software deutlich.

Der Hausbau kann anders bauen. Warum sollten wir in der Softwareentwicklung das nicht auch können. Wir sind nicht auf "gewachsene Software" festgelegt. "Bonsai-Programme" müssen nicht sein. Wir können vom Hausbau und anderen Branchen noch einiges in Bezug auf Flexibilität und Effizienz lernen.

Keine Kommentare: