Was ist die agile Softwareentwicklung?
Agile Softwareentwicklung ist ein Ansatz zur Entwicklung von Software, bei dem sich die Arbeit in kurze Zyklen, Sprints, gliedert.
Diese flexible und iterative Entwicklungsmethode bietet viele Vorteile und sorgt unter anderem auch dafür, dass die Softwareerstellung effizienter und effektiver wird.
Für Unternehmen bedeutet der iterativer und inkrementelle Ansatz in der agilen Softwareentwicklung mehr Flexibilität und eine kontinuierliche Verbesserung ihrer Produkte. Agile Methoden ermöglichen es Unternehmen, ihre Prozesse zu automatisieren und schneller auf Markttrends zu reagieren.
Sie erhalten zudem früher Einsichten in Benutzererfahrung und -feedback, um ihre Produkte stetig zu verbessern. Darüber hinaus können agile Teams besser miteinander koordinieren und unterstützen sowie interdisziplinäre Zusammenarbeit fördern.
Der agile Softwareentwicklungsprozess ist kein einzelner Prozess oder eine einzelne Methode, sondern vielmehr eine Reihe von Werten und Prinzipien, die die Entwicklung von Software auf agile Weise leiten.
Die 4 Werte der agilen Softwareentwicklung
Vor über 20 Jahren wurde das agile Manifest geboren, welches auch heute noch als die Grundlage der Definition von Agilität dient.
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:
Es gibt vier Werte, die den agilen Softwareentwicklungsprozess leiten:
- 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
Was bedeutet das nun konkret?
Prozesse und Werkzeuge unterstützen die Menschen bei ihrer Arbeit, und nicht umgekehrt. Wenn die eingesetzten Prozesse und Werkzeuge nicht ideal funktionieren, so werden diese geändert bzw. ausgetauscht und nicht die Arbeitsweise der handelnden Personen an diese angeglichen.
Bei Dokumentationen gilt es, den Umfang und die generelle Notwendigkeit abzuwägen. Die Dokumentation ist wichtig, aber der Schwerpunkt sollte auf der Erstellung funktionierender Software liegen, die den Anforderungen des Kunden entspricht. Letztlich kommt es darauf an, dass die programmierten Lösungen für die AnwenderInnen selbsterklärend sind.
Gemeinsame Flexibilität verhindert, dass Produkte entwickelt werden, die zum Projektende keine Marktrelevanz haben. Umfassende Pflichtenhefte sollen Sicherheit bieten, sind aber bei komplexen Produkten kein geeignetes Arbeits- und Vertragsinstrument. Denn die Lösung wird erst im Laufe der Ausarbeitung konkret. Agile Verträge orientieren sich an Sprints, bei denen Inkremente - releasebare (Teil-)Resultate - geliefert werden.
Wenn Veränderung die einzige Konstante ist, ist es essenziell, die Planung flexibel zu halten, sodass rasch und unkompliziert auf Veränderung eingegangen werden kann. Im Scrum Framework gibt es dazu mehrere Planungsebenen. Die Releaseplanung liefert ein grobes „Big Picture“, das in mehrere Sprints unterteilt ist. Beim Sprint Planning ist der Planungshorizont auf 14 Tage (im Falle von 2-wöchigen Sprints) ausgerichtet.
Die 12 Prinzipien der agilen Softwareentwicklung
Zusätzlich zu den 4 Werten gibt es 12 Prinzipien, die den agilen Softwareentwicklungsprozess leiten:
- Kundenzufriedenheit ist die höchste Priorität
- Begrüßen Sie Änderungen, auch spät in der Entwicklung
- Liefern Sie häufig funktionierende Software, alle 2-4 Wochen
- Enge Zusammenarbeit zwischen Fachexperten und EntwicklerInnen
- Projekte sollten um motivierte Personen herum aufgebaut werden
- Gespräche von Angesicht zu Angesicht sind der beste Weg zu kommunizieren
- Funktionierende Software ist das wichtigste Maß für den Fortschritt
- Nachhaltige Entwicklung, die über lange Zeiträume hinweg beibehalten werden kann
- Legen Sie kontinuierlich Aufmerksamkeit auf technische Exzellenz und gutes Design
- Einfachheit, die Kunst, die Menge an nicht getaner Arbeit zu maximieren
- Selbstorganisierende Teams, die selbstständig Entscheidungen treffen können
- Reflektieren Sie als Team regelmäßig darüber, wie sie effektiver werden können und passen Sie sich entsprechend an
Diese Grundsätze wurden gewählt, um die Bedeutung von Kundenzufriedenheit, funktionierender Software, Zusammenarbeit und Einfachheit zu unterstreichen. Sie betonen auch die Notwendigkeit flexibler Teams, die selbstständig Entscheidungen treffen können.
Methoden der agilen Softwareentwicklung
Einige der bekanntesten agilen Methoden sind Scrum, Kanban und Extreme Programming (XP).
- Scrum ist ein Rahmenwerk für die agile Entwicklung von Softwareprojekten. Es ist ein Prozess, der es Teams ermöglicht, schnell und flexibel auf Veränderungen zu reagieren und Produkte iterativ und inkrementell zu entwickeln. Scrum nutzt eine selbstorganisierende und interdisziplinäre Teamstruktur, um Projekte erfolgreich umzusetzen und etabliert einen kontinuierlichen Verbesserungsprozess.
- Kanban ist eine Methode zur Visualisierung und Organisation von Arbeitsabläufen und zur Nachverfolgung der Fortschritte in Softwareentwicklungs-Teams. Ein typischer Kanban-Workflow besteht aus mehreren Schritten. Diese Schritte können in simpler Form in folgende Sektionen gegliedert werden: "To Do", "In Progress" und "Completed".
- XP umfasst eine Reihe von Praktiken und stellt das laufende Feedback der AnwenderInnen auf allen Ebenen zur kontinuierlichen Anpassung und Verbesserung von Prozessen und Techniken in den Mittelpunkt, mit dem Ziel schnellere und qualitativ hochwertigere Ergebnisse zu erzielen.
Weitere agile Praktiken wie Test Driven Development (TDD), Continuous Integration (CI) oder Pair Programming sollten nach Best Practice in agilen Softwareentwicklungs-Projekten angewendet werden.
Vor- und Nachteile der agilen Softwareentwicklung
Wann agile und wann klassische Entwicklung nach Wasserfall?
Auf die Frage ob Wasserfall oder Softwareentwicklung nach Scrum gibt es keine einfache Antwort, da das Vorgehen von der Art der Problemstellung abhängt. Es kann also nicht pauschal beantwortet werden, welche Ansätze besser oder schlechter sind, sondern es kommt auf den Einzelfall an.
Einige Projekte können von einem agilen Ansatz profitieren, während andere besser für die klassische Entwicklung geeignet sind. Es ist wichtig, die Bedürfnisse des Projekts, des Kunden und des Teams zu bewerten, bevor Sie sich entscheiden, welchen Ansatz Sie wählen.
Agile Methoden eignen sich für komplexe (im Gegensatz zu einfachen, komplizierten und chaotischen) Problem- bzw. Aufgabenstellung, siehe auch Stacey Matrix. Sie eignen sich in Projekten, in denen Anforderungen und Lösungswege nicht abschließend festlegbar und die Marktbedingungen durch eine hohe Dynamik gekennzeichnet sind. Außerdem ist das Verhalten der UserInnen nicht eindeutig prognostizierbar und einige Wirkungszusammenhänge sind unklar.
Die klassische Entwicklung nach Wasserfall ist für Projekte mit einfachen und komplizierten Aufgabenstellungen geeignet. Das Wasserfallmodell geht in seiner reinen Form davon aus, dass mit dem Beginn der Umsetzungsphase (also nach den typischen Phasen Spezifikation, Analyse und Design) bereits alles, was für die Umsetzung relevant ist, bekannt ist. Daher eignet es sich eher für Projekte, in denen es sehr unwahrscheinlich ist, dass es Änderungen geben wird und dass das Verhalten der UserInnen weitestgehend vorhersehbar ist.
Beide Ansätze haben ihre eigenen Stärken und Schwächen, daher ist es wichtig, denjenigen zu wählen, der für das jeweilige Projekt am besten geeignet ist.
Agile Entwicklung in der Praxis
Im Kern von agiler Softwareentwicklung steht ein iteratives, inkrementelles Vorgehen, das die KundInnen bzw. die (zukünftigen) AnwenderInnen durch laufendes Feedback einbezieht und somit den Kundennutzen als auch den Geschäftswert des Produktes maximiert. Es kann sichergestellt werden, dass ein werthaltiges Produkt frühzeitig verfügbar ist, auch wenn sich Anforderungen ändern sollten.
Durch die Arbeit in nahtlos aufeinander folgenden Sprints, die in der Regel alle 2-4 Wochen stattfinden, werden jeweils die höchst priorisierten Elemente des Product Backlogs, die User Stories, gemäß der „Definition of Done“ umgesetzt und an den Kunden geliefert.
Während der Entwicklung werden Vision und Ziele im Blick behalten, jedoch nur die unmittelbar nächsten Anforderungen im Detail betrachtet.
Das iterative Vorgehen erlaubt es, Details auch später, noch während der Umsetzung, zu ändern und die Erkenntnisse aus den vorangegangenen Sprint Review Meetings in den Sprint Plannings der Zukunft einfließen zu lassen. Darüber hinaus unterstützt das agile Vorgehen in der Softwareentwicklung die Fähigkeit, sich nur mit jenen Details zu beschäftigen, die auch Geschäftswert erzeugen.
Einige Tipps für die Umsetzung der agilen Entwicklung:
- Verwenden Sie kurze Iterationen, um früh und häufig Feedback zu erhalten
- Konzentrieren Sie sich darauf, funktionierende Software zu liefern
- Akzeptieren Sie Veränderungen und seien Sie offen für neue Ideen
- Arbeiten Sie eng mit KundInnen und Interessengruppen zusammen
- Organisieren Sie sich selbst in crossfunktionalen Teams
- Streben Sie nach kontinuierlicher Verbesserung und
- Machen Sie keine Kompromisse bei der Softwarequalität, technical debt ist ein No-Go
Wann und wo wir den agilen Prozess anwenden
In unseren Entwicklungsprojekten setzen wir eine Mischform von Lean Principles, Scrum und XP sowie agile Skalierungsframeworks ein. Agile Praktiken wie testgetriebene Entwicklung, kontinuierliche Integration, Pair Programming, etc. sind bei uns eine Selbstverständlichkeit.
Als führender Dienstleister im Bereich agiler Softwareentwicklung war es für uns allerdings von Anfang an klar, dass es nicht ausreichend sein wird, wenn lediglich unsere Softwareentwicklungs-Teams agil arbeiten.
Um die volle Wirkung des Scrum Frameworks in der Zusammenarbeit mit unseren Kunden entfalten zu können, braucht es einen organisatorischen Rahmen, der eine konsequente Ausrichtung nach den agilen Werten und Prinzipien der Gesamtorganisation ermöglicht.
Die organisatorische Verankerung eines unternehmensweiten kontinuierlichen Verbesserungsprozesses (KVP) in für uns ein zentraler Aspekt und in einem zunehmend komplexer werdenden Umfeld essenziell.
Die kontinuierliche Verbesserung braucht natürlich auch eine Orientierung durch ein sinnstiftendes Mission-Statement und eine mittel- bis langfristige Vision. Mitarbeiterzufriedenheit und Kundenzufriedenheit spielen dabei eine zentrale Rolle.
Gemäß dem Anspruch – “being agile over doing agile” – haben wir das Scrum Framework in einen agilen organisatorischen Rahmen eingebettet.
Einige Beispiele dafür:
- Objectives and Key Results (OKR)
- Agiles Manifest
- Servant bzw. agile Leadership
- Flache Hierarchien
- Autonome Teams, auch organisatorisch
Praxisbeispiel: Success Story Österreichische Post
Mit unserem Kunden der österreichische Post haben wir in einem agilen Prozess erfolgreich das Post KartenStudio der österreichischen Post als Hybrid App für Android, iOS und Web entwickelt. Die Hybrid App ermöglicht die individuelle Gestaltung von Post- und Grußkarten mit der Option für personalisierten Massenversand im B2B Kontext. Da die App sowohl über das iPhone, Android als auch im Web benutzt werden kann, profitieren UserInnen von intuitiver Handhabung, zahlreicher neuer Features und top User Experience.
Ein Team von 7 agilen SoftwareentwicklerInnen hat in enger Zusammenarbeit mit einem IT-Projektmanager und einem Product Owner der Post den Arbeitsaufwand in User Stories geschätzt und in 2-wöchigen Sprints geplant. Das komplette Projekt wurde, wie es bei Objectbay Standard ist, mit Scrum und einem agilen Mindset vonseiten der EntwicklerInnen umgesetzt. Neben Dailies, Refinements, Sprint Plannings und Reviews gab es auch regelmäßige Retrospektiven, die allesamt zum ersten Mal vollständig remote (bedingt durch die Corona-Krise) stattgefunden haben.