Agile Softwareentwicklung bezeichnet Ansätze im Softwareentwicklungsprozess, die Transparenz und Flexibilität erhöhen und durch kurze Arbeitszyklen zu einem schnelleren Einsatz der entwickelten Systeme führen sollen.
Statt ein Softwareprojekt von Anfang bis Ende vollständig durchzuplanen, arbeiten agile Teams in kurzen, sich wiederholenden Zyklen: Nach jedem Zyklus liegt ein funktionierendes Stück Software vor, das mit Kundinnen und Kunden besprochen und bei Bedarf angepasst wird. So lassen sich Fehlentwicklungen früh erkennen, und Änderungswünsche können auch spät im Projekt noch berücksichtigt werden, statt erst am Ende sichtbar zu werden.
Grundlage ist das 2001 veröffentlichte Manifest für agile Softwareentwicklung mit vier Werten und zwölf Prinzipien, die funktionierende Software, enge Zusammenarbeit mit den Auftraggebenden, direkte Kommunikation und das Reagieren auf Veränderung über starre Prozesse und Pläne stellen. In der Praxis wird die Arbeit in kurze, meist ein- bis vierwöchige Zeitabschnitte unterteilt, an deren Ende jeweils ein auslieferbares Teilergebnis steht; regelmäßige Rückblicke im Team dienen dazu, die eigene Arbeitsweise fortlaufend zu verbessern. Bekannte konkrete Ausprägungen agiler Softwareentwicklung sind etwa Scrum, Kanban oder Extreme Programming.
Ein Entwicklungsteam plant ein neues Online-Formular nicht in allen Details vorab, sondern liefert nach zwei Wochen eine erste, einfache Version aus. Anhand des Feedbacks der Nutzenden entscheidet das Team, welche Funktionen im nächsten Zweiwochenzyklus ergänzt oder verändert werden.
Agile Softwareentwicklung wird eingesetzt, um Projekte mit unklaren oder sich ändernden Anforderungen zu bewältigen, Risiken durch frühes, wiederholtes Testen zu verringern und Kundinnen und Kunden kontinuierlich in die Entwicklung einzubeziehen, statt sie nur am Projektende mit dem Ergebnis zu konfrontieren.
Agile Softwareentwicklung bedeutet nicht das Fehlen jeder Planung oder Dokumentation; formale Grundlagen bleiben notwendig, werden aber bewusst schlank gehalten, um Beweglichkeit zu erhalten. Häufig wird außerdem übersehen, dass die Einführung einzelner agiler Praktiken wie kurzer Teambesprechungen allein noch keine agile Softwareentwicklung ausmacht, wenn Planung und Entscheidungswege im Projekt im Kern weiterhin starr bleiben.
Nicht zu verwechseln mit Continuous Integration: Continuous Integration ist eine technische Praxis des häufigen, automatisierten Zusammenführens und Testens von Code, die in agilen Projekten oft eingesetzt wird, aber auch unabhängig davon möglich ist. Ebenfalls abzugrenzen ist Softwaretest: Softwaretest prüft die Qualität eines konkreten Softwareprodukts, agile Softwareentwicklung ist dagegen ein übergeordnetes Vorgehensmodell für den gesamten Entwicklungsprozess, in das Softwaretests eingebettet sind.