Wie verfolgen Sie ein Anforderungsdokument in einem agilen Team?


22

Ich verstehe, dass User Stories die agile Welt beherrschen, aber wie werden diese Artefakte gespeichert, damit neue Entwickler, die dem Team beitreten, die Anforderungen erfüllen können?

Was passiert, wenn sich die User Story später ändert? Wie wird sie aktualisiert und als Artefakt aufbewahrt? Ich habe gesehen, dass viele Teams einfach ein neues Ticket / eine neue Feature-Anfrage / einen neuen Bug-Report geöffnet haben, anstatt die ursprüngliche Story zu verfolgen.


1
Die beste Dokumentation ist Arbeitscode
Robert Wagner

Antworten:


11

Zunächst einmal entspricht fast nichts in der Antwort von @ DXM meiner Erfahrung mit Agile und insbesondere nicht mit Scrum.

Das Agile Manifest besagt, dass umfassende Dokumentation zwar wertvoll ist, funktionierende Software jedoch MEHR wert ist. Dokumentation ist also sicherlich keine schlechte Sache, aber sie sollte der Erstellung von funktionierender Software wirklich dienlich sein.

Individuen und Interaktionen über Prozesse und Werkzeuge

Arbeitssoftware über umfangreiche Dokumentation

Zusammenarbeit der Kunden bei Vertragsverhandlungen

Reagieren, um nach einem Plan umzuschalten

Das heißt, während die Gegenstände auf der rechten Seite einen Wert haben, schätzen wir die Gegenstände auf der linken Seite mehr.

Jedes Detail festzunageln, bevor mit dem Code begonnen wird, hat sich immer wieder als verschwenderisch erwiesen. Daher wird die Dokumentation in der Regel JIT-gerecht (just in time) behandelt. Das heißt, Sie dokumentieren, was Sie tatsächlich codieren werden.

Eine der gängigen Methoden für Scrum ist die Verwendung von User Stories, die vom Product Owner verwaltet und im Product Backlog gespeichert werden. Das Product Backlog ist eine ziemlich allgemeine Liste aller Dinge, die eine Lösung tun muss, und eine User Story ist im Allgemeinen eine gut dimensionierte Methode, um jede Sache auf der Liste zu beschreiben. User Stories sind nicht obligatorisch, aber sie scheinen eine gute Möglichkeit zu sein, die Details nicht zu übertreiben und stattdessen die Zusammenarbeit zu inspirieren.

Wenn eine Story fertig ist - das Team hat etwas erstellt, getestet und bereitgestellt, das die Akzeptanzkriterien erfüllt -, wird die Story nicht als GEGRIFFEN gekennzeichnet, sondern einfach als erledigt im Backlog markiert -, sodass der Backlog Hinweise enthält von dem, was in jedem Sprint gemacht wurde - Geschichten und die damit verbundenen Punkte. Dies ermöglicht Ihnen die Berechnung der Geschwindigkeit und ist eine wertvolle Dokumentation für sich.

Alles in allem ist eine User Story möglicherweise die gesamte Dokumentation, die zum Verstehen einer Anforderung erforderlich ist. Wahrscheinlicher ist es jedoch, eine Unterhaltung zwischen dem Kunden und dem Entwicklungsteam zu generieren. Aus diesem Grund können Sie im Zusammenhang mit dieser Konversation eine beliebige Anzahl von Aktionen ausführen. Wenn es sich um eine persönliche Ad-hoc-Sache handelt, wie dies häufig der Fall ist, können (und je nach Organisation sollten) die Analysten / Entwickler die getroffenen Entscheidungen aufschreiben und sie irgendwo speichern, z. B. in einem Wiki oder einem Dokumentationsspeicher. Wenn es sich um eine E-Mail-Unterhaltung handelt, können Sie die E-Mails speichern. Wenn es sich um eine Whiteboard-Sitzung handelt, machen Sie mit Ihrem Handy ein Foto des Boards und speichern Sie es. Der springende Punkt ist, dass diese Dinge Ihnen helfen, den Code fertigzustellen, und Ihnen möglicherweise später helfen können, wenn Sie herausfinden müssen, wie oder warum Sie es so gemacht haben, wie Sie es getan haben.

