Was ist agile Softwareentwicklung?

Definition

Agile Softwareentwicklung ist ein spezieller Ansatz der Softwareentwicklung, der versucht möglichst schlank und flexibel Software-Projekte umzusetzen, ohne dabei auf den klassischen großen Projektplanungsüberbau zurückgreifen zu müssen.

Klassische Softwareentwicklungsmethoden wie das Wasserfallmodell setzen darauf, zu Anfang eines Projekts genau die Anforderungen etwa in einem Pflichtenheft festzuhalten, nach denen die Software entwickelt wird. Dies ist eine nicht ganz unerhebliche Aufgabe; da sich genaue Anforderungen für den Einsatz am Markt mitunter zu Projektstart noch nicht bis ins letzte Detail definieren lassen. Agile Softwareentwicklung hingegen setzt darauf, so früh wie möglich ein laufendes System auszuliefern, das dann in Iterationen und basierend auf dem Feedback des Nutzers immer weiter entwickelt wird. Tägliche „Stand-Up-Meetings“(von meist sehr kurzer Dauer) über den laufenden Entwicklungsfortschritt und die Festlegung nächster Ziele sorgen dafür, dass das Team über den Entwicklungsprozess im Bilde ist und auch aus den anderen Bereichen des Projektes auf dem Laufenden ist, was zu einem besseren Verständnis in der Produktenwicklung sorgt. Im engen Austausch mit den Nutzern werden die kommenden Entwicklungsschritte diskutiert, die dann in der nächsten Iterationsstufe implementiert werden. Bekannte Projektmanagementmethoden aus diesem Bereich sind Scrum oder Kanban.

Was versteh man genau unter agiler Softwareentwicklung?

Erste Ansätze agiler Software-Entwicklung reichen zurück bis in die frühen 90er Jahre. Als feststehender Begriff wurde es aber 2001 im sogenannten „Agilen Manifest“ geprägt. 


 In diesem Agilen Manifest werden vier zentrale Werte für die Softwareentwicklung definiert:

  • Individuen und Interaktionen stehen über Prozessen und Werkzeugen
  • Funktionierende Software steht über einer umfassenden Dokumentation
  • Zusammenarbeit mit dem Kunden steht über der Vertragsverhandlung
  • Reagieren auf Veränderung steht über dem Befolgen eines Plans

Weiterhin sagt das Manifest, dass die Werte auf der rechten Seite zwar auch wichtig seien – schwerer würden aber die Werte auf der linken Seite wiegen.

Aus diesen Werten leitet das Agile Manifest sogenannte agile Prinzipien ab:

  • Zufriedenstellung des Kunden durch frühe und kontinuierliche Auslieferung von wertvoller Software
  • Agile Prozesse nutzen Veränderungen (selbst spät in der Entwicklung) zum Wettbewerbsvorteil des Kunden.
  • Lieferung von funktionierender Software in regelmäßigen, bevorzugt kurzen Zeitspannen (wenige Wochen oder Monate)
  • Nahezu tägliche Zusammenarbeit von Fachexperten und Entwicklern während des Projektes (Bsp.: Gemeinsamer Code-Besitz (Collective Code Ownership))
  • Bereitstellung des Umfeldes und der Unterstützung, welche von motivierten Individuen für die Aufgabenerfüllung benötigt wird
  • Informationsübertragung nach Möglichkeit im Gespräch von Angesicht zu Angesicht
  • Als wichtigstes Fortschrittsmaß gilt die Funktionsfähigkeit der Software
  • Einhalten eines gleichmäßigen Arbeitstempos von Auftraggebern, Entwicklern und Benutzern für eine nachhaltige Entwicklung
  • Ständiges Augenmerk auf technische Exzellenz und gutes Design
  • Einfachheit ist essenziell (KISS-Prinzip)
  • Selbstorganisation der Teams bei Planung und Umsetzung
  • Selbstreflexion der Teams über das eigene Verhalten zur Anpassung im Hinblick auf Effizienzsteigerung

