Problemstellung:
Gegeben:
- TFS als Quellcodeverwaltung
- Schwere Desktop-Client-Anwendung mit Tonnen von Legacy-Code mit schlechtem oder fast fehlendem Architekturdesign.
- Kunden, die ständig neue Funktionen mit Klangqualität, schneller
Lieferung und ständiger Beschwerde über eine benutzerunfreundliche Benutzeroberfläche benötigen .
Problem:
Die Anwendung erfordert zweifellos ein tiefgreifendes Refactoring. Dieser Prozess macht die Anwendung unweigerlich instabil und es ist eine spezielle Stabilisierungsphase erforderlich.
Wir haben versucht:
Refactoring im Master mit periodischen Zusammenführungen vom Master (MB) zum Feature Branch (FB). (mein Fehler) Ergebnis: Viele instabile Zweige.
Was uns geraten wird:
Link zum Artikel (pdf)
Erstellen Sie einen zusätzlichen Zweig für das Refactoring (RB), der regelmäßig durch Zusammenführen von MB zu RB mit MB synchronisiert wird. Nachdem sich RB stabilisiert hat, ersetzen wir Master durch RB und erstellen einen neuen Zweig für das weitere Refactoring. Das ist der Plan. Aber hier erwarte ich die Hölle, MB mit RB zusammenzuführen, nachdem ich einen FB mit MB zusammengeführt habe.
Der Hauptvorteil: Meistens stabiler Meister.
Gibt es bessere Alternativen zu den Verfahren?
quelle
Antworten:
Ich hatte in der Vergangenheit eine ähnliche Situation. Was ich getan habe:
mit dem Kunden sprechen; Ich weiß nicht, was Ihr Manager sagt, aber ich denke, es ist wichtig, mit dem Kunden zu sprechen und offen zu sein. Er muss wissen, dass Sie an der Qualität seines Produkts arbeiten. Ich habe eine Vereinbarung für einen Release-Plan getroffen:
In der Phase des Zusammenführens der beiden Lösungen (Erstellen der Architektur + Wiederverwenden von Funktionen aus dem alten Projekt) wurden die einzigen freigegebenen Dinge (neue Funktionen) für das alte Produkt erstellt. Neuerscheinungen enthielten jedoch nur wichtige Fehlerkorrekturen. Es wurden also nur sehr wenige Veröffentlichungen für das alte Produkt gemacht. Daher konnten die geänderten Dinge leicht in die neue Lösung integriert werden.
Die erste neue Version (Version des neuen Produkts) enthielt nur das, was das alte Produkt enthielt (keine neuen Funktionen). Nach der Stabilisierung (die Stabilisierung dauerte nicht lange) arbeitete ich mit einem einzigen Projekt
Ich denke, man kann sich einer (relativ kurzen) Zeit sporadischer Veröffentlichungen nicht entziehen. Es ist wichtig, dass Sie dies mit Ihrem Kunden vereinbaren können.
quelle