Klassische Entwicklung ist, anders als agile Softwareentwicklung, auf der Annahme aufgebaut, dass Software vollständig planerisch erfasst und in einer Umgebung ohne sich ändernde Anforderungen nach diesem Plan umgesetzt werden kann. Die klassische (Wasserfall) Softwareentwicklung basiert auf Vorausplanung und Umsetzung eines zuvor definierten Plans. Die agile Softwareentwicklung basiert auf Flexibilität und Anpassbarkeit.
Inhaltsverzeichnis
1. Agile Softwareentwicklung – Einstieg
2. Pflichtenheft oder Lastenheft für agile Softwareentwicklung?
3. Anforderungen in der Agilen Softwareentwicklung – der Nutz(en/er) im Mittelpunkt
4. Wann sind Anforderungen in der Agilen Softwareentwicklung „ready“ und wann „done“?
5. Agile Softwareentwicklung basiert auf ständiger Verbesserung
6. Tools für agile Softwareentwicklung
1. Agile Softwareentwicklung – Einstieg
In der klassischen Entwicklung werden die zuvor erarbeiteten Anforderungen dann von Ihnen als Kunde oder Ihrem Dienstleister in einem detaillierten Pflichtenheft festgehalten. Dieser Prozess ist für die Aufwandschätzung in der herkömmlichen Softwareentwicklung zwingend notwendig und dient meist als Vereinbarung bzgl dessen was im Projekt hergestellt werden soll. Das Erstellen eines Pflichtenheftes verursacht bereits erste und oft signifikante Kosten und nimmt nicht unerhebliche Zeit in Anspruch.
Zu „Agile Projects“ informiert bleiben
Nachträgliche Änderungswünsche in diesem „starren“ Konzept sind nur durch erhöhte Kosten zu bewerkstelligen, wodurch das Projekt nicht immer einen optimalen Verlauf für Sie als Kunde einnimmt – in der digitalen Welt mit ständiger Veränderung haben Wasserfallprojekte wegen ihres starren Charakters nur noch einen geringe Stellenwert bzw. finden dann Anwendung wenn WIRKLICH sicher ist, was die Software am Ende können soll, variable Anforderungen während der Entwicklungszeit als ausgeschlossen werden können (geht das wirklich??).
Die Annahme, dass man das Ergebnis eines komplexen Projekts vorab
genau beschreiben kann, hat sich in all den Jahren der Anwendung
als schlicht und einfach falsch herausgestellt.
Sicherheit durch agile Softwareentwicklung
So gehen auch im agilen Vorgehen keine Anforderungen vergessen, die später erhebliche Mehraufwände mit sich bringen.
Checklisten für Agile Anforderungen
Vergessen Sie bei komplexen Projekten keine Details, wir stellen Ihnen unsere Checklisten kostenlos zur Verfügung.2. Pflichtenheft oder Lastenheft für agile Softwareentwicklung?
Agile Softwareentwicklung funktioniert ohne ein detailliertes Pflichtenheft das zu Beginn erstellt wird, nicht jedoch ohne detaillierte Anforderungen während des Prozesses. Diese Einsparung und somit eine höhere Geschwindigkeit ist eines der Vorteile agiler Softwareentwicklung. Kunden oder Product Owner müssen nur wenige und somit die am höchsten priorisierten Anforderungen stellen, und das Projekt startet sofort in einem ersten Sprint zunächst mit der Konzeption, dem Backlog-Refinement und dann mit der Entwicklung der wichtigsten Funktionen.
Sie bestimmen dann, was als Nächstes geschehen soll und konzipieren Anforderungen in form von Epics und User Stories für den nächsten Sprint, während sich der aktuelle Sprint in der Umsetzung befindet. Diese Konzeption mit anschließender Priorisierung nennt man in der agilen Softwareentwicklung nach Scrum auch „Backlogrefinement“.
Zu „Agile Projects“ informiert bleiben
Nach jedem Schritt erhalten Sie in der agilen Softwareentwicklung ein Stück funktionierende Software, auch Inkrement genannt. Somit behalten Sie stets den Überblick und die Kontrolle über das Projekt indem Sie zu jederzeit den Fortschritt und die Performance Ihres Teams überprüfen können (und nicht erst am Ende des Projekts wie in klassischen Wasserfallprojekten).
Zurück nach oben
Checklisten für Agile Anforderungen
Vergessen Sie bei komplexen Projekten keine Details, wir stellen Ihnen unsere Checklisten kostenlos zur Verfügung.Da die wichtigsten Anforderungen zuerst entwickelt werden, kann nach kurzer Entwicklungszeit schon eine Basisversion des Systems zum Einsammeln von erstem Nutzerfeedback eingesetzt werden und mit der Zeit wächst die Software mit ihren Anforderungen – und durch das schnelle Feedback der Nutzer auch der Mehrwert für diese.
Während des Projekts werden neue oder geänderte Anforderungen definiert, weil z.B. festgestellt wurde, dass sich das Umfeld geändert hat oder dass die Anforderungen der Nutzer an das Projekt angepasst werden müssen.
Zu „Agile Projects“ informiert bleiben
Durch diesen Prozess wird nur das entwickelt, was wirklich von Nutzen ist. Die Anforderungen werden somit gemeinsam mit Anwendern und dem Projektteam während des Projektverlaufs erarbeitet, ein weiterer Vorteil agiler Softwareentwicklung, besonders in der sich schnell verändernden Welt zahlreicher Transformationen klassischer Modelle.
Diese Flexibilität, schnell auf Nutzerfeedback reagieren zu können und somit Veränderung zuzulassen und zu akzeptieren, fehlt in klassischen Softwareprojekten erheblich.
3. Anforderungen in der Agilen Softwareentwicklung – der Nutz(en/er) im Mittelpunkt
In der Agilen Softwareentwicklung, wo der Anwender im Mittelpunkt steht, werden Anforderungen aus Nutzersicht so definiert, dass diese im Sinne einer „Digital Customer Journey“ nachvollziehbar und optimalerweise schon vor der Umsetzung interaktiv zu erkunde sind. Diese bestehen meist aus:
- Personas: Eine „Beispielperson“ einer bestimmten Nutzergruppe, welche die Software nutzen soll.
- Use Cases: Die Definition von groben Anwendungsfällen einer Person in Ihrer Nutzergruppe (Personas)
- Epics: Funktionsgruppen der Software (z.B. Benutzerverwaltung, Content Management, Medienverwaltung, Navigation etc)
- User Stories: User Stories sind ein wichtiger Teil agiler Softwareentwicklung in der aus der Sicht der Nutzer Interaktionen zwischen Nutzer und Software beschrieben werden. Z.B. „Als anonymer Nutzer möchte ich ein Formular sehen, in das ich meinen Benutzernamen und mein Passwort eingebe, den „Einloggen“ Button klicke und anschließend die Software als angemeldeter Nutzer verwenden kann.“
- Wireframes: Wireframes stellen einzelne Epics und User Stories in einer Art interaktivem Prototypen dar. So können die funktionalen Anforderungen visuell verständlich dargestellt werden.
- Designs: Designs stellen die Benutzeroberfläche in der finalen Fassung dar. Meist werden die Designs erstellt, indem ein Styleguide einer Corporate Identity auf die zuvor erstellten Wireframes angewendet wird.
4. Wann sind Anforderungen in der Agilen Softwareentwicklung „ready“ und wann „done“?
• Definition of Ready: In der agilen Softwareentwicklung bestimmen Sie, wann eine Anforderung so weit ausgearbeitet ist, dass sie von einem agilen Entwicklerteam umgesetzt werden kann. Meist regelt diese Definition, dass Anforderungen in Form von User Stories, Designs und Akzeptanzkriterien vorliegen müssen um möglichst klar und eindeutig das gewünschte Resultat zu definieren.
• Definition of Done: Sie bestimmt, wann eine Anforderung wirklich fertig umgesetzt wurde. Häufig ist dies der Fall, wenn die Anforderungen auf dem Stage-System erfolgreich getestet wurden, wenn die Akzeptanzkriterien zu der Anforderung mit automatisierten Tests abgedeckt wurden, wenn die Dokumentation erstellt und die Umsetzung in der Projektmanagement-Software nachvollziehbar protokolliert wurde.
Lesen Sie auch unseren vollständigen Guide über Scrum als Methode zur agilen Softwareentwicklung.
Zurück nach oben
Zu „Agile Projects“ informiert bleiben
5. Agile Softwareentwicklung basiert auf ständiger Verbesserung
Die Vorteile agiler Softwareentwicklung können voll ausgenutzt werden, wenn Anforderungen während des Backlog Refinements klar definiert und sowohl Team, Tools und Methoden konsequent eingesetzt werden. Um Missverständnisse zu vermeiden: Es muss nicht alles von Beginn an eindeutig definiert werden, aber sehr wohl für jeden Sprint.
Anforderungen, die großen Interpretationsspielraum zulassen überlassen es dem Zufall, wie diese Lücken in den Anforderungen letztendlich während der Umsetzung in einem Sprint geschlossen werden. Wer aber möchte schon sein Produkt dem Zufall überlassen….
Neue Anforderungen, die sich während der Umsetzung oder während der Akzeptanztests mit den Nutzern ergeben, können direkt im nächsten Sprint (und nicht erst nach Fertigstellung des Projekts) umgesetzt werden, wenn diese im Product-Backlog priorisiert werden. Passen diese Anforderungen noch in den aktuellen Sprint hinein und committed sich das Team darauf, entstehen meist keine zusätzliche Aufwände und Kosten.
Zu „Agile Projects“ informiert bleiben
Alle Prozesse sind für Sie transparent, die Kosten der einzelnen Funktionen direkt ersichtlich. Diese volle Transparenz ist ein weiterer Vorteil der für agile Softwareentwicklung spricht.
Sie erleben den Entwicklungsprozess aktiv mit und haben nach jedem Sprint eine Software, mit der Sie testen, arbeiten und Feedback einholen können.
Zurück nach oben
Ein Nachteil, der von den Kunden oder Product Ownern mit einer Historie an (meist mehr oder weniger ) gut vorausgeplanten Wasserfallprojekt oft gesehen wird, ist die Unkenntnis über den Gesamtaufwand zur Fertigstellung der Software.
Erfahrungsgemäß verläuft agile Softwareentwicklung jedoch für beide Seiten viel zufriedenstellender als Projekte, die mit einem Pflichtenheft begonnen werden und am Ende ein zwar geplantes Ergebnis liefern, das aber von den Nutzern nicht angenommen wird, da diese nicht frühzeitig mit ins Projekt eingebunden wurden oder Details eben doch nicht in der Tiefe definiert wurden, wie sie im Projekt benötigt wurden.
Unerfüllte Erwartungen sind häufig die Folge. Der scheinbare Nachteil ist kein wirklicher Nachteil, da die Kosten transparent sind (man zahlt z.B. Sprintweise das, und somit genau das, was man an Mehrwert bekommt) und die Anforderungen klar durch Kosten und Mehrwert priorisiert sind.
Zu „Agile Projects“ informiert bleiben
Der Mehrwert, der in einem Sprint erarbeitet wurde, wird in agiler Softwareentwicklung meist über die Earned-Value-Methode ermittelt und die Performance des Teams über die Velocity die sich aus dem Burndown-Chart ergibt.
Auch wenn ein Festpreis oft „vermeintliche“ Sicherheit gibt, ist dies nur der Fall, wenn die Anforderungen vollständig sind und keine wesentlichen Lücken aufweisen (Achtung: Prüfen Sie ob Sie dazu wirklich in der Lage sind, ich habe in über 10 Jahren noch kein Projekt gesehen, dass das wirklich vollständig erreicht hat).
Sonst kommt es sowohl in Wasserfallprojekten als auch in der agilen Softwareentwicklung zu ungeplanten Mehraufwänden. Eine wesentlich größere Sicherheit erhalten Sie in agilen Projekten durch die Flexibilität, die Transparenz und die Möglichkeit, in jedem Sprint das umzusetzen, was wirklich wichtig ist – ganz im Sinne Ihrer Nutzer.
Zurück nach oben
Checklisten für Agile Anforderungen
Vergessen Sie bei komplexen Projekten keine Details, wir stellen Ihnen unsere Checklisten kostenlos zur Verfügung.6. Tools für agile Softwareentwicklung
Agile Softwareentwicklung lebt von der Zusammenarbeit der einzelnen Teammitglieder. Das gilt für lokale Teams genauso wie für remote Teams.
Damit der Prozess als auch das Team bestmöglich unterstützt werden, sollten Tools möglichst konsequent mit Mehrwert für das Projektteam eingesetzt werden, damit sich die Vorteile agiler Softwareentwicklung voll entfalten können und Ihr Projekt trotz hoher Flexibilität planbar wird.
Die gängigsten Tools in der agilen Softwareentwicklung sind (insbesondere in der Zusammenarbeit mit remote Teams):
- Confluence: Confluence wird als Wiki häufig zur Anforderungsdefinition und Dokumentation in agilen Projekten, meist nach Scrum, genutzt. Der Vorteil für agile Softwareentwicklung in der Nutzung zusammen mit Jira ist, dass Anforderungen (Epics als auch User Stories) direkt in Jira als Issues überführt werden können.
- Jira: Jira dient als Issue Tracker und Projektmanagementsoftware für agile Softwareentwicklung zum Verwalten des Backlogs und der Sprints. Jira ermöglicht das kollaborative Zusammenarbeiten ganzer Entwicklerteams. Zahlreiche Integrationen wie z.B. mit GIT, Confluence und anderen Tools sorgen für einen möglichst reibungslosen Prozess und Transparenz im Projektverlauf. Zeiterfassung, Planungs-Poker und Task-Management sind enthalten. Eine Alternative ist Trello oder Asana.
- Slack, Rocketchat, Zulip oder Microsoft Teams: Jedes dieser Tools bietet eine Plattform für den Austausch zwischen einzelnen Teammitgliedern. Meist sind diese Chat-Tools ebenfalls mit einem Video-Chat versehen. So ist auch das Arbeiten an verschiedenen Standorten kollaborativ und agil möglich.
- Sketch und Invision: Sketch erlaubt das schnelle erstellen von Benutzeroberflächen (UI) und Wireframes. Mit Invision verknüpfen Sie die verschiedenen Screens und erstellen so interaktive Wireframes. Über das Craft Plugin können auch Ihre Frontend-Entwickler Wireframes in Ihrer Spezifikation einfach und präzise erkunden.
7. Agile Softwareentwicklung mit virtuellen Teams
Zu den Vorteilen agiler Softwareentwicklung gehört erhöhter Mehrwert und hohe Effizienz. Durch moderne Cloudtools zur Unterstützung von agilen Projekten ist verteiltes Arbeiten in virtuellen Teams nahezu der Alltag. Hohe Transparenz und KPI-basiertes Controlling sorgen dafür, dass Erfolg planbar und messbar wird.
Zu „Agile Projects“ informiert bleiben
Damit die Qualität in Ihrer agilen Softwareentwicklung möglichst auf viele unabhängige Experten verteilt ist, empfehlen wir darauf zu achten, dass in Ihrem Team immer mindestens die folgenden Positionen mit Experten besetzt sind (hier hat es sich herausgestellt, dass fehlende Erfahrung und Qualifikation bei Teammitgliedern im Projektverlauf oft teuer bezahlt wird):
- Scrum Master: Sorgt dafür, dass das Agile Team die Prozesse, Tools und Methoden konsequent einhält und somit ein reibungsloser Projektablauf stattfinden kann, der die Vorteile agiler Softwareentwicklung voll ausnutzt.
- Product Owner: Managed das Produkt mit all seinen Features und sorgt dafür, dass ein Mehrwert für die Nutzergruppe der Software entsteht.
- Business Analyst: Nimmt die Anforderungen auf, analysiert und dokumentiert dieser in Form von Epics und User Stories.
- UI/UX Designer: Definiert die User-Experience und sorgt dafür, dass die Oberflächen einfach und intuitiv zu bedienen sind.
- Team Lead / Architect: Bestimmt die Software- und Systemarchitektur gemeinsam mit dem DevOps-Engineer und führt das Entwicklerteam.
- Backend-Entwickler: Entwickelt das Backend (wir empfehlen hier zwei Entwickler einzusetzen, um einen gegenseitigen Review-Prozess zu etablieren).
- Frontend-Entwickler: Entwickelt das Frontend (wir empfehlen hier zwei Entwickler einzusetzen, um einen gegenseitigen Review-Prozess zu etablieren).
- DevOps-Engineer: Sorgt dafür, dass die Deployment Infrastruktur als auch die gesamte Systemarchitektur reibungslos funktionieren und im Projekt flexibel erweiterbar bleiben.
- QA / Software Tester: Sorgt dafür, dass die Software eine hohe Qualität und wenige Bugs aufweist.
- QA Engineer: Für agile Softwareentwicklung, mit einer kontinuierlichen Weiterentwicklung, empfehlen wir den Einsatz automatisierter Tests. Diese werden vom QA Engineer erstellt. Somit bleibt die Software auch mit ständiger Weiterentwicklung im Verlauf stabil im Bezug auf vergangene Anforderungen. So vermeiden Sie auch, dass der Testaufwand (oder die Fehlerquote) mit fortschreitendem Projekt nicht exponentiell zunimmt.
8. Fazit
Agile Softwareentwicklung bietet größtmögliche Flexibilität und sorgt durch den passenden Einsatz von Tools und Methoden dafür, dass Ihr Produkt genau das an Funktionen erhält, was Ihre Anwender wirklich benötigen – und nicht das was irgendwann mal irgendjemand im stillen Kämmerlein geplant hat.
Zu „Agile Projects“ informiert bleiben
Häufiges Feedback durch Ihre Nutzer sorgt dafür, dass Sie Ihre Zielgruppe als auch Ihr Produkt noch besser verstehen lernen.
Achtung: Agil heißt nicht planlos.
Anforderungen, die in einem Sprint umgesetzt werden sollen müssen sehr wohl klar definiert sein. Dann werden Sie sehen, wie Sie durch Flexibilität, Transparenz und Geschwindigkeit in Agilen Projekten einen deutlich höheren Mehrwert generieren als in klassischen Wasserfallprojekten.
Zurück nach oben