Diesen Prinzipien folgend bedeutet agile Softwareentwicklung, dass man weitaus kleinteiliger aber auch schneller an das gesamte Projekt herangeht und sich so in kleinen Schritten dem finalen Produkt nähert. Insofern ist eine der zentralen Komponenten der agilen Softwareentwicklung, dass man sich aus dem starren Rahmen von langfristigen Entwicklungs- und Planungszyklen löst, um direkter auf sich ändernde Bedingungen reagieren zu können. Daher wird auf einen engen Kontakt mit dem Kunden/Anwender gesetzt, der möglichst frühzeitig in das Projekt involviert werden soll und bereits in einem frühen Stadium eine funktionierende Version zur Verfügung gestellt bekommen soll. Schnittstelle zwischen Kunde und dem Entwicklerteam ist der sogenannte Product Owner. Zusammen mit Kunden entwickelt er die Anforderungen am laufenden Modell und sortiert die angefragten Funktionen der Wichtigkeit nach und leitet daraus eine Priorisierung für die Entwickler ab. Dieser Product Owner ist im Idealfall kein volles Mitglied des Programmierteams, um so besser zwischen „beiden Welten“ vermitteln zu können. Diese Herangehensweise ermöglicht weitaus kürzere Entwicklungszyklen. Ebenso werden Fehlentwicklungen minimiert, da die Neuentwicklungen in das bereits laufende Projekt implementiert werden. Dadurch, dass die Software nah an der Praxis entwickelt wird, führt dies zu einem besseren gegenseitigen Verständnis zwischen Anwender und Programmierer. Anwender werden schneller bei ihren Problemen abgeholt und Entwickler lernen die Software mehr aus dem Blickwinkel des Anwenders zu betrachten. Missverständnisse werden zudem durch die schnelle Implementierung direkter sichtbar. 

Lifecycle einer agilen Softwareentwicklung

Dem gegenüber steht, dass sich agile Methoden unter Umständen nur schwer etablieren lassen. Gerade eingespielte Entwicklerteams tun sich hier schwer, da die Methoden, um gut zu funktionieren, minutiös eingehalten werden sollten. Hier ist einiges an Aufwand und eigenem Willen nötig, um sich den neuen Methoden zu unterwerfen. Auch liegt nicht jedem Entwickler das hohe Pensum an Meetings, das bei agiler Entwicklung notwendig ist. Aber auch Kunden tun sich mitunter gerade zu Anfang eines Projekts mit dieser Methode schwer, da die Abwesenheit von finalen Spezifikationen und festen Zeitplänen die eigene Planung zumindest komplizierter machen können. Zudem können solche „Unsicherheiten“ auch Vertragsverhandlungen über das zu entwickelnde Software-Projekt erschweren. Gleichzeitig bietet sich hier aber auch eine große Chance, Einfluss darauf zu nehmen, welche wichtigen Funktionen priorisiert entwickelt werden sollen, so dass ein gut funktionierendes Kernsystem schnell ausgeliefert werden kann.

Agile Softwareentwicklung in der Energiewirtschaft

Der Strommarkt und die Vermarktung von dezentralen Anlagen befinden sich im permanenten Wandel. Die Möglichkeiten und Herausforderungen am Strommarkt ändern sich permanent: Wir sehen eine wachsende Anzahl an Marktteilnehmern. Zudem hat sich die Preisstruktur in den letzten Jahren drastisch gewandelt. Dies erfordert neue Algorithmen für die Prognose und für die Weiterverarbeitung von Prognosedaten, um weiterhin erfolgreich handeln zu können. Auf agile Methoden zu setzen, hilft in so einem Fall, das Problem zu umgehen, dass man eine Software für noch nicht bekannte Problemstellungen entwickeln muss. Da sich die Regularien der Energiewirtschaft auch in einem steten Wandel befinden, helfen agile Entwicklungsmethoden selbst auf kurzfristige Änderungen zu reagieren.

Wie hilfreich war dieser Artikel?
[Anzahl der Bewertungen: 0 Durchschnitt: 0]