2007-04-04

Évolution de la version d'un logiciel

Pour optimiser la composition des sandwichs que vous ingurgitez le midi, vous avez décidé de créer une petite application du nom de KebabManager. À sa sortie, vous lui donnez le numéro de version « 1.0 ».

Au fil des évolutions, le numéro de version va progresser. Vous aviez pensé à gérer la sauce harissa et la sauce blanche, mais vous n'aviez pas pensé à l'option sauce américaine. Et hop : version 1.1. Vous décidez de gérer deux types de frites : potatoes ou allongées : hop, version 1.2.

Puis vient le jour de la découverte d'un bug. Quand on choisit « salade uniquement » au lieu de « salade - tomate - ognon » le logiciel se plante lamentablement. Après investigation, une petite erreur de copier-coller est la cause de cette misérable expérience. En 10 secondes vous éditez le code pour appliquer la correction et vous recompilez l'application. 10 secondes plus tard vous avez une version 1.2 corrigée.

La correction a sollicité trop peu d'énergie pour que la nouvelle version mérite de s'appeler 1.3. Comment alors numéroter cette nouvelle version ?

Jusqu'ici, j'appliquais en général cette méthode : voir le numéro de version comme un nombre à virgule flottante. On aurait alors un KebabManager 1.21. C'est la méthode que j'ai utilisée avec PngOptimizer 1.5. J'ai sorti différents correctifs, pour obtenir la version actuelle de 1.54.

À présent j'ai décidé de plutôt utiliser le 3e nombre qu'on voit souvent fleurir dans les numéros de version pour marquer l'application d'un correctif. Ainsi, je choisirais comme nom « PngOptimizer 1.5.4 » pour la réduction de mes images, et « KebabManager 1.2.1 » pour l'augmentation de mon tour de taille.

Continuons à monter en version. Après des requêtes utilisateur et des évolutions successives, vous arrivez à la version 1.9. Une n-ième évolution est sur le chemin. Comment alors numéroter la version d'après ?

Avec ma méthode précédente, celle du nombre à virgule, je passais automatiquement de 1.9 à 2.0. Mais l'habitude dans le monde du logiciel d'aujourd'hui est plutôt à la séparation des différents nombres constituant le numéro de version. On le voit notamment dans les logiciels de gestion de configuration. En suivant cette logique, je choisirai alors le nom de « KebabManager 1.10 ». Je réserverai le nom de « KebabManager 2.0 » lorsqu'une évolution suffisamment significative me conduira à incrémenter le premier nombre de la version.

Les deux méthodes me semblent logiques. Quand deux méthodes ont le même poids logique, alors le plus sage est de baser son choix sur les habitudes du domaine concerné. C'est pourquoi je pense désormais changer ma méthode de numérotation pour ce qui se fait dans mon entourage :)

Mise à jour : Vincent a écrit un billet sur le sujet.