Eine andere Methode, Anforderungen zu erfassen, besteht darin, sie sofort in Testfälle einzubetten (worauf DXM meiner Meinung nach hinausläuft). Dies kann sehr effizient sein, da Sie ohnehin für jede Anforderung einen Test durchführen müssen. In diesem Fall können Sie Ihre Anforderungen effektiv in Ihrem Test-Tool speichern.

Wenn eine Story fertiggestellt (und akzeptiert) ist und der Benutzer seine Anforderungen ändert, müssen Sie wahrscheinlich eine neue Story erstellen. Wenn Sie ein Wiki für Ihre Dokumentation verwenden, können Sie die neue Geschichte wieder mit dem Original verknüpfen und diese ursprüngliche Geschichte ebenfalls mit dem neuen Material verknüpfen, sodass jemand, der sie ansieht, weiß, dass sich die Dinge geändert haben. Das ist das Schöne an Wikis - es ist einfach und ziemlich schmerzlos, Dinge zu verlinken. Wenn Sie den testgetriebenen Ansatz verwenden, aktualisieren Sie entweder den Testfall, um mit der Änderung fertig zu werden, oder erstellen neue Testfälle für die neue Story, wenn sich Alt und Neu nicht gegenseitig ausschließen.

Am Ende kommt es darauf an, was Sie brauchen. Wenn die Leute schnell auf den neuesten Stand gebracht werden sollen, ist es wahrscheinlich eine gute Idee, ein Onboarding-Dokument zu schreiben, um ihnen zu helfen. Lass das also jemand machen. Wie ich bereits erwähnt habe, sind Wikis ein großartiges Werkzeug, um diese Art von Dingen beizubehalten. Sie können also auch Atlassians Lösungen in Betracht ziehen , die das Confluence-Wiki mit Jira und Greenhopper integrieren, um Ihre Geschichten / Aufgaben / Fehler zu verfolgen und Ihr Projekt im Allgemeinen zu verwalten. Es gibt noch viele andere Tools zur Auswahl.


Es wäre hilfreich, in Ihrer Antwort ein genaues Zitat anzugeben.
EL Yusubov

@ElYusubov Welches genaue Zitat? Das Agile Manifest?
Matthew Flynn

@Mathew, ich habe die Zitate hinzugefügt, auf die verwiesen wurde.
EL Yusubov

@MatthewFlynn: Die meisten meiner Informationen stammen nicht aus persönlicher Erfahrung, sondern aus dem Lesen einer ganzen Reihe von Büchern und Blogs zur agilen Entwicklung. Wenn Sie möchten, kann ich Ihnen die Liste geben, damit Sie sie alle lesen können kann Notizen vergleichen. Meine persönliche Erfahrung war auch Gedränge. In meiner vorherigen Firma haben wir 5 Veröffentlichungen mit Scrum gemacht und 4 davon sind überhaupt nicht gut gelaufen. Die Gefahr bei einem Unternehmen, das einfach "Scrum" macht, besteht darin, dass die meisten Unternehmen "Scrum-but" - oder "Cargo-Cult" -Agile betreiben. Unsere Gruppe hat das sicherlich eine ganze Weile gemacht. Und ja, wir hatten Rückstände ...
DXM

1
@DXM - Ich hatte auch gemischte Ergebnisse mit Scrum, aber es war noch nie schlechter als mit herkömmlichem SDLC und hat ein paar Mal ausgezeichnet funktioniert.
Matthew Flynn

8

[Update Nr. 1] Wie @MatthewFlynn hervorhob, unterscheidet sich seine Erfahrung mit agilen und vielen anderen (einschließlich meiner) sehr von der Antwort, die ich hier gebe. Die Antwort hier basiert auf meinen Beobachtungen darüber, was in der Vergangenheit in meinem eigenen Team funktioniert hat und was nicht, kombiniert mit vielen Büchern und Blogs, die ich zu diesem Thema gelesen habe ...

