So wie in jeder anderen Branche auch, hat jedes Softwareprodukt Verbraucher und Hersteller. Und so wie in jeder anderen Branche auch, streben die Hersteller danach, den Produktentwicklungsprozess besser kontrollieren und koordinieren zu können. Natürlich ist das nicht der einzige Punkt, der für den Erfolg betrachtet werden muss, aber ein wesentlicher. Und für diesen wichtigen Prozess braucht man eine Methode, die es schafft, den Schaffensdrang und die Kreativität der Entwickler nicht lahm zu legen ;)

Über diese Methode wird viel geredet. Schauen wir uns also mal die bekannte Methodik Agile etwas genauer an und vergleichen die beliebtesten praktischen Anwendungsvarianten.
Die Besonderheit der Softwareentwicklung liegt darin, dass die Technologie es zulässt, genügend unterschiedliche Lösungen für eine und dieselbe Aufgabe auszuprobieren, und die Möglichkeit für einen schnellen Entwicklungsstart bereithält.
Kurz: Alle setzen sich zusammen, lassen sich was einfallen, schreiben ein Programm und schon kann der Verkauf starten (oder die freie Verbreitung, je nachdem wie es gewollt ist ;).
Allerdings riskiert das Team während dieser ganzen Arbeitsphase, dass die Situation falsch eingeschätzt wird und nicht das gemacht wird, was der Kunde verlangt bzw. dass die Frist nicht eingehalten werden kann oder das Geld der Investoren verschwendet wird bzw. deren Geduld, wenn es darum geht endlich eine funktionierende Version vorzulegen.
Agile Software Development ist eine Methodik für Softwareentwicklung. Eine kurze Beschreibung findet ihr hier. Bei dieser Methode teilt sich der Entwicklungsprozess in Phasen von 1 bis 4 Wochen Länge, die immer wieder wiederholt werden. Jede Wiederholungsphase ist ein ganzheitlicher Entwicklungszyklus: Planung, Anforderungsanalyse, Design, Implementierung, Testphase und Dokumentation. Das Ziel jeder Phase ist eine darauf folgende fehlerfreie Softwareversion. Jede nachfolgende Version verbessert entweder die existierende oder fügt einige neue hilfreiche Funktionen hinzu. Am Ende der Wiederholungsphase werden vom Team die Projektprioritäten überprüft.
Diese Methode erfordert nur einen minimalen Dokumentationsaufwand, da sie die direkte Kommunikation im Team und mit dem Auftraggeber begünstigt. Trotzdem wird natürlich Qualität vorausgesetzt. Im Folgenden zähle ich einige Prinzipien der Agile-Entwicklungsmethode auf:
1. schnelle Reaktion auf Anfragen von Auftraggebern; funktionierende Vorabversionen, die vom Auftraggeber sofort eingesetzt werden können
2. häufige Versionen (Releases) (die Zeit zwischen den einzelnen Versionen wird in Wochen berechnet, nicht in Monaten)
3. Release bzw. Version – Hauptparameter für den Entwicklungsfortschritt
4. Anforderungsänderungen können jederzeit gemacht werden, sogar in fortgeschrittenen Entwicklungsphasen
5. enge und tägliche Zusammenarbeit des Entwicklungsteams mit dem Auftraggeber und allen am Produkt Interessierten
6. Interaktion zwischen allen Personen; direkte Kommunikation ist dabei das beste Mittel
7. Das Projekt motiviert die Teammitglieder, denen man hundertprozentig vertrauen muss; ständige Aufmerksamkeit des Teams bezüglich der Perfektionierung des Systemdesigns
8. Selbst organisierendes Team
9. ständige Anpassung an die sich ändernden Faktoren
Die Methode stellt vergleichsweise wenig Anforderungen an das Entwicklerteam (quantitativ). Allerdings haben diese es dann in sich. Das Team muss aus Fachleuten bestehen, da es viele wichtige Entscheidungen treffen muss und die Teammitglieder sollten zum einen befreundet sein und zum anderen offen und kritisch zueinander sein. In der Praxis ist das natürlich nicht immer gegeben. Aber aus meiner Sicht ist das Wichtigste, dass immer eine enge und ständige Verbindung zum Auftraggeber besteht. Das ist zugleich das Wichtigste und das Schwierigste bei einer erfolgreichen Anwendung dieser Methode, da es natürlich verschiedene Auftraggeber gibt.
Der Auftraggeber übernimmt bei dieser Methode eine große Verantwortung und in der Praxis sind viele einer solchen Verantwortung nicht gewachsen. Falls das Ergebnis dann doch nicht erfolgreich ausfällt, hat der Auftraggeber bei der vorliegenden Verfahrensweise keine Chance die schönen Sätze „Davon hab ich nichts gewusst!“ und „Man hat mich nicht vorgewarnt!“ anzubringen. Außerdem kann es auch gut sein, dass der Auftraggeber ein Produkt erhalten will, bei dem der Aufwand in keinem Verhältnis zum Nutzen steht. Die hier angewendete Logik ist oft so einfach wie vernichtend: „Ich bezahle Ihnen Geld dafür, dass sie sich selbst überlegen was mir alle gefällt. Ich habe keine Zeit. Machen Sie was daraus, aber seien sie sich sicher, dass ich mir am Ende alles ganz genau ansehen werde.“ Solche Auftraggeber gibt es zwar selten, aber es gibt sie doch und das kann einen ins Verderben stürzen. Es ist eine große Kunst mit dem Auftraggeber eine dauerhafte Beziehung aufzubauen.
Die agile Softwareentwicklung ist ein sich wiederholender und inkrementeller Prozess. In diesem Rahmen geht die Entwicklung in kurzen und häufigen Schritten vonstatten. Diese sehr demokratisch anmutende Verfahrensweise kommt ohne Meinungsäußerung und Diskussionen aus, da es um das große Ganze geht. Gleichzeitig verlangt diese Methode aber auch von jedem Teilnehmer eine extrem hohe Professionalität. Eben diese Professionalität und eine individuelle Disziplin schützt das Team vor Konflikten, unproduktiven Auseinandersetzungen und verantwortungslosen Entscheidungen. Der Teamleiter sowie der Ansprechpartner des Auftraggebers haben dabei eine immense Bedeutung.
Ich hoffe, dass mein Artikel für alle, die sich für moderne Entwicklungsmethoden begeistern, interessant war. Es ist meine Sicht auf die agile Softwareentwicklung und soll keines Falls die Wahrheit in der letzten Instanz darstellen. Auf eure Kritik und Kommentare freue ich mich wie immer.


Kommentare
Ich bin von Agilen Softwaremethoden schon immer recht angetan gewesen. Besonders das Scrum-Konzept hat es mir angetan.
Die Motivation aller Beteiligten ist meiner Meinung nach ein sehr wichtiger Punkt im Entwicklungskonzept und gerade hier können Agile Methoden oft mehr leisten als Standardverfahren.
Kommentieren