Kürzlich entdeckte Anforderungen in Scrum

Wenn eine Anforderung während eines Projekts oder sogar später entdeckt wird, können die Kosten für die Implementierung dieser Anforderung sehr hoch sein.

Das Scrum schlägt vor, dass wir nur die obersten PBIs des Product Backlogs verfeinern sollten. Die anderen PBIs werden nicht verfeinert, und daher werden die Anforderungen in Bezug auf diese PBIs spät in der Projektausführung entdeckt.

Wie geht Scrum hier vor?

„Wenn eine Anforderung mitten im Projekt oder sogar später entdeckt wird, dann ist der Aufwand für die Umsetzung dieser Anforderung sehr hoch.“ - Zitat erforderlich.
Haben Sie ein Beispiel für eine spät entdeckte Anforderung, die sich als sehr teuer herausstellt? Wenn es wichtig ist, ist es normalerweise auf dem Radar, wenn es teuer/komplex ist, steht es ganz oben im Rückstand, und wenn es wichtig, komplex und zuvor unbekannt ist, handelt es sich um eine externe Änderung, die ein vorgefertigter Plan ebenfalls nicht berücksichtigt hätte. Ihre Erfahrung mag variieren, aber dies würde besser mit klareren Beispielen beantwortet, denke ich.
Eine Änderung, die alle vorherigen Arbeiten ungültig macht, kann versunkene Kosten darstellen, aber bei Scrum nicht mehr als bei einem Projekt, das auf umfassender Vorausplanung basiert. Iterative und JIT-Planung vermeiden (oder begrenzen zumindest) große versunkene Kosten, daher denke ich, dass Ihre Frage auf einer falschen Prämisse basiert.
@Erik Ist das nicht der Sinn von Scrum? Es wird äußere Veränderungen geben, die unbekannt sind. Der vorgefertigte Plan würde sie offensichtlich nicht berücksichtigen. Da Scrum keinen vorgefertigten Plan oder festen Umfang + Zeit hat, fügen Sie die neue Anforderung einfach in der Reihenfolge ihrer Priorität in das Backlog ein. Wann immer Sie entscheiden, dass Sie genug zum Freigeben haben, geben Sie frei. Wenn Sie die neue Anforderung vorher erledigt haben, dann wurden wahrscheinlich einige andere Dinge mit niedrigerer Priorität nicht fertig ... kein Problem, es hatte eine niedrigere Priorität und es stellte sich heraus, dass es für die Veröffentlichung nicht erforderlich war.
... Insbesondere wenn Sie mit einem großen Plan im Voraus beginnen, könnte es verlockend sein, teure/komplexe Elemente ganz oben im Rückstand zu platzieren, anstatt nur nach Priorität zu sortieren. Aber vielleicht verbringen Sie eine Menge Zeit damit, an diesem teuren/komplexen Gegenstand zu arbeiten, und es stellt sich heraus, dass er eine niedrigere Priorität hatte als 10 andere einfache Gegenstände. Wenn Sie die 10 einfachen+wichtigen Artikel gemacht und dann gesagt hätten, wie lange es für den teuren Artikel dauern würde, würde sich der Product Owner vielleicht das Produkt ansehen und entscheiden, dass es zumindest für die Erstveröffentlichung bereits gut genug ist.
@Erik Ein Beispiel könnte sein, dass Sie feststellen müssen, dass Sie eine Oracle-Datenbank anstelle von MSSQL verwenden müssen, da der (wichtige) interne Kunde vergessen hat, Ihnen dies mitzuteilen.
@lalala das sollte auf keinen Fall nach dem ersten Sprint Review kommen.
@Erik und wenn ja? Oder sagen wir, das Top-Management hat einen neuen Rahmenvertrag mit O unterzeichnet, während der MS nicht verlängert wurde.
Das ist keine Anforderung, die gemäß der Frage "entdeckt" wurde, sondern eine auferlegte. Es ist eine andere Frage und die Antwort lautet im Grunde "das wird ungefähr so ​​​​kostspielig sein, wie Sie es in jedem System erwarten würden".