Der größte Teil der Bemühungen um eine agile Entwicklung zielt darauf ab, Anforderungsdokumente zu eliminieren.

Agile versucht, die meisten Dokumentationen zu beseitigen, und ich stimme ihren Vorstellungen zu, aber von allen Dokumenten haben die Anforderungen bei weitem das größte Ziel. Der Grund dafür (IMO) ist, dass Anforderungsdokumente am weitesten vom tatsächlichen Arbeitscode und von allen Dokumenten entfernt sind, die sie ausmachen

  • am wenigsten genau
  • am schwierigsten zu pflegen
  • am wenigsten nützlich

Agile ersetzt Anforderungsdokumente durch einen Rückstau von Storys, die angeben, woran Sie als Nächstes arbeiten sollen. In der Regel stehen Elemente mit der höchsten Priorität und dem größten Erfolg (sowohl aktuelle als auch zukünftige) an erster Stelle in dieser Liste.

Ein Rückstand sollte jedoch nicht mit einem Anforderungsdokument verwechselt werden:

  • In einem Backlog sollten nur N Storys mit Details gefüllt sein. Je weiter eine Story entfernt ist, desto weniger Details sollten Sie hinzufügen (dh verschwenden Sie keine Zeit damit, etwas zu definieren, das ein halbes Jahr lang nicht passieren wird ).
  • Über einen bestimmten Punkt hinaus sollten "Anforderungs" -Elemente nicht einmal in einen Rückstand aufgenommen werden, wenn sie mehr als zwei Veröffentlichungszyklen (auch als potenzielle Lieferinkremente (PSI) bezeichnet) überschritten wurden. Selbst wenn Sie wissen, dass die Anforderung wichtig ist und irgendwann erledigt werden muss, sollten Sie der Versuchung widerstehen, sie dem Rückstand hinzuzufügen. Wenn es wirklich wichtig ist, wird sich jemand in der nächsten Version daran erinnern. Wenn sich niemand daran erinnert, liegt es höchstwahrscheinlich daran, dass es doch nicht so wichtig war.

Sobald eine Story abgeschlossen ist, wird diese Story aus dem Backlog entfernt und CHUCKED (1) . Auch hier sind Geschichten keine Anforderungen. Sie teilen dem Team NUR mit, woran es als nächstes arbeiten soll. Sie sind nicht für historische Aufzeichnungen.

Im richtigen, agilen Prozess sollte ein Teil dieser Lieferung jedoch bei jeder Lieferung von Arbeit aus Einheits-, Integrations- und Abnahmetests bestehen. Diese Tests sind sehr wertvoll, weil sie viele Zwecke haben. Ich werde nicht auf die vollständige Liste eingehen, aber einer dieser Zwecke ist die Dokumentation für Ihre aktuelle Produktionssoftware.

Ein Test dokumentiert, wie sich die Software bei bestimmten Eingaben und Voraussetzungen verhalten soll. Außerdem wird dokumentiert, wie öffentliche (und interne) APIs Ihres Codes verwendet werden. Es dient auch als Sicherheitsnetz, damit ein Fehler sofort beim Einchecken erkannt wird, wenn ein neuer Entwickler in ein Team eintritt und versehentlich etwas kaputtmacht.

Ein agiler Prozess fördert natürlich die Nutzung automatisierter Komponententests, aber wir alle wissen, dass nicht jedes einzelne Element automatisiert werden kann. Ihre Software-Suite enthält immer eine Reihe von Tests, die manuell ausgeführt werden müssen. A) Ihre Entwickler sollten jedoch aktiv daran arbeiten, so viel wie möglich zu automatisieren, und b) Ihr QA-Team sollte regelmäßig manuelle Tests durchführen, damit etwaige Funktionsstörungen so schnell wie möglich entdeckt werden.


