Maintenir différentes versions de plusieurs logiciels au quotidien

photo credit: Jason Michael via photopin cc

Une équipe peut être impliquée dans un nombre important de projets. Elle peut par exemple s’occuper de la maintenance de plusieurs applications, dont la fréquence d’intervention est assez variable. Comment gérer ça au quotidien?

Proposition:

  • une gestion de versions et d’itérations claire
  • un backlog associé à chaque itération

La gestion de versions

J’apprécie beaucoup le modèle de version à quatre membres où un changement:

  • du premier membre peut indiquer un lot fonctionnel important couplé à une restructuration majeure de l’application
  • du deuxième peut signifier des évolutions importantes
  • du troisième peut correspondre à des correctifs
  • du quatrième peut être associé à un numéro de build ou bien d’itération.

La version à quatre membres servira surtout à l’équipe de développement pour la traçabilité des développements. Il est possible de tronquer ce numéro de version en ne gardant que les trois premiers membres pour la communication avec les autres équipes (support, management, marketing, etc.).

En maintenance applicative, il est assez rare de faire évoluer le premier membre, sauf pour marquer un changement majeur qui pourra impacter les clients en terme de compatibilité OS,  framework, etc. ou encore un nouveau design de l’application qui impliquera une communication importante pour la gestion du changement (formation, transfert de connaissance).

L’évolution du deuxième membre peut marquer un nouveau cycle de release tandis que le troisième pourra signifier une version corrective.

Il est plutôt interessant d’associer un increment du dernier membre à un changement d’itération. Cela permet d’établir facilement une passerelle entre le backlog d’itération, le code source et la version logicielle (très pratique pour l’analyse des anomalies logicielles).

La gestion du cycle de vie et des itérations

Une fois le modèle de gestion des versions défini, le cycle de vie de l’application, ainsi que les itérations peuvent s’en décliner. On pourra par exemple opter pour le modèle suivant:

Branches et versions
Branches et versions

La branche principale fait apparaitre les differents jalons correspondant aux livraisons de versions majeures / importantes. Chaque livraison d’une nouvelle version logicielle s’accompagne de la création de la branche de maintenance associée. Il est pratique de nommer la branche principale “Mainline” et les branches de maintenance “Releases|Module 1.2.1.x”.

Le schema ci-dessus n’intègre pas de contrainte de temps, cela permet de laisser ouvertes des itérations indéfiniement et de laisser plus de liberté quant au choix de la pratique agile “Scrum”, “Scrumban”, etc. par rapport à la durée des itérations / sprints.

Laisser ouverte une itération signifie qu’on a déjà anticipé les prochaines versions ou correctifs, au niveau des branchements (gestion des sources, branches, build, etc.) et que la gestion du contenu du backlog restera la seule préoccupation.

Un backlog associé à chaque itération

Gérer plusieurs versions d’un même logiciel consistera simplement à disposer d’une vue de toutes les versions actives, afin d’être réactif sur les corrections / évolutions. Comme vu précedemment, il est ici intéressant d’associer un backlog à chaque version (=iteration).

Logiciel Itération courante Type
A 1.3.0.1 Principale
1.2.2.1 Maintenance
1.1.1.2 Maintenance
B 2.1.0.4 Principale
2.0.1.1 Maintenance
C 1.4.0.5 Principale
1.3.3.1 Maintenance

Les règles sont généralement:

  • pas d’évolution sur les versions de maintenance (seulement de la correction).
  • synchronisation des corrections sur les versions de maintenance (un element de travail par version).

Des exemples d’outils pour gèrer ça au quotidien:

  • TFS pour la gestion des itérations (iteration path), des branches et du backlog avec les éléments de travail (work items)
  • CruiseControl.Net pour la gestion des builds et visualiser les itérations courantes (avec son outil CCTray).

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s