Was ist Agile Softwareentwicklung – Ein Einblick

Der erste Teil der Artikelserie zum Thema „Agile Softwareentwicklung“ wird sich mit der Definition beschäftigen, was überhaupt Agile Softwareentwicklung ist. Im darauffolgenden Teil des Artikels soll unter anderem auf Vorteile und Nachteile dieses Entwicklungsmodelles eingegangen werden. Weiterhin sollen ebenso die ein oder anderen Stolpersteine der „Agilität“ herausgearbeitet werden.

Was ist Agile Softwareentwicklung?

Die Agilität in der Softwareentwicklung beschreibt im Groben das Bestreben, einen möglichst flexibel handhabbaren Softwareentwicklungsprozess zu haben. Durch das eliminieren von unnötigem Verwaltungsaufwand, soll der Prozess schlank gehalten werden und die Softwareentwicklung soll in den Vordergrund treten.

Unter diesem flexibel handhabbaren Entwicklungsprozessen versteht man die Tatsache, möglichst zeitnah den Fokus von einem Thema auf ein anderes Thema setzen zu können. Hierbei soll nicht mehr im Vorhinein eine Art „Fünf-Jahres-Plan“ erstellt werden. Vielmehr es soll möglich sein, nach der Umsetzung des ersten Features ein beliebiges, zum Zeitpunkt der Erstellung von Feature 1 noch nicht bekanntes Feature, einwerfen und in die Umsetzung geben zu können.

Die genannte Agilität wird gestützt durch das sogenannte „Agile Manifest“, welches im Februar 2001 veröffentlicht wurde. Selbiges umfasst vier Grundwerte der „Agilität“:

  1. Individuals and interactions over processes and tools
  2. Working software over comprehensive documentation
  3. Customer collaboration over contract negotiation
  4. Responding to change over following a plan

Schaut man sich diese Werte an, so geht es vordergründig nicht darum, sich an Prozessen, Befehlsketten und ähnlichem aufzuhalten. Vielmehr ist dafür zu sorgen, möglichst schnell ein (den Kundenanforderungen genügendes) funktionierendes Produkt zu liefern.

Vorteile des agilen Entwicklungsprozesses

Die Softwareentwicklung in ihrer agilen Form mag für den einen oder anderen sicher als eine Modeerscheinung bekannt sein. Diese Modeerscheinung bringt jedoch handfeste Vorteile mit sich. Beginnen wir mit dem Punkte der Risikobewertung. Einer der Fokuspunkte agiler Entwicklung liegt darin, ein Produkt in kurzen Iterationen umzusetzen. Aus diesem Vorgehen folgt, dass schlecht ankommende Versionen einer Software weniger negative Auswirkungen generieren. Nimmt man das Vorgehen per Wasserfallmodell als Vorbild, so ist diese (meist längere) Planungs- als auch Umsetzungszeit verloren. Agilität schränkt diesen Zeitraum stark ein, indem es kurze Iterationen fordert. Ein Feature nach dem anderen. Funktioniert dieses eine Feature nicht, sind lediglich die Zeiten für diese Iteration vergeben. Bei herkömmlichen Entwicklungsmethoden, muss das geplante und entwickelte Feature beim Kunden ankommen, ansonsten geht viel Geld verloren.

Ebenso vorteilhaft ist, dass man sehr viel schneller auf Marktgegebenheiten reagieren kann. Märkte und Kundenverhalten ändern sich häufig und teilweise sehr schnell. Genau diese Reaktionsfähigkeit durch agile Softwareentwicklung ist Gold wert: durch die Gegebenheit wenige Wochen an einer Softwareversion zu arbeiten, müssen keine langen Planungs- und Umsetzungsphasen verworfen werden. Im Gegenteil: Diese Arbeiten können abgeschlossen werden. Es muss keine, bzw. im Notfall nur wenig Arbeit verworfen werden und es kann direkt mit der Reaktion auf das Marktumfeld begonnen werden.