(1) - Da ich mehrere Antworten für den "chucked" Teil bekommen habe. In den fünf Jahren, seit ich zu Agile gewechselt bin, hat mein Team nie eine einzige Geschichte weggeworfen, auch nicht 30% der geplanten, dann zurückgestellten und dann vergessenen. Mein Chef wollte sie "als Referenz" behalten und doch hat noch niemand eine dieser Geschichten angeschaut.

Menschen sind im Allgemeinen an ihre Daten gebunden, und ich weiß, dass es schwierig ist, etwas wegzuwerfen, wenn Sie es bereits haben, aber Inventar (ob physisch oder elektronisch) ist nicht kostenlos und je mehr ich darüber nachdenke, desto mehr bin ich einverstanden mit dem "chucking". Dies ist aus "Agile Softwareanforderungen: Lean-Anforderungspraktiken für Teams, Programme und das Unternehmen" (S.190) - "User Stories können nach der Implementierung sicher verworfen werden. Das hält sie leicht, hält sie teamfreundlich und sicher." fördert die Verhandlung, aber Akzeptanztests bleiben für die gesamte Laufzeit der Anwendung bestehen ... "


+1, um den OP auf den Unterschied zwischen Anforderungen und User Stories hinzuweisen.
Frank

Ich möchte nur hinzufügen, dass mein Team und frühere Teams keine Story "chuckers" waren. Wir behalten sie als Referenz.
Simon Whitehead

@SimonWhitehead: Da Sie nicht der einzige waren, der diesen Kommentar abgegeben hat, habe ich meine Antwort aktualisiert. Mein Team hat auch nie eine einzige Geschichte weggeworfen. Wie oft mussten Sie in der Vergangenheit zwei Jahre lang nach diesen alten Geschichten suchen? Und welche Art von Informationen hast du von ihnen bekommen. Wie war das Detail Ihrer Geschichten im Vergleich zu dem, was Bob Martin ( books.google.com/… ) beschreibt (insbesondere Abschnitt 3 unter User Stories)? Nur neugierig, haben Ihre Geschichten gesprochen oder haben Sie tatsächlich ALLE Anforderungen erfasst?
DXM

... mein Team hat immer alles behalten, aber wir hatten nicht einmal Details in unseren Geschichten, deshalb verstehe ich immer noch nicht, welchen Wert diese Geschichten hatten, aber wie viele andere auch, mein Chef war sehr entschlossen, nichts rauszuwerfen.
DXM

Die Akzeptanztests, von denen Sie sprechen, klingen für mich wie dokumentierte Testfälle? Habe ich recht oder handelt es sich um laufende Tests?
Didier A.

1

Was passiert, wenn sich die User Story später ändert? Wie wird sie aktualisiert und als Artefakt aufbewahrt? Ich habe gesehen, dass viele Teams einfach ein neues Ticket / eine neue Feature-Anfrage / einen neuen Bug-Report geöffnet haben, anstatt die ursprüngliche Story zu verfolgen.

Das Verwalten von Dokumentationen kann schwierig sein, unabhängig davon, ob Sie agile Storys oder ein Big-Up-Front-Dokument verwenden. Um die Belastung zu verringern, sollte die Dokumentation minimal sein und schrittweise aktualisiert werden, um dem Aufwand für Tests und Implementierung zu entsprechen. Wie das OP jedoch angedeutet hat, besteht bei einer einfachen Aktualisierung der Dokumentation die Gefahr, dass die Historie der Entwicklung der Software im Laufe der Zeit verloren geht.

Ist das wirklich wichtig? Manchmal kann es sein. Zum größten Teil möchten Sie nur die Storys / UML / whatever zusammen mit den Tests und dem Code selbst zum gegenwärtigen Zeitpunkt anzeigen. Wenn jedoch Fragen dahingehend auftauchen, warum ein Feature auf eine bestimmte Weise implementiert wurde, kann dies häufig der Fall sein Es ist nützlich, die Historie zu betrachten, um zu sehen, wie sich das Feature im Laufe der Zeit verändert hat, und ein klareres Bild darüber zu zeichnen, warum Implementierungsoption X anstelle von Option Y gewählt wurde .

