Werden in einem nach Scrum organisierten Entwicklungsprozess die Anforderungen in Form von User Stories beschrieben, stehen diese für einzelne Features bzw. Aufgabenpakete mit Mehrwert für den User. Betrachtet man jedoch die ganze Palette von Anforderungen, die ein Anwender an sein Softwareprodukt stellt, so fällt auf, dass die nicht-funktionalen Anforderungen nicht als User Stories formuliert werden. Wie kann man aber eben diese wichtigen Anforderungen, die nicht 1-zu-1 auf Features runter gebrochen werden können, in die Anforderungsdokumentation in Form von User Stories in Scrum verorten?
Damit nicht-funktionale Anforderungen messbar umgesetzt werden können, müssen diese vorher in quantifizierbare Einheiten zerlegt werden. Zum Beispiel gibt es die nicht-funktionale Anforderung „Die Anwendung soll performant sein“, welche ohne weiteres nie auf Erfüllung geprüft werden kann. Die Beurteilung würde dann nicht anhand objektiver Kriterien sonder subjektiv erfolgen. Damit aber eine objektive Bewertung erfolgen kann, muss die noch sehr abstrakte Anforderung in quantifizierbare Teilanforderungen zerlegt werden. Dem entsprechend könnten aus der oben genannten Anforderung folgende Teilanforderungen hervorgehen:
- Die Antwortzeit bei einer Datenabfrage soll auf dem Referenzsystemen in weniger als 200 ms erfolgen.
- Auf Aktionen des Nutzers soll innerhalb von 200 ms auf dem Referenzsystemen eine Reaktion angezeigt werden.
- Der Start der Anwendung soll auf den Referenzsystemen nicht länger als drei Sekunden dauern.
Diese beispielhaften und sicherlich nicht vollständigen Teilanforderungen verhalten sich zu der eigentlichen Anforderung genauso wie User Stories zu Epics. Während der Kunde hauptsächlich eine performante Software möchte („Als Anwender möchte ich eine performante Anwendung haben, damit ich schnell und ohne Wartezeit meine Arbeiten erledigen kann.“), gilt es diese für die vertragliche Basis in messbare Eigenschaften zu zerlegen. Diese zerlegten Teilanforderungen müssen letztlich irgendwie in die Formulierung von User Stories einfließen. In der Definition of Done können die quantifizierbaren Teilanforderungen, sofern sie verallgemeinerbar sind (z.B. „Alle Datenabfragen müssen unter 300 ms ausgeführt werden“, „Alle Inhalte müssen semantisch ausgezeichnet sein“, etc.), aufgeführt werden. Ein großer Vorteil der User Stories liegt jedoch in der Diskussion zwischen Entwicklerteam und Product Owner. Daher erscheint es sinnvoll, dass diese Teilanforderungen in ähnlicher Art verfasst werden. Dies ermöglicht des Weiteren ein besseres Verständnis für den Mehrwert der Anforderung auf Nutzerseite durch die Begründung („damit ich schnell und ohne Wartezeit meine Arbeiten erledigen kann“). Da in der Regel die Fachexpertise über das technisch Machbare beim Entwicklerteam liegt, der Product Owner aber für den wirtschaftlichen Erfolg des Projekts (oder Produkts) verantwortlich ist, hilft die Diskussion ein, im Spannungsfeld zwischen Aufwand und Nutzen, optimales Erzeugnis zu schaffen. Neben der Machbarkeit im Verhältnis zum Aufwand können auch weitere Punkte, wie beispielsweise die Behandlung von Grenzfällen, geklärt werden. Die Diskussion ermöglicht dadurch eine Vervollständigung der Teilanforderungen, zumindest wenn ein offener Dialog geführt wird.
Eine User Story zur Abstimmung einer nicht-funktionalen Anforderung könnte wie folgt aussehen:
User Story
Als Anwender möchte ich eine performante Anwendung haben, damit ich schnell und ohne Wartezeit meine Arbeiten erledigen kann.
Akzeptanzkriterien
- Die Antwortzeit bei einer Datenabfrage soll auf dem Referenzsystemen in weniger als 200 ms erfolgen.
- Auf Aktionen des Nutzers soll innerhalb von 200 ms auf dem Referenzsystemen eine Reaktion angezeigt werden.
- Der Start der Anwendung soll auf den Referenzsystemen nicht länger als drei Sekunden dauern.
Da diese Anforderungen jedoch bei vielen einzelnen User Stories integriert sein werden, ist der Aufwand für die Realisierung nicht einfach zu schätzen. Die Schätzung in Form von Story Points scheint schlichtweg nicht möglich, da diese User Stories immer erfüllt werden müssen und in die Schätzungen der User Stories für funktionale Anforderungen einfließen. Sind die nicht-funktionalen Anforderungen jedoch in dieser Form aufgeführt und besprochen, können sie als Anhang oder durch ihre Akzeptanzkriterien direkt zur Definition of Done hinzugefügt werden. Wird die Anzahl der nicht-funktionalen Anforderungen übersichtlich gehalten, können die User Stories mitsamt der Definition of Done ausgehangen werden. Natürlich empfiehlt es sich dann auch, wie bei der Definition of Done üblich, diese von Zeit zu Zeit zu überprüfen und auf die veränderten Gegebenheiten eines Projekts oder Produktumfelds hin zu aktualisieren.
Abschließend ist ein großer Vorteil von separaten User Stories für nicht-funktionale Anforderungen, dass sich die Anforderungen nicht mehr in den normalen User Stories verstecken, sondern an einer zentralen Stelle definiert sind. Dadurch werden sie nicht übersehen, zumindest nicht, wenn die Definition of Done regelmässig geprüft wird. Daher ein klares Ja für nicht-funktionale Anforderungen als User Stories!
0 Kommentare