Angenommen, Sie müssen eine gesamte Anwendung mit agilen Methoden neu schreiben. Wie würden Sie dies tun?
Ich vermute, Sie könnten eine Menge User Stories schreiben, die auf dem Verhalten Ihres aktuellen Systems basieren. Und dann implementieren Sie sie in kleinen Iterationen. Aber das würde nicht bedeuten, dass wir die Anforderungen UP FRONT haben ?
Und wann würdest du mit der Veröffentlichung beginnen? Agile sagt, wir sollten früh und häufig veröffentlichen, aber es macht wenig Sinn, die Veröffentlichung vor Abschluss des vollständigen Neuschreibens durchzuführen.
Antworten:
Zerlege es in hochrangige Epen. Nehmen Sie jeden Funktionsbereich der Anwendung Schritt für Schritt vor.
Teilen Sie ein Epos in eine Gruppe von Storys auf (verwendbare Abschnitte - alles, was die Anwendung verbessert) und verwalten Sie diese wie eine vorhandene Anwendung, mit einer Ausnahme: Wenn dies möglich ist, machen Sie es so, wie Sie es möchten kann diese eine Funktionalität als Teil oder neben der ursprünglichen Anwendung implementieren.
Wenn Agilisten "früh und häufig veröffentlichen" sagen, bedeutet das nicht unbedingt für die Produktion. Wenn Sie eine vorhandene Anwendung ersetzen möchten, sollten Sie einen Staging-Bereich zum häufigen Freigeben verwenden und sicherstellen, dass Ihre Benutzer das System dort testen. Dies gibt ihnen weiterhin Raum, um die nächste Arbeit zu priorisieren und sicherzustellen, dass nichts, was Sie für die Produktion freigeben, das Produkt beeinträchtigt.
Sobald Sie eine Komponente für die Produktion freigegeben haben, fahren Sie mit der nächsten fort.
quelle
Wir haben gerade eine solche Erfahrung gemacht (ich als Scrum Product Owner). Wir haben zwei Jahre gebraucht, um zu etwas Lösbarem zu gelangen. Trotzdem brachte uns Agilität viele Vorteile.
Erstens: Ein vollständiges Umschreiben ist von Natur aus überhaupt nicht agil. Sie sollten stattdessen überlegen, das vorhandene Produkt Stück für Stück umzugestalten. Das wurde in einer anderen Frage diskutiert. Nehmen wir also an, es muss sich um ein Umschreiben handeln.
Dann beginnen Sie mit einem Backlog, das alle relevanten Anwendungsfälle des vorhandenen Produkts abdeckt. Aber bitte nähern Sie sich dem nicht, indem Sie Spezifikationen schreiben. Das wäre zu detailliert. Es sollte vollständig sein (ansonsten können Sie keine Release-Planung durchführen). Und es sollte nicht zu aufwendig sein (sonst schreiben Sie Spezifikationen im Voraus). Hier ist, wie wir das angegangen sind:
Kategorisieren Sie die Benutzer des alten Produkts. Identifizieren Sie die Benutzer, die nur einen kleinen Teil des alten Produkts benötigen und dennoch etwas Nützliches daraus machen. Sie definieren Ihre ersten Epen.
Fügen Sie dann Epics hinzu, mit denen eine andere Benutzerkategorie zum neuen Produkt wechseln kann. Usw., bis Sie ein Backlog haben, das alle Benutzer abdeckt.
Wahrscheinlich müssen diese Epen weiter gespalten werden. Wenn möglich, versuchen Sie zu teilen, damit jedes Teil noch einen Wert hat. Wenn dies nicht möglich ist, stellen Sie zumindest sicher, dass jedes Teil demonstriert werden kann.
Wenn Sie 20-50 Epen haben, lassen Sie sie vom Team schätzen.
Teilen Sie die meisten Epen in User Stories auf, die das Team innerhalb eines Sprints für machbar hält. Mach das noch nicht für alle Epen, nur für die, die oben sind. Sie haben genügend Zeit, um den Rest aufzuteilen.
Wann extern freigeben! Das ist eine Geschäftsentscheidung. Zumindest bietet Ihnen dieser Ansatz die Möglichkeit, bestimmte Benutzerkategorien früher freizugeben. Das kann praktisch sein, wenn das Management wegen dieses scheinbar nie endenden Projekts nervös wird.
quelle
A total rewrite is by nature not agile at all. You should instead consider refactoring the existing product piece by piece.
Wahreres Wort wurde noch nie gesprochen.Jetzt freigeben, wenn du kannst
Ihre Frage, wann Sie mit der Veröffentlichung des Codes beginnen, ist großartig. Ich denke, dass zwei Vorbehalte gelten. Erstens, dass Sie "gut genug Qualität" haben und zweitens, dass Sie die Anforderungen für ein MVP (Minimum Viable Product) erfüllen.
Rom (und Agile) wurden nicht an einem Tag gebaut
Vielleicht sind Sie mit einem schlüsselfertigen, agilen Team bereit, am ersten Tag zu übernehmen. Für die meisten Organisationen sind Schulungen, Umrüstungen und der übliche Formierungs-, Sturm-, Normierungs- und Leistungszyklus für die Bildung eines Teams erforderlich. Seien Sie in Bezug auf Risiken und Kosten im Voraus, achten Sie darauf, realistische Erwartungen zu setzen, und seien Sie aufgeschlossen und bereit, Ihren Ansatz zu vertreten.
Seien Sie ein Wiederverwendungs-Bootstrapper
Die Wiederverwendung von Code ist und bleibt wie die Fusionskraft die zukünftige Lösung unserer wirtschaftlichen Probleme. Ich habe das Gefühl, dass Entwickler oft sagen, sie glauben an die Wiederverwendung, aber nur an die Art der Wiederverwendung, die nach dem Erstellen eines neuen Frameworks beginnt, und nicht an die Art, in der sie auf dem aufbauen, was bereits jemand anderes getan hat. Wie kann das funktionieren, bis jemand bereit ist, auf dem Fundament eines anderen aufzubauen? Im besten Fall bedeutet dies alle paar Jahre ein Umschreiben, wenn sich die Teamführung ändert.
Warum früh und oft veröffentlichen?
Früh loslassen und oft ist aus vielen Gründen ein Mantra. Es gibt unseren Diskussionen über das, was das Produkt werden soll, Leben, wo wir sind, und es gibt uns eine Basis für iterative / inkrementelle Änderungen. Das Release-Tempo ist für Agile nahezu unveränderlich, mit dem Unterschied, wer die Releases erhält (Kundensurrogate oder Endbenutzer). Vor Agile wurde geschätzt, dass die Wartung 60% der Kosten für Softwaresysteme ausmacht. Dies ist eine Quelle großer Bestürzung für Manager und andere, von denen einige der Ansicht sind, dass bei der Produktveröffentlichung Software zum Erliegen kommt. Für sie ist alles nach der Veröffentlichung Überarbeitung und Bezahlung, um ein Produkt zu reparieren, für das sie bereits einmal bezahlt haben.
Pre-Release ist unnatürlich
Kent Beck schreibt, dass Vorabversionen für Softwareprodukte ein unnatürlicher Zustand sind. Es ist sicherlich eine unbequeme Zeit, weil Sie keine Kunden haben und für das Produkt zahlen, anstatt für Sie.
Kritisieren Sie das vorherige Team nicht
Die Entwickler, die das Redigieren als Helden und Rettungsmittel für das Projekt übernehmen, sind möglicherweise damit beauftragt, die Erfolge des vorherigen Teams zu kritisieren.
quelle
Aufgefordert durch die Kommentare von @Chuck und Verweise auf Netscape, in denen im Wesentlichen gesagt wird, dass nicht umgeschrieben wird, und gültige Antworten, in denen erwidert wird, dass er OP nicht fragt, ob er sollte. - Ein wirklich agiler Softwareentwicklungszyklus schließt ein Umschreiben aus. Das Umschreiben bricht fast immer viele der Prinzipien, die hinter Agile stehen. Unter Verwendung der aktuellen Software als Grundlage können diese Agile-Prinzipien (aus Agile Manifesto ) nicht mit einem Neuschreiben erfüllt werden.
Die Frage basiert auf einer falschen Prämisse - Dass ein Umschreiben als agil angesehen werden kann.
quelle
Überlegen Sie, ob Sie die umgeschriebene Anwendung einzeln freigeben und sie neben der alten in der Produktion haben können.
Insbesondere für Webanwendungen ist es möglicherweise recht einfach, einen einzelnen Teil der Anwendung auf eine neue Plattform zu verschieben und Ihre Routing-Anforderungen für den Lastenausgleich an das entsprechende System zu senden. Schreiben Sie dann die Geschichten auf, mit denen Sie Ihre erste Seite in Produktion bringen und diese auf agile Weise bereitstellen können.
Desktop-Anwendungen können komplizierter sein, aber es wird oft möglich sein.
Sie suchen nach Nähten - Stellen, an denen das alte System seine Aufgaben von dem neuen übernehmen kann, ohne dass eine vollständige Neufassung erforderlich ist.
Möglicherweise gibt es eine in sich geschlossene Geschäftslogik, die in einen neuen Webdienst oder ein neues Framework verschoben werden kann, und die alte App kann mithilfe dieses Codes anstelle des alten Codes geändert werden. Schneiden Sie immer wieder Stücke an den Nähten ab, bis alles, was übrig bleibt, mit einem Biss handhabbar ist.
Wenn Sie keine Nähte finden können, müssen Sie möglicherweise nach dem Big-Bang-Ansatz suchen, der in einigen anderen Antworten vorgeschlagen wird. Aber machen Sie sich auf einen langen Marsch gefasst, bevor Sie Ihr Ziel erreichen, vor allem, wenn Sie das alte System parallel weiterentwickeln müssen ...
quelle
Tatsächlich ist dies meiner Meinung nach der entscheidende Punkt - je früher Sie Teile der umgeschriebenen Anwendung in der Produktion erhalten (und im Idealfall die Funktionalität des alten Systems ersetzen), desto größer sind die Chancen, dass Ihr Projekt erfolgreich sein wird. Wenn Sie der Meinung sind, dass dies nicht viel Sinn macht, denken Sie genauer darüber nach - es gibt fast immer Möglichkeiten, Teile freizugeben.
Dies bedeutet wahrscheinlich, dass jemand etwas in der alten Anwendung ändern muss, z. B. einige neue Schnittstellen hinzufügen muss, um mit der umgeschriebenen Anwendung zu interagieren, während die Umschreibung nicht abgeschlossen ist. Aber nach meiner Erfahrung rechnet sich eine solche Zusatzarbeit immer von selbst.
Sobald die ersten Teile der neuen Anwendung in Produktion sind, wird der agile, iterative Ansatz offensichtlich. Die Anforderungen werden sich ändern, Ihre User Stories werden sich ändern oder neue Prioritäten erhalten, und Sie werden hoffentlich in kleinen Schritten mehr und mehr Funktionen des alten Systems ersetzen.
quelle