Es gibt verschiedene Möglichkeiten, solche Artefakte im Auge zu behalten. Eine der besseren Möglichkeiten besteht darin, Ihre Storys in einem Tool zu speichern, mit dem Sie Ihren Story-Text auf ähnliche Weise wie die Versionierung Ihres Quellcodes versionieren können. Wikis sind in der Regel sehr gut darin, ebenso wie einige der Tools für das Projekt- / Issue-Management wie Trac oder Redminedie den Änderungsverlauf der Probleme selbst sowie der Wiki-Seiten in diesen Systemen aufzeichnen. Dies kann jedoch noch etwas weiter vorangetrieben werden, um die Nachverfolgung von Änderungen von Problem zu Feature zu verbessern, indem sichergestellt wird, dass neue Storys oder Issues in irgendeiner Weise mit älteren verwandten Issues und Storys verknüpft sind. Dies kann so einfach sein wie das Hinzufügen einer älteren Ausgabe / Story-ID zum Text einer neueren Ausgabe / Story, kann jedoch erheblich verbessert werden, indem alle Ausgaben oder Story-IDs in den Check-in-Kommentar aufgenommen werden, wenn Sie eine Änderung an Ihrem Versionskontrollsystem vornehmen . Diese Methode ist jedoch von größtem Wert, wenn Ihre Aufträge häufig und auf eine einzelne Story oder ein einzelnes Problem beschränkt sind.

Die größte Schwierigkeit besteht natürlich darin, dass diese Art des Ansatzes von jedem Teammitglied sorgfältige Aufmerksamkeit und die Verpflichtung erfordert, konsequent zu sein, seine Verpflichtungen klein und häufig zu halten und für diejenigen, die die Storys und / oder Problem- / Projektverfolgungssysteme verwalten, einzuhalten zusätzlich zu den Artefakten, die Verknüpfungen zwischen dem aktuellen Stand Ihrer Implementierung und allen zuvor vorgenommenen Änderungen herstellen.


1

Es wurde bereits gesagt, aber ich denke, das Wesentliche ist Folgendes:

  • Anforderungen können viele Facetten abdecken und in der Regel mehr als eine Geschichte ergeben.

  • Eine Story organisiert die Arbeit eines Teams in Stücken, die klein genug sind, um in die Zeitgrenzen eines Sprints zu passen.

  • Häufig müssen viele Details definiert werden, damit eine bestimmte Funktion ordnungsgemäß funktioniert. Dies ist der Zeitpunkt, an dem es sinnvoll wird, diese Definitionen in einem separaten Anforderungsdokument aufzubewahren - zur Klarheit, zum allgemeinen Verständnis und zum späteren Nachschlagen.

Betrachten Sie das legendäre Beispiel für eine Online-Zoohandlung:

  • Die Geschichte könnte lauten: "Als Benutzer möchte ich die Mehrwertsteuer auf meiner Quittung sehen, ...". Jetzt kann die Berechnung der Mehrwertsteuer eine komplizierte Angelegenheit sein und erfordert wahrscheinlich mehr Arbeit, als diese Geschichte nahelegt.
  • Es kann eine zusätzliche Geschichte geben, in der nach der Berechnung der Mehrwertsteuer gefragt wird (z. B. den Gesamtumsatz mit dem Mehrwertsteuersatz multiplizieren ), die jedoch wahrscheinlich nicht alle Variationen dieser Berechnung enthält.
  • Zunächst konzentrierte sich das Team darauf, das Grundmodul bereitzustellen, beispielsweise eine Liste der Waren und deren Verkaufspreis zu erstellen und den Mehrwertsteuerbetrag zurückzugeben. Das kann ein Team innerhalb eines Sprints erreichen.
  • Es wird wahrscheinlich noch viel mehr Geschichten geben, um alle möglichen Fälle für die Berechnung der Mehrwertsteuer abzudecken.
  • Um die vielen verschiedenen Regeln zur Berechnung der Mehrwertsteuer über einzelne Sprints hinweg sichtbar zu halten, ist es sinnvoll, ein separates Anforderungsdokument zu führen, in dem alle Möglichkeiten zur Berechnung der Mehrwertsteuer aufgeführt sind. Dieses Dokument kann sich im Laufe der Zeit weiterentwickeln. Tatsächlich könnte das Hinzufügen eines neuen Abschnitts zu diesem Teil der Aufgabe einer Geschichte sein.

