Agile Softwareentwicklung

Agile Softwareentwicklung
Agile Softwareentwicklung beschreibt Vorgehensweisen, um Software flexibel und effektiv entwickeln zu können. Um dieses Ziel zu erreichen, folgt die Änderung der Grundsätze des linearer Vorgehensmodell. Folglich gilt es, die Leitsätze des Projektmanagements neu zudenken. Daraus entsteht eine andere Gewichtung einzelner Projektaspekte. Deshalb verschiebt die agile Softwareentwicklung den Fokus zum Beispiel auf die Anpassungsfähigkeit. Dabei wird der strikte Ablauf eines Plans zurückgestellt.
Außerdem erfolgten auch andere grundlegende Anpassungen im Projektmanagement. Die agile Softwareentwicklung möchte Strukturen schaffen, die das Entwickeln von hochwertigen Quellcode begünstigen. Welche Grundsätze für die agile Entwicklung gelten sollen, wurde in dem Manifest für agile Softwareentwicklung schriftlich festgehalten:
Wir erschließen bessere Wege, Software zu entwickeln,
indem wir es selbst tun und anderen dabei helfen.
Durch diese Tätigkeit haben wir diese Werte zu schätzen gelernt:
Individuen und Interaktionen mehr als Prozesse und Werkzeuge
Funktionierende Software mehr als umfassende Dokumentation
Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlung
Reagieren auf Veränderung mehr als das Befolgen eines Plans
Das heißt, obwohl wir die Werte auf der rechten Seite wichtig finden,
schätzen wir die Werte auf der linken Seite höher ein.
KENT BECK
MIKE BEEDLE
ARIE VAN BENNEKUM
ALISTAIR COCKBURN
WARD CUNNINGHAM
MARTIN FOWLER
JAMES GRENNING
JIM HIGHSMITH
ANDREW HUNT
RON JEFFRIES
JON KERN
BRIAN MARICK
ROBERT C. MARTIN
STEVE MELLOR
KEN SCHWABER
JEFF SUTHERLAND
DAVE THOMAS
Dem Manifest sind 12 Prinzipien beigefügt. Die Grundsätze und Prinzipien finden sich in den daraus entstandenen Methoden zur Softwareentwicklung wieder. Die bekanntesten Vorgehensmodelle, die dem agilen Prinzip folgen, sind Scrum und Extrem Programming.
Zyklische Arbeit
Beide Vorgehensmodelle arbeiten mit wiederholenden Abläufen, weil sich dies als nützlich erwiesen hat. Durch das inkrementelle Vorgehen entsteht eine Struktur mit wiederholenden Phasen. Diese durchlaufen in unterschiedlichen Intervallen. Zum Beispiel gibt es in Scrum und Extrem Programming kurze Wiederholungsschleifen wie Daliy Scrums oder täglichen Stand-up Meetings. Des Weiteren sollte das Intervall zur Erstellung einer Softwareversion möglichst kurz sein. Ein Scrum Sprint oder ein Releaseplan dauert deshalb nur Wochen oder wenige Monate.

Inkrementell und Funktionsorientiert
Bekannter maßen, lassen sich große Probleme schlecht auf einmal bewältigen. Daher besteht die Kunst darin, das Problem in viele Teilprobleme zu zerteilen, um diese stetig nacheinander zu lösen. Dies sorgt für einen beständigen Fortschritt, weil kleine Problemstellungen sich zuverlässiger bewältigen lassen. Deshalb sollen Arbeitsschritte einfach und übersichtlich sein. Auf diese Weise kann in kleinen Schritten ein Ziel erreicht werden. So wird eine Überforderung durch eine zu komplexe Anforderung vermieden. Das bedeutet, das Produkt wird Stück für Stück um neue Funktionen und Eigenschaften erweitert. Folglich existiert zu jedem Zeitpunkt eine funktionstüchtige Softwareversion.
Anpassungen und Erweiterungen
Dadurch, dass agile Projekte mit Aufgabenschritten und wiederkehrenden Abläufen arbeiten, können schnell Anpassungen erfolgen. Wenn zum Beispiel in einem Scrumprojekt auffällt, dass eine Funktion früher gebraucht wird. Kann diese direkt für den nächsten Sprint geplant werden. Welche Aufgaben aus dem Produkt Backlog zu erfüllen, wird erst bei der Sprintplanung entschieden. Deshalb ermöglicht der zyklische Ablauf zudem eine einfache Erweiterung. Wenn ein Softwareprodukt weiterentwickelt werden soll, so kann das Projekt um einen Sprint oder Releasplan erweitert werden.