Ein weiterer, wichtiger Punkt ist der direkte Draht zwischen IT-Abteilung und Management. Auch wenn es nicht so wirkt: durch den frühen Einstieg der IT in die Planungen eines Features lassen sich verschiedene Fehlplanungen vermeiden, welche zum Beispiel im Wasserfallmodell zu einem großen „Knall“ und einem deutlichen Mehraufwand an Investitionen geführt hätten.

Nachteile agiler Entwicklung

Es ist nicht nur so, dass die agile Entwicklung ausschließlich Vorteile mit sich bringt. Sie bringt auch einige Nachteile mit sich. Nach meiner Erfahrung der letzten 2,5 Jahre sind sich (vor allem zu Anfang eines solchen Prozesses) viele Projektmanager nicht im klaren darüber, dass das Wort „agil“ nicht gleichzusetzen ist mit dem Wort „spontan“. Ein Kanban- oder SCRUM-Prozess verleiten sehr schnell dazu, doch noch das eine oder andere Ticket tauschen oder „in den Prozess quetschen“ zu wollen. Dass das nicht gewollt ist, sollte jedem verständlich sein. Auch ein agiler Prozess lebt von einer bestimmten Kontinuität. Diese erreicht man unter Verwendung von SCRUM beispielsweise durch das Einhalten der „Sprints“. Diese beschreiben das definieren eines Ziels binnen der nächsten 14 Tage und auch, dass sich an diesem Ziel möglichst nichts änder sollte.

Ebenso wirkt es sich nachteilig aus, dass wenige Entwickler und auch wenige Führungsrollen vertraut mit agiler Entwicklung sind. Es gilt, vor allem zu Beginn, auf die strikte Einhaltung besitmmter Regeln zu achten. In vielen Fällen werden Vorgehen wie SCRUM zunächst zu einem Naserümpfen im Management führen. Auf den ersten Blick wirken viele Meetings dieses Entwicklungsprozesses nach „Überfluss“. Gerade Meetings wie das Estimation-Meeting helfen jedoch auch dem Management ein besseres Gefühl für den Wert einer Aufgabe („User-Story“) zu bekommen. Auf die einzelnen Phasen des Sprints sowie die dazugehörigen Meetings werde ich jedoch in einem weiteren Artikel eingehen.

Artikelserie: Agile Softwareentwicklung

Mittlerweile ist die agile Softwareentwicklung in aller Munde – viele setzen hier vor allem auf den SCRUM-Prozess. Aus diesem Grund möchte ich mit Hilfe einer Artikelserie auf verschiedene Themen eingehen. Unter anderem werde ich hierbei erläutern:

Struktur der Artikelserie Agile Softwareentwicklung

  • Was ist agile Softwareentwicklung
    • Birgt das Vorgehen der agilen Entwicklung Vorteile?
    • Welche Nachteile sind mit der agilen Softwareentwicklung verbunden?
  • Was ist SCRUM?
    • Wie ist SCRUM aufgebaut?
    • Welche Phasen gibt es im SCRUM-Zyklus?
    • Was ist ein Sprint?
  • Was ist Kanban?
    • Wie funktioniert Kanban?
    • Bietet es Vorteile oder Nachteile gegenüber SCRUM?

Wie schon erwähnt soll das Ganze in die Form einer Artikelserie gegossen sein. Ich werde dabei vor allem viele praktische Erfahrungen einfließen lassen, welche ich innerhalb meiner letzten zwei Jahre als SCRUM-Master sammeln konnte.

Das Thema Agilität wird somit der Fokuspunkt dieses Blogs für die nächsten Tage und Wochen werden. Ich hoffe, mit dieser Serie einen echten Mehrwert im Internet zu schaffen – sofern ihr den einen oder anderen Artikel also interessant findet, teilt mir das gerne mit. Kommentiert fleißig und teilt den Artikel mit Freunden, Bekannten und Kollegen.