Mittwoch 7. September 2011 von Christian Johner
Stellen Sie sich vor, Sie wollen ein Haus bauen – Ihr neues Haus. Wie würden Sie vorgehen?
Wahrscheinlich würden Sie sich überlegen, was Sie in und mit dem Haus machen wollen. Beispielsweise darin die Schwiegermutter beherbergen. Oder das vielleicht gerade nicht. Oder Sie benötigen einen Raum, in dem Sie Ihre Modellflugzeuge bauen und aufbewahren.
Anschließend werden Sie mit Ihren Wünschen zum Architekten gehen und sich einen Plan entwerfen lassen. Einen Plan, den Sie wahrscheinlich noch ein oder zweimal revidieren. Erst dann bestellt der Bauunternehmer die Maurer, die das Haus gemäß dieses Plans hochziehen.
Sie stimmen mir sicher zu, dass dies das absolut normale Vorgehen beim Hausbau ist.
(istockphoto)
Wie würden Sie folgende Variante einschätzen: Zuerst bestellt man die Maurer. Denn die haben ja gerade Zeit und wollen beschäftigt sein. Während diese mit dem Mauern beginnen, überlegt sich der Architekt noch schnell den Bauplan. Was Sie vom Haus wünschen, wird er schon richtig erahnen.
Das halten Sie für schwachsinnig? Zugegeben, ich auch. Aber genauso wird Software oft entwickelt:
Die teuren Programmierer müssen beschäftigt sein. Man kann sie ja nicht sinnlos ohne Arbeit rumsitzen lassen, bis man endlich weiß, was man will, und dann die Softwarearchitektur entworfen hat.
Und so wird programmiert. Die Änderungen, die sich dann im Lauf der Zeit zwangsläufig ergeben, werden während der Programmierung (des Mauerns) umgesetzt. Das nennt man dann vornehm Refactoring.
Und wenn man, wie das fast immer der Fall ist, feststellt, dass der Kunde doch etwas anderes wünscht (die wissen ja nie, was sie wollen), dann ändert man eben die Anforderungen, danach die Architektur (so man überhaupt eine erstellt) und danach die bereits entwickelte Software. Meistens muss man diesen Zyklus mehrfach durchlaufen, bis die Anforderungen des Kunden erfüllt sind (oder dieser entnervt aufgibt). Das nennt man dann agile Entwicklung.
Bin ich jetzt zu zynisch? Vielleicht ein wenig. Aber von den Jungs am Bau können wir noch verdammt viel lernen.
PS: Wie Sie Anforderungen erheben, lernen Sie von meinem Guru Thomas Geis im Seminar Usability, Requirements und IEC 62366. Wie Sie eine Architektur normenkonform dokumentieren (u.v.m.) lernen Sie im Seminar “Medizinische Software” (mit mir).