Antworten (4)

Wenn eine Anforderung während eines Projekts oder sogar später entdeckt wird, können die Kosten für die Implementierung dieser Anforderung sehr hoch sein.

In dieser Aussage sagen Sie, dass die Kosten für Änderungen hoch sind (insbesondere spät in einem Projekt).

Der agile Ansatz erkennt an, dass Veränderungen stattfinden, und versucht daher, die Kosten der Veränderung zu reduzieren .

Dies ist der grundlegende Unterschied zwischen dem agilen Vorgehen und der traditionellen Entwicklung:

Traditionelle Entwicklung : Lassen Sie uns wirklich gut darin werden, vorherzusagen, was passieren wird (gut planen)

Agile Entwicklung : Lassen Sie uns wirklich gut darin werden, auf Veränderungen zu reagieren (gut reagieren)

„Gut planen“ vs. „Gut reagieren“. In der Tat. Es ist erwähnenswert, dass die Natur der Softwareentwicklung normalerweise nicht mit einem planbasierten Ansatz zusammenspielt, egal wie gut Sie planen.

Priorisierung, Continuous Delivery und Review sind der Weg, das Lieferrisiko für jede Softwareentwicklung zu kontrollieren, nicht nur bei der Verwendung von Scrum. Dem ersten Satz Ihrer Frage kann ich jedoch nicht zustimmen. Wenn die Arbeit klug geordnet wird, kommt die wichtigste und riskanteste oder teuerste Arbeit normalerweise zuerst, sodass die Kosten für unerwartete Arbeiten im Laufe der Zeit eher sinken als steigen sollten. Ein erfahrenes Team wird auch versuchen, für eine frühzeitige Verfeinerung alle Elemente zu identifizieren, die weitreichende Auswirkungen auf die Architektur haben oder viele Abhängigkeiten aufweisen.

Keine Methode bietet eine Garantie gegen das Unerwartete, aber Continuous Delivery hilft, böse Überraschungen zu vermeiden, indem das Produkt frühzeitig und häufig getestet wird. Dies ist normalerweise eine viel zuverlässigere Methode, als sich allein auf eine frühzeitige Analyse zu verlassen, um Probleme zu identifizieren.

Das Problem ist, dass, wenn die PBI nicht verfeinert wird, es schwer zu sagen ist, ob sie riskant ist oder nicht, ob sie eine architektonische Auswirkung erfordert oder nicht.
Sie haben recht, dass es riskant ist, im Vorfeld zu wenig zu analysieren. Es besteht auch das Risiko, zu viele Analysen durchzuführen, wenn dadurch das Testen und die Lieferung übermäßig verzögert werden. Ihr Team ist am besten in der Lage zu beurteilen, wo die richtige Balance gefunden werden muss.

Du sagst:

Wenn eine Anforderung während eines Projekts oder sogar später entdeckt wird, können die Kosten für die Implementierung dieser Anforderung sehr hoch sein.

Dies kann wahr oder falsch sein. Das hängt von der Art der Änderung ab, auf die Sie sich beziehen . Ich nehme eine große Veränderung an, oder etwas, das auf eine wichtige Weise fehlt, oder etwas, das in irgendeiner Weise von dem abweicht, was Sie bis zu diesem Punkt aufgebaut haben. Wenn dies der Fall ist, dann ja, der Wechsel kann teuer werden. Wenn es nur eine Anforderung wie andere ähnliche ist, wird die Implementierung wahrscheinlich nicht so hoch sein.

Die Art und Weise, wie Sie diesen ersten Satz und den Rest der Frage formuliert haben, impliziert, dass Sie einen prädiktiven Ansatz verwenden oder einen traditionellen Ansatz, bei dem Sie zu Beginn Anforderungen sammeln und dann einen Plan erstellen, den Sie dann implementieren können. Nur so kann man von „der Mitte des Projekts“ sprechen.

