Agil entwickeln statt überreguliert
Artikel erschienen in Swiss IT Magazine 2005/17
In heutigen, grossen Softwareprojekten ist ein Vorgehensmodell in genau geregelten Prozessen unumgänglich geworden. Dafür wurden Modelle wie das V-Modell (Vorgehensmodell) formuliert, die von vielen Unternehmen als Hausstandard zur Software-Erstellung verwendet werden. Das V-Modell beschreibt die Aktivitäten (Tätigkeiten) und die Produkte (Ergebnisse), die während der Entwicklung durchzuführen und zu erstellen sind. Dabei wird der ganze Lebenszyklus der Software betrachtet, von der Planungsphase bis hin zur Ausserbetriebnahme.
Das V-Modell und ähnliche Methoden erlauben die Software-Entwicklung nach dem ISO 9001. Wer schon in grossen Softwareprojekten mitgewirkt hat, weiss, dass entsprechende Leitlinien und Dokumentationen sehr wertvoll sein können.
Dabei wird das Gesamtprojekt in mehrere Teilschritte zerlegt, die nacheinander durchlaufen werden. Der dadurch entstehende Ablauf wird Wasserfallmodell genannt. Grob kann dabei der Ablauf in die drei Phasen Analyse, Design und Implementierung unterteilt werden.
Sind diese Vorgehensmodelle aber in jedem Fall empfehlenswert? Könnten Entwicklungen auch effizient durchgeführt werden, ohne das Hauptgewicht auf die Prozesse und die Dokumentation zu legen? Wenn ein Entwickler solche Fragen stellen würde, dann würde ihm sofort unterstellt, er sei «dokumentationsfaul» und es sei eben wichtig, dass neben der Software auch eine gute Dokumentation zu erstellen sei.
Anhänger von sogenannt agilen Methoden setzen hier bewusst einen Gegenpol. Sie stellen die Software und den Menschen in den Vordergrund. Was allerdings nicht heisst, dass die Dokumentation deswegen unwichtig ist.
Die agile Software-Entwicklung, die ihre extremste Ausprägung im sogenannten «Extreme Programming» findet, setzt auf die vier grossen Werte Kommunikation, Einfachheit, Feedback und Mut. Aus diesen werden zwölf Grundpraktiken abgeleitet. Man versucht dabei, durch eine Vielzahl von Praktiken die Kommunikation zwischen Entwickler, Kunde und Management sicherzustellen. Die Kommunikation wird also als essentiell dafür angesehen, dass eine Zusammenarbeit überhaupt gelingen kann.
Weiter soll die Einfachheit gefördert werden. Immer die einfachste Lösung für ein Problem soll angestrebt werden. Die ständige Kommunikation hilft den Entwicklern, diesem Ziel immer näher zu kommen. Auch die Architektur soll möglichst einfach gestaltet werden, denn je einfacher ein System ist, desto weniger muss darüber mitgeteilt werden. Extreme Programming lehnt darum auch komplexere Vorgehensmodelle wie den RUP (Rational Unified Process) ab und fordert statt dessen ein einfaches Regelwerk.
In der agilen Software-Entwicklung ist das Feedback eine zentrale Kommunikationsform. Feedback zum Beispiel durch Tests informiert den Programmierer über den aktuellen Systemzustand. Auch der Kunde soll dabei über den aktuellen Projektstand informiert sein, damit er allenfalls eingreifen kann.
Um diese Werte konsequent umzusetzen, ist aber auch Mut erforderlich. Mit dem Kunden muss eine ehrliche und vertrauensvolle Beziehung aufgebaut werden. Er muss unterrichtet werden, wenn beispielsweise während der Entwicklung Verzögerungen auftreten.
Die klassischen Vorgehensmodelle werden von Entwicklern oft nicht als Hilfe und Werkzeug, sondern als zusätzliche Belastung während der Entwicklung wahrgenommen. Als Konsequenz daraus werden diese Vorgehensweisen häufig in der Praxis nicht angewendet oder nur zum Schein, um das Management zufriedenzustellen. Als besseren Weg in der Software-Entwicklung definiert darum das agile Modell folgende Richtlinien:
Menschen und Zusammenarbeit vor Prozessen und Werkzeugen
Funktionierende Software vor umfassender Dokumentation
Zusammenarbeit mit dem Kunden vor vertraglicher Verhandlung
Reaktion auf Veränderung vor Einhaltung eines Plans
Im Jahr 2001 fanden sich 17 Protagonisten zusammen und formulierten gemeinsam das Agile Manifesto (www.agilemanifesto.org), in dem die Ziele der als «Agile Software-Entwicklung» bezeichneten Vorgehensweise aus ihrer Sicht festgehalten wurden.
Was ist aber unter «Agiler Software-Entwicklung» genau zu verstehen? Welche Ausprägungen (XP, SCRUM, Crystal, FDD, RUP usw.) gibt es und wie unterscheiden sie sich? Was sind deren Vor- und Nachteile? Ist agile Software-Entwicklung für mein Unternehmen geeignet, und wenn ja, in welcher Form? Wie gewinne ich das Management und den Kunden dafür? Wie kann ich das Modell in meiner Firma umsetzen? Wie sieht die Entwicklung nach der Agilen Methode konkret aus? Dies und andere Fragen versucht die Fachhochschule Solothurn Nordwestschweiz am 20. Oktober im Rahmen einer Tagung zu beantworten.
Martin Hüsler ist Dozent an
der Fachhochschule Solothurn Nordwestschweiz.