Die agile Entwicklung folgt einem inkrementellen Modell, das die Zusammenarbeit innerhalb eines Teams, kontinuierliche Planung sowie die fortlaufende Entwicklung und den Lernprozess fördert. Agile Methoden folgen dem Software Development Cycle – Planung, Ausführung und Fertigstellung – sodass die Software in Phasen entwickelt werden kann. Dies macht es einfacher, Bugs zu identifizieren und zu beseitigen.
Der Hauptvorteil von agilen Methoden ist nicht nur die schnelle Softwareentwicklung, sondern auch die ständige Weitergabe von wertschöpfenden Leistungen an den Kunden, da die Lieferungen schrittweise erfolgen.
Es gibt unzählige Methoden, die einem agile Framework folgen. In diesem Blogbeitrag zeigen wir fünf der beliebtesten agilen Methoden sowie die Vor- und Nachteile für die Softwareentwicklung auf.
1. Scrum
Scrum ist zweifellos das meist verwendete agile Framework. Scrum zeichnet sich durch Entwicklungszyklen bzw. -phasen aus, die auch als Sprints bezeichnet werden, sowie durch die Maximierung der Entwicklungszeiten für ein Softwareprodukt. Das Framework wird normalerweise für die Softwareentwicklung eingesetzt, kann jedoch auch in einem erweiterten geschäftlichen Kontext verwendet werden.
Jeden Tag finden 15-minütige Meetings – daily Scrums – statt, um Aktivitäten für den Arbeitstag zu planen.
2. Adaptive Software Development
Adaptive Software Development (ASD), zu Deutsch: adaptive Softwareentwicklung, ist ein agiles Softwareentwicklungs-Framework, das von den Projektmanagern John Highsmith und Sam Bayer in den frühen 90er Jahren entwickelt wurde. Hierbei handelt es sich um eine iterative Weiterentwicklung des Rapid Application Development Frameworks, das für 1-monatige Projekte entwickelt wurde, die in wöchentliche Perioden aufgeteilt werden (vergleichbar mit Scrum Sprints).
ASD legt besonderen Wert auf Benutzer-Feedback und Zusammenarbeit, um zukünftige Iterationen im Softwareentwicklungsprozess zu planen.
ASD basiert auf der Annahme, dass komplexe Systeme wie die Softwareentwicklung keine komplexen Regelwerke benötigen, wie oft angenommen wird.
3. Kanban
Das Wort Kanban stammt aus dem Japanischen und ist eng mit dem „Just in Time“ Konzept verbunden. Die Kanban-Methode wird traditionell auf einer Tafel oder einem Tisch (Kanban-Board) ausgeführt, das in verschiedene Spalten unterteilt ist, die den genauen Ablauf der Softwareproduktion aufzeigen. Im Laufe eines Entwicklungsprojekts ändern sich die in der Tabelle enthaltenen Informationen. Wenn neue Aufgaben hinzukommen, wird eine neue „Karte“ erstellt.
Die Kanban-Methode erfordert Kommunikation und Transparenz, sodass die Mitglieder eines Teams zu jeder Zeit genau wissen, in welchem Stadium sich die Entwicklung befindet.
4. Extreme Programming (XP)
Extreme Programming ist ein typisches agiles Entwicklungs-Framework, das von Kent Beck entwickelt wurde und von Entwicklungsfirmen anhand verschiedener Parameter angepasst werden kann. Es handelt sich um eine Methodik, die Werte wie Kommunikation, Einfachheit, Feedback, Courage und Respekt betont. Hierbei wird die Kundenzufriedenheit über alles andere gestellt. Die Methodik vertraut auf die Entwickler, da diese dazu motiviert werden, Änderungen der Kundenanforderungen umzusetzen, selbst wenn diese in einem späteren Zeitpunkt des Entwicklungszyklus geäußert werden.
Teamwork ist in XP ebenfalls extrem wichtig; wenn ein Problem besteht, wird es vom gesamten Team aus Managern, Entwicklern oder Kunden gelöst. Alle sind wichtige Projektteilnehmer, wodurch ein gutes Umfeld für hohe Produktivität und Effizienz geschaffen wird. Beim Extreme Programming wird die Software vom ersten Tag an getestet und Rückmeldungen werden zeitnahe umgesetzt.
5. Lean Development
Lean Development ist eine Methodik, die auf Toyotas Lean Manufacturing basiert und in der Softwareentwicklung Verwendung findet. Die Methodik bietet ein Rahmenkonzept und folgt Werten, Prinzipien und Entwicklungspraktiken, die für einen agilen Entwicklungsansatz angewendet werden können.
Hierbei gibt es sieben Hauptprinzipien: Löschung aller unwesentlichen Faktoren (alles, was keinen Mehrwert zum Projekt beiträgt, wird gelöscht); Qualitätsentwicklung (Qualität in der Entwicklung erfordert Disziplin und Kontrolle von Rückständen); Wissensschaffung (das Team ist motiviert, die gesamte Infrastruktur zu dokumentieren, um diese auch später beizubehalten); unterschiedliche Verpflichtungen (das Team wird ermutigt, sich nicht auf die Planung zu konzentrieren oder Ideen ohne ein vorheriges und vollständiges Verständnis der Unternehmensanforderungen zu entwickeln); schnelle Umsetzung (dem Kunden so schnell wie möglich einen Mehrwert liefern); das Team respektieren (Kommunikation und Konflikt-Management sind zwei wesentliche Faktoren); Gesamtoptimierung (die Entwicklungssequenz muss perfektioniert werden, um Fehler im Code löschen zu können, sodass konstant ein Mehrwert geliefert wird).