Kundenorientiert
Darüber hinaus binden agile Projekte ihre Kunden mit ein. Deshalb präsentiert der Auftragnehmer den aktuellen Stand des Produkts dem Auftraggeber regelmäßig. Diese Transparenz ermöglicht, dass der Kunde Feedback geben kann. Auf Kundenwünsche kann jederzeit eingegangen werden. Wenn dem Kunden auffällt, dass etwas seinen Vorstellungen nicht entspricht, kann reagiert werden. Zum Beispiel kann die Anpassung der entwickelten Funktionen schnell erfolgen, wenn dies gewünscht ist. Ferner kann zügig reagiert werden, wenn sich Anforderungen am Markt ändern.
Qualität
Insbesondere das regelmäßige Testen und Prüfen der Software ist Teil des Entwicklungsprozesses. Jedes entwickelte Modul wird gleich auch auf Funktion und Eigenschaften getestet. Dafür können unterschiedliche Verfahren eingesetzt werden. Außerdem dient der Einsatz von Entwickler-Duos der Qualitätssicherung, weil die Entwickler sich gegenseitig kontrollieren. Alternativ können Code Reviews einberufen werden. Ein weiteres Instrument, um die Qualität zu gewährleisten, ist die testgetriebene Entwicklung. Sobald ein Softwareteil programmiert ist, wird dieses direkt in einer Entwicklungsumgebung geprüft. Weil Fehlentwicklungen schnell auffallen, können diese zügig behoben werden.

Tägliche Zusammenarbeit
Zur agilen Entwicklung gehört die tägliche Zusammenarbeit, weil dies die Kommunikation im Team fördert. In sogenannten Daily Scrums oder Stand-up Meetings bespricht das Team sich kurz in ca. 15 Minuten. Im Verlauf des Gesprächs stellt jeder vor, welche Ziele erreich sind. Auch nicht erreichte Ziele gilt es anzusprechen, damit gegebenenfalls dort unterstützt werden kann. Im Anschluss gibt jeder einen kurzen Ausblick, welche Aufgaben als Nächstes verfolgt werden. Dieser Austausch über den Arbeitsprozess schafft Transparenz, Verbindlichkeit und zeigt schnell Hindernisse auf. Die Besprechung soll möglichst kurz und prägnant sein. Auf diese Weise wird keiner durch lange Meetings von der Arbeit abgehalten.
Des Weiteren ist es förderlich, dass die soziale Interaktion und Kommunikationskultur gefördert wird. Dabei können Erfolge als solche gemeinsam wahrgenommen werden. Dies sorgt für ein angenehmes Teamklima, in dem es sich gut arbeiten lässt. Nur in einem intakten Team lässt es sich offen und ehrlich kommunizieren.

Mögliche Schwierigkeiten
Agile Vorgehensweisen bringen auch Schwierigkeiten mit. Dadurch das eine verbindliche und strikte Planung aufgeweicht wird, ist Regulatorik schwer einzuhalten. Wenn bestimmte Abläufe vorgegeben sind, dann kann das im Konflikt mit den agilen Prinzipien stehen.
Durch die flexiblen Abläufe muss viel organisiert werden. Zudem müssen alle Beteiligten mit dem Konzept vertraut gemacht werden. Das kann schnell zu einem Overkill für das Team werden.
Zudem wird von den Teammitgliedern Kommunikation und Reflexion gefordert. Der offene und ehrliche Umgang im Team ist für viele unangenehm und birgt Konflikte. Außerdem fällt die Reflexion der eigenen Arbeit vielen schon im persönlichen Kontext schwer. Dieser Umgang mit Erfolgen und Fehlschlägen will gelernt sein. Oft benötigen agile Projekte flache Hierarchien, um eine Basis für Offenheit zu schaffen. Dies kann Konflikte im Team zusätzlich.
Durch Entwicklerduo und Code Review wird die Freiheit des Entwicklers eingeschränkt. Bekanntlich gibt es immer mehrere Wege, in der Informatik ein Problem zu lösen. Es kann sein, dass die beiden Entwickler unterschiedlicher Meinung sind, wie das Problem zu lösen ist. Auf Grund solcher Konflikte kann der Entwicklungsprozess massiv beinträchtigen werden.
Vorteile
- Schnell hochwertige funktionierende Software
- Anpassungsfähig in der Entwicklung
- Transparent
- Kundenorientiert
- Angenehmes Arbeitsklima
Nachteile
- Regulatorik schwierig einzuhalten
- Viel Organisation
- Kommunikationsprobleme
- Hierarchikonflikte
- Fehlende Freiheit des Entwicklers
Fazit
Achten Sie bei der Wahl einer Vorgehensweise immer auf die Unternehmensstruktur. Auch die Team-Skills gilt es bei der Auswahl berücksichtigen, weil das Team zum Beispiel viel Reflektieren muss. Nicht für jedes Unternehmen eignet sich die agile Softwareentwicklung. Bedenken Sie, dass eine hohe Planbarkeit und viel Regulatorik hinderlich für agile Prinzipien sind. Zudem sind Agile Projekte drauf angewiesen, dass die Individuen im Team die agile Philosophie mittragen.
Ein funktionierendes Team kann mit der agilen Softwareentwicklung sehr effektiv arbeiten und schlägt damit oftmals im Kosten-Nutzen-Faktor lineare Entwicklungsverfahren. Außerdem sind Fehlentwicklungen unwahrscheinlich, weil der Kunde in den Entwicklungsprozess eingebunden wird.
Um die vor und Nachteile der agilen und linearen Vorgehensmodelle auszugleichen, gibt es auch Mischformen wie das agile Wasserfall-Modell. Deshalb ist dies für einige Unternehmen eine alternative, über die es sich zu informieren lohnt.