Énoncé du problème:
Donné:
- TFS comme contrôle de source
- Application client de bureau lourde avec des tonnes de code hérité avec une conception d'architecture mauvaise ou presque absente.
- Clients exigeant constamment de nouvelles fonctionnalités avec une qualité sonore, une
livraison rapide et se plaignant constamment d'une interface utilisateur peu conviviale.
Problème:
L'application nécessite sans aucun doute une refactorisation profonde. Ce processus rend inévitablement l'application instable et une phase de stabilisation dédiée est nécessaire.
Nous avons essayé:
Refactorisation dans le maître avec des fusions périodiques du maître (Mo) vers la branche de fonction (FB). (mon erreur) Résultat: Beaucoup de branches instables.
Ce que l'on nous conseille:
Lien vers l'article (pdf)
Créez une branche supplémentaire pour la refactorisation (RB) en la synchronisant périodiquement avec MB via la fusion de MB en RB. Une fois RB stabilisé, nous remplaçons master par RB et créons une nouvelle branche pour une refactorisation supplémentaire. C'est le plan. Mais ici, je m'attends à l'enfer réel de la fusion de MB à RB après la fusion de n'importe quel FB à MB.
Le principal avantage: un maître stable la plupart du temps.
Existe-t-il de meilleures alternatives aux procédures?
la source
Réponses:
J'ai eu une situation similaire dans le passé. Ce que j'ai fait:
parler au client; Je ne sais pas ce que dit votre manager, mais je pense qu'il est important de parler au client et d'être franc; il a besoin de savoir que vous travaillez sur la qualité de son produit. J'ai fait un accord pour un plan de sortie:
dans la phase de fusion des 2 solutions (faire l'architecture + réutiliser les fonctionnalités de l'ancien projet) les seules choses qui ont été publiées (nouvelles fonctionnalités) ont été faites sur l'ancien produit; cependant, les nouvelles versions ne contenaient que des corrections de bogues importantes. Donc, très peu de versions ont été faites sur l'ancien produit. Par conséquent, les choses modifiées ont été facilement fusionnées dans la nouvelle solution.
la première nouvelle version (sortie du nouveau produit) ne contenait que ce que contenait l'ancien produit (pas de nouvelles fonctionnalités); après l'avoir stabilisé (la stabilisation n'a pas pris longtemps) j'ai travaillé avec un seul projet
Je pense que vous ne pouvez pas échapper à une période (raisonnablement courte) de sorties sporadiques. Il est important que vous en conveniez avec votre client.
la source