TL; DR
User Stories dienen dazu zu dokumentieren, welcher Wert dem Produkt hinzugefügt werden soll und warum. Implementierungsdetails (z. B. wie der Wert hinzugefügt, getestet, gemessen oder validiert werden soll) werden durch die Story eingeschränkt, sind jedoch nicht in ihnen enthalten. Sie werden bewusst als separate Artefakte belassen, um Flexibilität und Beweglichkeit innerhalb des Frameworks zu gewährleisten.
Die Spezifikationen und Implementierungsdetails werden am häufigsten in anderen Artefakten erfasst, z. B. in Skripten und Szenarien für Acceptance-Test Driven Development (ATDD), Test Driven Development (TDD) und Behavior-Driven Development (BDD). Diese speziellen Artefakte werden vom Scrum-Framework nicht vorgeschrieben, aber sie bieten Ihnen sicherlich einen guten Ausgangspunkt, wenn Sie nicht bereits über andere effektive Prozesssteuerungen verfügen.
Anwenderberichte sind keine Spezifikationen
Das Originalplakat (OP) stellte folgende Frage :
[A] Kunde möchte eine unterschiedliche Verarbeitung für unterschiedliche Kreditkarten, es gibt strenge Anforderungen, die implementiert und bekannt sein müssen, damit Testfälle geschrieben werden können ... WO SOLLTE ICH ES SETZEN, WENN ES NICHT IN DER GESCHICHTE STEHT?
Eine User Story ist ein Feature , das Wert liefert , einen Kontext für die Gespräche über die Implementierung bietet und eine Sichtweise, die an einen Value Consumer gebunden ist, der von dem Wert profitiert, den das Feature liefert.
Der springende Punkt einer User Story ist, dass die Implementierungsdetails keine Vorgabe sind. Dem Team steht es frei, die Funktion so zu implementieren, dass der identifizierte Wert im entsprechenden Kontext an den Wertkonsumenten geliefert wird.
Ein gelungenes Beispiel
Eine Beispiel-User Story
Dies lässt sich leichter erklären, wenn Sie mit weniger mehrdeutigen User Stories beginnen. Da das OP keine verwertbare User Story zur Verfügung stellte, die der INVEST-Mnemonik folgt , werde ich eine zum Zwecke eines Beispiels erfinden. Betrachten Sie die folgende Geschichte:
Als Benutzer, der es vorzieht, mit Discover-Karte zu bezahlen,
möchte ich die Option, meine Einkäufe mit der Discover-Karte zu tätigen,
damit ich nicht auf Visa, Mastercard oder American Express beschränkt bin.
Dies bietet ein konkretes Feature, bietet einen Kontext, der die Implementierungsentscheidungen des Teams leiten kann, und identifiziert den Value Consumer als Discover-Card-Kunden. Das ist kein Pflichtenheft, aber es ist das, was Sie brauchen, um mit dem Kunden und dem Team die richtigen Gespräche darüber zu führen, wie die Story während einer Entwicklungsiteration am besten umgesetzt werden kann.
Analyse und Implementierung
Die tatsächliche Umsetzung liegt beim Team. Das Team muss einige Analysen durchführen, um Folgendes zu bestimmen:
- Der einfachste Weg, eine neue Funktion zu implementieren.
- Welche der verschiedenen Implementierungsoptionen lässt sich in Zukunft am einfachsten unterstützen, ohne dass technische Schulden anfallen.
- So wenden Sie die Open-Closed- und YAGNI-Prinzipien an, um sicherzustellen, dass Ihre neue Funktion robust ist, ohne überarbeitet zu werden.
Eines der Kernprinzipien des Agilen Manifests ist die Zusammenarbeit mit Kunden. Von einem funktionsübergreifenden, selbstorganisierenden Team wird erwartet , dass es in der Lage ist, mit dem Kunden zusammenzuarbeiten, um die Implementierungsdetails innerhalb der von der User Story bereitgestellten Richtlinien zu erarbeiten.
Wenn Ihre User Stories nicht gut geschrieben sind oder wenn das Team nicht über die Fähigkeiten oder die Prozessreife verfügt, um die für das agile Framework erforderliche Analyse durchzuführen, ist dies offensichtlich viel schwieriger als erforderlich. Es wurden ganze Bücher zum Thema geschrieben, wie man gute User Stories auf der richtigen Granularitätsebene erstellt. Es gibt leider keine Silberkugel, aber es ist eine erlernbare Fähigkeit für agile Teams.
Testgetriebenes und verhaltensgetriebenes Design
Der beste Weg, um sicherzustellen, dass die Analyse solide ist und die Implementierung sowohl vernünftig als auch unterstützbar ist, ist die Verwendung von TDD- und BDD-Praktiken. In Anbetracht der obigen Geschichte sollte das Team die geplante Implementierung beispielsweise durch Artefakte erfassen:
Gurken-Features mit testbaren Szenarien.
Dies ist am nützlichsten, um die Entwicklung von Abnahmetests voranzutreiben und die Benutzererwartungen hinsichtlich des Anwendungsverhaltens zu dokumentieren . Zum Beispiel sollte die User Story eine oder mehrere verwandte Cucumber-Funktionen enthalten, die beschreiben, wie der Benutzer mit einer Discover-Karte auschecken kann und wie dieser Vorgang für den Benutzer aussieht.
RSpec-Tests, die das Verhalten (nicht die internen Implementierungsdetails) neuer Codefunktionen überprüfen .
Dies ist am nützlichsten, um das beabsichtigte Verhalten der Funktion in der Anwendung zu dokumentieren und zu validieren. In der User Story werden beispielsweise Unit- und Integrationstests erstellt, die sicherstellen, dass die Verwendung einer Discover-Karte das kartenspezifische Verhalten hervorruft, das die Anwendung benötigt, um einen Verkauf über das Payment Gateway zu autorisieren.
Die spezifischen Tools spielen keine Rolle. Wenn Sie Cucumber oder RSpec nicht mögen, verwenden Sie die Tools oder Methoden, die für Ihr Team am besten geeignet sind. Der Punkt ist jedoch, dass die Implementierungsdetails auf der User Story basieren , aber nicht von dieser vorgegeben werden . Stattdessen handelt es sich bei der Implementierung (oder bei den Spezifikationen, wenn Sie dies vorziehen) um Details, die während der Entwicklung des Features auf kollaborative Weise ausgearbeitet werden.