Es hört sich so an, als würden Sie sich mit @Matthew Flynn abstimmen, da das Anforderungsdokument während der Entwicklung geschrieben wird und eher als Dokumentation für die tatsächliche Arbeitsweise des Codes dient als als eine vorläufige Liste der Anforderungen.
Didier A.

"... mitgeschrieben" - das klingt mir zu laisser faire. Zur Verdeutlichung sind Anforderungen kein Nebenprodukt, sondern eine Voraussetzung für eine effiziente Implementierung. In einem agilen Projekt werden Anforderungen jedoch nur bis zu dem Grad geschrieben, der für die Implementierung der nächsten Entwicklungsrunde erforderlich ist, und nicht mehr. Das Formular dafür ist eine User Story, deren Umfang per Definition begrenzt ist, sodass die für die Implementierung erforderliche Zeit in einen Sprint passt. Vergleichen Sie dies mit Wasserfallprojekten, bei denen die Anforderungen bis ins kleinste Detail festgelegt werden, bevor Sie mit der nächsten Phase fortfahren.
Miraculixx

Es ist unklar, weil Sie sagen, dass Anforderungen nicht mit User Stories übereinstimmen, denen ich zustimme. Ich betrachte Anforderungen als die genauen Details der Geschäftslogik, die eher dem Wie ähnelt, während die User Story der gewünschte Zustand ist, der eher dem Was ähnelt. Also bin ich mir nicht sicher, ob ich deinen Kommentar verstehe? In Ihrem Beispiel scheinen Sie die unterschiedlichen Mehrwertsteuerbedingungen zu erfassen, wenn sie einzeln und nicht auf einmal geliefert werden.
Didier A.

IMHO, wenn eine Anforderung, wie eine User Story, keinen gewünschten Status angibt, bin ich mir nicht sicher, wozu sie dient. Tatsächlich würde es im VAT-Beispiel mehrere User Stories geben, die nacheinander spezifiziert und in nachfolgenden Sprints ausgeliefert werden. Um sicher zu sein, dass keine agile Methode ein Team daran hindert, alle Regeln zur Berechnung der Mehrwertsteuer an einem Ort zu dokumentieren, wird lediglich die Idee beworben, dass es keinen Sinn macht, Zeit im Voraus zu investieren, um vollständig detaillierte, umfassende Anforderungen für die Einfachen zu erstellen Grund, warum das Entwicklerteam sowieso nicht in der Lage sein wird, alles auf einmal zu implementieren.
miraculixx

Ich bin immer noch verwirrt. Der erste Punkt in Ihrer Antwort ist, dass eine User Story nicht mit einer Anforderung übereinstimmt. Sagen Sie, dass Sie zu Beginn jedes Sprints ein anderes Dokument schreiben lassen würden, das die Anforderungen für den bevorstehenden Sprint erfasst?
Didier A.

0

Mit freemind können Sie die Liste der Funktionen zusammenstellen. Wie das geht, erfahren Sie in diesem Tutorial (irgendwo in der Mitte).

Wenn Sie eine Liste von Funktionen haben, schreiben Sie User Stories. Dies kann mithilfe einer einfachen Textdatei oder eines Word-Dokuments oder mithilfe eines komplexen Tools wie eines agilen Management-Tools erfolgen .

Wenn Sie mit User Stories fertig sind, werden diese priorisiert. Später werden aus den User Stories Aufgaben erstellt, Aufgaben übernommen und im Code implementiert.

All dies zeigt, wie ac # project von Anfang an im Herbst agiler Video-Cast-Serien verwaltet wird .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.