Wenn Sie das Produkt beispielsweise agil entwickeln, wissen Sie nicht, dass Sie sich mitten im Projekt befinden, weil Sie sich auf die Bereitstellung von Werten konzentrieren und nicht auf Zeitpläne, die Ihnen sagen, wo Sie sich im Projekt befinden. Dies bedeutet jedoch nicht, dass die Verwendung von Agile oder Scrum garantiert, dass eine Anforderung spät in der Entwicklung kostengünstig zu implementieren ist. Wenn Sie ein weißes Flugzeug bauen und irgendwann feststellen, dass Sie ein U-Boot brauchen, können Sie nicht einfach seine Flügel abhacken, es schwarz anstreichen und es fertig nennen. Diese Art von Änderung wird Ihre Implementierung durcheinander bringen, egal ob Sie einen traditionellen oder einen agilen Ansatz verwenden.

Agile ermöglicht es Ihnen jedoch, früher herauszufinden, dass Sie ein U-Boot anstelle eines Flugzeugs benötigen , da Sie inkrementell und iterativ Dinge bauen, zu denen Sie Feedback sammeln und lernen können, was benötigt wird, anstatt davon auszugehen, dass Sie es tun alles von Anfang an wissen und es in Anforderungen spezifizieren, die sich nicht ändern oder in irgendeiner Weise fehlen. Wie bereits in den anderen Antworten erwähnt, ist der agile Ansatz anders und verringert die Chancen, etwas zu entdecken, dessen Implementierung irgendwann wirklich sehr teuer sein kann.

Aus sequenzieller Sicht ist die Idee, dass eine Anforderung, die später im Projekt entdeckt wird, wahrscheinlich teurer zu erfüllen. In ähnlicher Weise ist ein Fehler, der spät nach der Entstehung entdeckt wird, wahrscheinlich auch teurer. Das liegt daran, wie viel Arbeit geleistet wird. Bedenken Sie, dass Sie bei Bemühungen, die mit sequentiellen Methoden ausgeführt werden, versuchen, alle Anforderungen frühzeitig zu ermitteln. Anschließend erstellen Sie eine Architektur und ein Design, die alle diese Anforderungen erfüllen. Anschließend setzen Sie das gewählte Design um. Eine Änderung, insbesondere eine neue Anforderung oder eine Änderung an einer bestehenden Anforderung, erfordert die Analyse des gesamten Anforderungssatzes auf Probleme und Konflikte, dann die Analyse und Aktualisierung der Architektur und des Designs, dann die Aktualisierung der Implementierung und schließlich die Tests. Änderungen ziehen sich durch jede Phase des Lebenszyklus und alle damit verbundenen Artefakte.

Scrum und die meisten anderen agilen Methoden verfolgen einen anderen Ansatz. Es gibt gerade genug Architektur und Design, um die bekannten Anforderungen zu unterstützen. Das System wird im Laufe der Zeit weiterentwickelt, um neuen oder geänderten Anforderungen gerecht zu werden. Das bedeutet nicht, dass eine radikal andere Anforderung keine große Menge an Nacharbeit verursacht, aber das Risiko wird reduziert. Indem Sie schrittweise aufbauen und Feedback erhalten, um das zu bauen, was als das Wichtigste als nächstes wahrgenommen wird, werden die Chancen auf etwas, das sehr wichtig, aber auch sehr schwierig zu implementieren ist, verringert. Jegliche Überarbeitung wird auf die bereits gebauten Teile des Systems beschränkt sein, anstatt sich durch viele Phasen der Entwicklung zu ziehen.

Ich möchte auch hinzufügen, dass mit zunehmender Komplexität die Kosten für die Änderung der Funktionalität des Systems kostspieliger werden. Die Verwendung von inkrementellem Design, die einfache Gestaltung des Designs (denken Sie an Prinzipien wie KISS und YAGNI ) und die frühzeitige Tilgung technischer Schulden können zukünftige Änderungen weniger kostspielig machen. Die vorhandene Komplexität sollte sich mehr in Richtung essentieller Komplexität verschieben als in zufällige Komplexität.