Cloudogu Glossar

Agile Softwareentwicklung

Was ist agile Softwareentwicklung?

Agile Softwareentwicklung umfasst eine Vielzahl von Methoden und Arbeitsweisen, die das Ziel haben Transparenz zu erhöhen und Time to Market von Produkten zu verringern. Dadurch werden Risiken reduziert, da falsche Annahmen frühzeitig erkannt werden. Erreicht wird das durch ein iteratives Vorgehen, bei dem im Vergleich zu klassischen Vorgehensweisen, wie zum Beispiel dem Wasserfall- oder V-Modell, nicht das gesamte Produkt vor dem Start der Entwicklung beschrieben und geplant wird. In der agilen Softwareentwicklung wird mit der Entwicklung einer kleinstmöglichen Version des Produkts begonnen, das dann in regelmäßigen und kurzen Abständen durch Feedback von Kund:innen weiterentwickelt wird.

Erste Ideen für agiles Arbeiten wurden bereits Mitte des letzten Jahrhunderts entwickelt. Anfang der 90er Jahre bekam die Bewegung durch die Entwicklung der Methode “Extreme Programming” einen Schub und im Jahr 2001 wurde dann schließlich mit dem Agilen Manifest der Begriff der Agilität geprägt.

Das Agile Manifest

Das Agile Manifest ist eine Sammlung von Werten und Prinzipien, die allen agilen Arbeitsweisen zugrunde liegen, um besser Software zu entwickeln.

Agile Werte

Im Agilen Manifest werden folgende Werte beschrieben:

  • Individuen und Interaktionen sind wichtiger als Prozesse und Werkzeuge.
  • Funktionierende Software ist wichtiger als umfassende Dokumentation.
  • Zusammenarbeit mit Kund:innen ist wichtiger als Vertragsverhandlungen.
  • Reaktion auf Veränderungen ist wichtiger als Befolgen eines Plans.

(Quelle)

Diese Einordnung bedeutet natürlich nicht, dass beispielsweise eine umfassende Dokumentation nicht wichtig ist. Allerdings erweisen sich die agilen Werte als wichtiger, um Software schneller und mit höherer Akzeptanz auf Seiten der Kund:innen zu entwickeln.

Agile Prinzipien

Neben den Werten liegen der agilen Softwareentwicklung diese Prinzipien zugrunde:

  • Die höchste Priorität ist es Kund:innen zufrieden zu stellen, indem wertvolle Software frühzeitig und kontinuierlich weiterentwickelt wird.
  • Sei offen für sich ändernde Anforderungen, auch wenn sie erst spät in der Entwicklung auftreten. Agile Prozesse machen Änderungen zum Wettbewerbsvorteil der Kund:innen.
  • Liefere funktionierende Software in regelmäßigen Abständen, von ein paar Wochen bis zu ein paar Monaten, wobei der kürzere Zeitrahmen zu bevorzugen ist.
  • Geschäftsleute und Entwicklende müssen während des gesamten Projekts täglich zusammenarbeiten.
  • Baue Projekte um motivierte Personen herum auf. Gib ihnen das Umfeld und die Unterstützung, die sie brauchen, und vertraue darauf, dass sie die Aufgabe erledigen.
  • Die effizienteste und effektivste Methode, Informationen an und innerhalb eines Entwicklungsteams zu übermitteln, ist das persönliche Gespräch.
  • Funktionierende Software ist der wichtigste Maßstab für den Fortschritt.
  • Agile Prozesse fördern eine nachhaltige Entwicklung. Die Auftraggebenden, Entwicklenden und Benutzenden sollten in der Lage sein ein konstantes Tempo auf unbestimmte Zeit beizubehalten.
  • Kontinuierliche Aufmerksamkeit für technische Exzellenz und gutes Design erhöht die Agilität.
  • Einfachheit – die Kunst, die Menge der nicht erledigten Arbeit zu maximieren – ist entscheidend.
  • Die besten Architekturen, Anforderungen und Designs entstehen in selbstorganisierten Teams.
  • In regelmäßigen Abständen reflektiert das Team darüber, wie es effektiver werden kann und passt dann sein Verhalten entsprechend an.

(Quelle)

Vorteil von Agilität: Größerer Nutzen für Kund:innen

Durch die Befolgung der agilen Werte und Prinzipien wird es möglich, Software besser, d.h. schneller mit höherer Kund:innenzufriedenheit, zu entwickeln. So bekommen Kund:innen Software, die genau ihren Anforderungen entspricht. Bei nicht-agilen Vorgehensweisen ist in der Regel während der Aufnahme der Anforderungen noch gar nicht klar, was wirklich benötigt wird. Das liegt daran, dass es schwierig ist, sich die Arbeit mit der fertigen Software genau vorzustellen. Oft werden sehr wichtige Anforderungen erst nach dem ersten Ausprobieren deutlich. Durch die iterative Entwicklung unter kontinuierlicher Einbeziehung von Kund:innen wird genau das erreicht.

In klassischen Vorgehensmodellen ist es nicht unüblich, dass es nach der initialen Entwicklung des beschriebenen Software eine Phase gibt, in der die Software durch Kund:innen getestet wird und Änderungswünsche aufgenommen werden, um sie dann anschließend umzusetzen. Das Problem an diesem Vorgehen ist, dass oft nur noch kosmetische Änderungen gemacht werden können, da grundlegende Änderungen zu aufwändig und damit teuer wären. Beim agilen Vorgehen werden grundlegende Änderungen in der Regel frühzeitig erkannt und Änderungen können mit weniger Aufwand umgesetzt werden.

Nachteil von Agilität: Umsetzung im Geschäftsalltag

Im B2B-Umfeld ist die größte organisatorische Herausforderung in der agilen Softwareentwicklung die agile Arbeitsweise auch im Vertragsverhältnis abzubilden. Klassische Aufträge enthalten eine konkrete Beschreibung der Leistung. Beim agilen Vorgehen ist zu Beginn jedoch gar nicht klar wie das Produkt am Ende Aussehen wird. Es gibt jedoch bereits Verträge, die dieses Problem lösen, indem Sie das Risiko der Unklarheit auf die Vertragspartner:innen verteilen.

Eine weitere Herausforderung ist, dass für den Erfolg von agil durchgeführten Projekten Kund:innen regelmäßig zur Verfügung stehen müssen, um Feedback zu geben und so die nächsten Schritte zu planen. Es kann jedoch schwierig sein ein entsprechendes Commitment von Kund:innen zu bekommen, besonders wenn sie zuvor noch nie agil gearbeitet haben. Es ist also essentiell wichtig Kund:innen auf ihre Mitwirkungspflichten hinzuweisen.

Agile Frameworks

Wie eingangs erwähnt, bestehen die Grundlagen von agiler Softwareentwicklung schon sehr lange. Deswegen ist es nicht überraschend, dass es mittlerweile auch schon eine Vielzahl von Arbeitsmodellen (Frameworks) gibt, die dabei helfen die agilen Werte und Prinzipien in den Arbeitsalltag zu überführen:

  • Scrum
  • Kanban
  • Scrumban (eine Kombination aus Scrum und Kanban)
  • XP (Extreme Programming) in Kombination mit Scrum
  • Lean Startup
  • NoEstimates

Agile Praktiken

Unabhängig davon, welches agile Framework benutzt wird, gibt es Praktiken, die die agile Softwareentwicklung unterstützen. Beispiele für Praktiken sind: