Vor- und Nachteile der agilen Softwareentwicklung
Stanislaw Nasin / 19.12.22 / Digitale Transformation
Seit Jahrzehnten begegnen Softwareentwickler den gleichen Schwierigkeiten. Die einzelnen Phasen eines Projekts sind lang und schwer planbar. Die Anforderungen sind häufig nicht genau genug beschrieben, sodass Funktionalität vom Kundenwunsch abweicht. Und am Ende bekommt der Kunde eine Software, die möglicherweise bereits veraltete Business-Cases abbildet und veraltete Technologien verwendet.
Um diese Herausforderungen zu meistern, setzen Firmen beim Entwicklungsprozess vermehrt auf agile Softwareentwicklung anstelle der klassischen Vorgehensmodelle. Doch was ist die agile Softwareentwicklung und was bietet sie?
Agile Softwareentwicklung ist weniger eine bestimmte Methode zur Entwicklung von Software, vielmehr ist sie eine Sammlung von Denk- und Handlungsansätzen, um Entwicklungsprozesse schlanker, flexibler und transparenter zu gestalten. Das Konzept basiert auf der kontinuierlichen Bereitstellung funktionsfähiger Software, die in kurzen Iterationen um weitere Komponenten ergänzt wird.
Dieses Konzept wurde in dem sogenannten “Agile Manifesto” im Jahr 2001 festgehalten. Dabei bilden die folgenden vier Leitsätze die Grundlage der agilen Softwareentwicklung:
“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.“
Basierend auf diesen vier Leitsätzen entstanden zwölf Prinzipien, die eine Art Richtlinie darstellen, um Denkansätze und Prozessabläufe bei der Entwicklung zu bewerten und bei Bedarf anzupassen. Laut den Verfassern sind die folgenden Prinzipien des agilen Manifests jederzeit besonders zu beachten.
“Wir folgen diesen Prinzipien:
Unsere höchste Priorität ist es,
den Kunden durch frühe und kontinuierliche Auslieferung
wertvoller Software zufrieden zu stellen.
Heiße Anforderungsänderungen selbst spät
in der Entwicklung willkommen. Agile Prozesse nutzen Veränderungen
zum Wettbewerbsvorteil des Kunden.
Liefere funktionierende Software
regelmäßig innerhalb weniger Wochen oder Monate und
bevorzuge dabei die kürzere Zeitspanne.
Fachexperten und Entwickler
müssen während des Projektes
täglich zusammenarbeiten.
Errichte Projekte rund um motivierte Individuen.
Gib ihnen das Umfeld und die Unterstützung, die sie benötigen
und vertraue darauf, dass sie die Aufgabe erledigen.
Die effizienteste und effektivste Methode, Informationen
an und innerhalb eines Entwicklungsteams zu übermitteln,
ist im Gespräch von Angesicht zu Angesicht.
Funktionierende Software ist das
wichtigste Fortschrittsmaß.
Agile Prozesse fördern nachhaltige Entwicklung.
Die Auftraggeber, Entwickler und Benutzer sollten ein
gleichmäßiges Tempo auf unbegrenzte Zeit halten können.
Ständiges Augenmerk auf technische Exzellenz und
gutes Design fördert Agilität.
Einfachheit -- die Kunst, die Menge nicht
getaner Arbeit zu maximieren -- ist essenziell.
Die besten Architekturen, Anforderungen und Entwürfe
entstehen durch selbstorganisierte Teams.
In regelmäßigen Abständen reflektiert das Team,
wie es effektiver werden kann und passt sein
Verhalten entsprechend an. “
Beachtet man diese Prinzipien bekommt man ein Vorgehensmodell, das sich gravierend von den klassischen Modellen unterscheidet.
Bei den klassischen Modellen (z. B. Wasserfall- oder V-Modell) arbeitet man in langen, aufeinander aufbauenden Phasen. Zuerst werden alle Anforderungen an die Software erhoben und analysiert, dann wird ein den Anforderungen entsprechendes Design erarbeitet, anhand dessen man anschließend die Software implementiert. Schließlich wird die Software in den letzten Phasen getestet und in Betrieb genommen.
In der agilen Softwareentwicklung setzt man stattdessen auf kurze Iterationen mit ähnlichem Vorgehen. Zu Beginn jeder Iteration formulieren die Entwickler zusammen mit den Fachexperten die Anforderungen an einen kleinen Teil der Software aus, der einen Mehrwert bringt und unabhängig getestet werden kann. Anhand dieser Anforderungen wird dann der Teil der Software designt, implementiert und getestet. Es ist wichtig, dass dabei keinerlei Entscheidung zu Gunsten der möglichen zukünftigen Anforderungen getroffen werden, die Anforderungen sollen so einfach wie möglich umgesetzt werden. Anschließend wird dieser Teil der Software direkt in Betrieb genommen. Auf diese Weise können die Fachexperten bzw. Endanwender diesen Teil der Software direkt testen und gegebenenfalls benutzen. An dieser Stelle ist die Iteration abgeschlossen und der Prozess startet von vorn. Zusätzlich evaluieren die Entwickler und die Fachexperten regelmäßig ihr Vorgehen und passen es falls notwendig an. Die bekanntesten agilen Vorgehensmodelle sind Scrum und Kanban.
Wählt man für sein Vorgehen ein Modell der agilen Softwareentwicklung, kann es eine Menge Vorteile bieten.
Zum Beispiel ist die Time-to-Market um ein Vielfaches kürzer als bei einem klassischen Modell. Durch das iterative Vorgehen hat der Kunde sehr früh die Möglichkeit, die fertige Teilanwendung produktiv zu benutzen und damit Wert zu schöpfen.
Ebenso wertvoll ist auch die Flexibilität, die dieses Vorgehen liefert. Ob es sich um neue Anforderungen aufgrund der geänderten Marktsituation oder durch das Feedback der Anwender handelt, sie können direkt im nächsten Zyklus aufgegriffen und umgesetzt werden.
Die agile Softwareentwicklung steigert auch die Produktqualität. Durch die ständige Wiederholung des Entwicklungszyklus sowie Evaluierung der Ergebnisse und des Vorgehens, verbessert sich die Software mit jeder Iteration. Zusätzlich spielt auch der enge Kontakt zwischen den Entwicklern und den Fachexperten sowie das gemeinsame Erarbeiten der Anforderungen eine große Rolle. Im Gegensatz zu klassischen Vorgehensmodellen braucht man keine detaillierten, technischen Anforderungen. Man konzentriert sich darauf, was erreicht werden soll und warum. So können oftmals alternative und einfachere Möglichkeiten gefunden werden, die gewünschte Wirkung zu erzielen.
Neben diesen und anderen Vorteilen gibt es bei der agilen Softwareentwicklung selbstverständlich auch Nachteile.
In erster Linie lebt das Vorgehen von guter Kommunikation und Zusammenarbeit zwischen den Entwicklern und den Fachexperten bzw. dem Auftraggeber. Gibt es Interessenskonflikte oder werden die Entwickler unzureichend von Fachexperten unterstützt, ist das Vorgehen zum Scheitern verurteilt.
Als weiteres bietet die agile Softwareentwicklung nur bedingt Sicherheit bei der Planung. Durch die sich ständig ändernden Anforderungen und damit anfallenden Tätigkeiten wie Refactorings lassen sich langfristig keine festen Abgabefristen für bestimmte Teile der Software planen.
Auch der Aufwand, der benötigt wird, um ein Vorgehensmodell der agilen Softwareentwicklung einzuführen, ist nicht zu unterschätzen. Es dauert seine Zeit bis sich die Entwickler und die Fachexperten bzw. der Auftraggeber eingespielt haben und der Prozess seine Vorteile entfaltet. Gerade die Umstellung von klassischen Modellen auf agile Softwareentwicklung kann zeitintensiv sein.
Aus diesen Gründen sollte dieses Vorgehen nicht generell, sondern nur bei passenden Projekten verwendet werden. Die Entscheidung darüber lässt sich anhand der Bedürfnisse des Auftraggebers ableiten. Sind die Anforderungen des Auftraggebers nicht scharf oder hat er nur eine Idee, befindet sich das Projekt im ständig wandelnden Umfeld und ist der Auftraggeber bereit, an der Gestaltung des Projektes mitzuwirken, sollte man ein Vorgehensmodell der agilen Softwareentwicklung verwenden. Hat der Auftraggeber im Gegenteil klare, strikte Anforderungen, kann oder möchte er sich nicht an dem Prozess beteiligen und sind bei Projektanforderungen keine Änderungen zu erwarten, dann sollte man auf ein klassisches Vorgehensmodell zurückgreifen.
Zusammengefasst lässt sich sagen, dass trotz der Herausforderungen, die die Einführung der agilen Softwareentwicklung mit sich bringt, ihr Einsatz im passenden Umfeld unbestritten vorteilhaft ist. Auf jeden Fall ist die agile Softwareentwicklung in der modernen Zeit nicht mehr wegzudenken!