Question

Ma question est la suivante: quel schéma de dénomination de version doit être utilisé pour quel type de projet.

Très commun est major.minor.fix, mais même cela peut conduire à 4 chiffres (ie Firefox 2.0.0.16). Certains ont un modèle dont les nombres impairs indiquent les versions développeur et les versions paires des versions stables. Et toutes sortes d’additions peuvent entrer dans le mélange, comme -dev3, -rc1, SP2, etc.

Existe-t-il des raisons de préférer un schéma plutôt qu'un autre et différents types de projets (c'est-à-dire open source ou source fermée) doivent-ils avoir des modèles de nommage de version différents?

Était-ce utile?

La solution

Il existe deux de bonnes réponses à cette question (ainsi que de nombreuses préférences personnelles, voir le commentaire de gizmo sur les guerres de religion)

Pour les applications publiques , la norme Major.Minor.Revision.Build fonctionne de manière optimale. Les utilisateurs publics peuvent facilement dire quelle version du programme ils ont et, dans une certaine mesure, dépassée. leur version est.

Pour les applications internes , pour lesquelles les utilisateurs ne l'ont jamais demandée, le déploiement est géré par le service informatique et les utilisateurs appellent le support technique. J'ai trouvé l'an Year.Month.Day.Build. pour mieux travailler dans beaucoup de situations. Ce numéro de version peut donc être décodé pour fournir au service d'assistance des informations plus utiles que le schéma de numéros de version publique.

Cependant, en fin de compte, je vous recommanderais avant tout - d’utiliser un système cohérent . S'il existe un système que vous pouvez configurer / écrire pour que votre compilateur l'utilise automatiquement à chaque fois, utilisez-le .

La pire chose qui puisse arriver est que vous publiez des fichiers binaires avec le même numéro de version que les précédents. Récemment, je me suis occupé de rapports d'erreur réseau automatisés (application "quelqu'un d'autre") et suis parvenu à la conclusion que Year.Month Les numéros de version .Day.Build indiqués dans les vidages principaux ne sont même pas mis à jour à distance avec l'application elle-même (l'application elle-même utilisait un écran de démarrage avec les nombres réels - qui n'étaient bien sûr pas extraits du binaire, comme on pourrait le supposer). Le résultat est que je n'ai aucun moyen de savoir si les vidages sur incident proviennent d'un fichier binaire de 2 ans (ce que le numéro de version indique) ou d'un fichier binaire de 2 mois, et donc aucun moyen d'obtenir le code source correct (pas de contrôle de source non plus!). )

Autres conseils

Voici ce que nous utilisons dans notre société: Major . Mineure . Version du correctif . Numéro de version .

Le changement Majeur implique un cycle de publication complet, y compris une implication marketing, etc. Ce nombre est contrôlé par des forces extérieures à R & D (par exemple, dans l'un des endroits où j'ai travaillé, Marketing a décidé que notre prochaine version serait le numéro «11» - à égaler un concurrent. Nous étions à la version 2 à l'époque :) ).

Mineure est modifiée lorsqu'une nouvelle fonctionnalité ou un changement de comportement majeur est ajouté au produit.

La version du correctif est augmentée d'une unité chaque fois qu'un correctif est officiellement ajouté à la version, ce qui inclut généralement uniquement les corrections de bugs.

La

Version de construction est utilisée lorsqu'une version spéciale est publiée pour un client, généralement avec un correctif de bogue spécifique. Habituellement, ce correctif sera mis à jour pour le prochain correctif ou la version mineure (et Product Management marque généralement le bogue comme "sera publié pour le correctif 3" dans notre système de suivi).

Je suis un grand fan du Versionnage sémantique

.

Comme beaucoup d’autres l’ont commenté, il utilise le format X.Y.Z et donne de bonnes raisons.

Notre département R & amp; D utilise 1.0.0.0.0.000: MAJOR.minor.patch.audience.critical_situation.build

S'il vous plaît, s'il vous plaît , ne faites pas cela.

Ce genre de question concerne davantage la guerre de religion que les aspects objectifs. Il y a toujours des tonnes de pour et de contre contre un système de numérotation ou un autre. Tout ce que les gens pourraient (ou devraient) vous donner, c'est le schéma qu'ils ont utilisé et pourquoi ils l'ont choisi.

De mon côté, j'utilise un schéma X.Y.Z. Tous sont des nombres où:

  • X indiquent un changement dans l'API publique qui introduit une incompatibilité avec les versions antérieures
  • Y indiquent l'ajout de certaines fonctionnalités
  • Z indiquent un correctif (soit en corrigeant un bogue, soit en modifiant la structure interne sans affecter la fonctionnalité)

Finalement, j'utilise "Beta N". suffixe si je veux un retour des utilisateurs avant la sortie officielle. Aucun " RC " suffixe car personne n'est parfait et il y aura toujours des bugs ;-)

Personnellement, je préfère MAJOR.MINOR.BUGFIX-SUFFIX où SUFFIX est dev pour les versions de développement (contrôles de version), rc1 / rc2 pour les versions candidates et pas de suffixe pour les versions.

Si vous avez des suffixes pour les vérifications de développement, peut-être même avec le numéro de révision, il n'est pas nécessaire de les rendre pairs / impairs pour les séparer.

Nous préférons majeur . mineur . jalon . révision - build , où:

  • majeur : incrémente les modifications d'architecture importantes ou les avancées importantes en matière de fonctionnalités.
  • mineur : modifications mineures et nouvelles fonctionnalités ne nécessitant aucune modification de l'architecture.
  • jalon : indique la stabilité et la maturité du code:
    • 0 pour le développement / pré-alpha
    • 1 pour alpha
    • 2 pour la version bêta
    • 3 pour la version candidate (RC)
    • 4 pour la version finale / de production
  • révision : indique le numéro de publication, de correctif ou de correction de bug.
  • build : références uniques à des versions ou versions spécifiques d'une application. Le numéro de build est un entier séquentiel, généralement incrémenté à chaque build.

Exemples:

  • 1.4.2.0-798 : Première version bêta de la version 1.4 , créée par le numéro de version 798 .
  • 1.8.3.4-970 : 1.8-RC4 , créé par le numéro de version 970 .
  • 1.9.4.0-986 : Première version de production de la version 1.9 , créée par le numéro de version 986 .
  • 1.9.4.2-990 : Deuxième version de correction de bug de la version 1.9 , créée par le numéro de build 990 .

Les versions de prodcution ayant toujours 4 dans leur troisième chiffre de la chaîne de version, le chiffre peut être supprimé pour les versions de production.

Dans le cas d'une bibliothèque, le numéro de version vous indique le niveau de compatibilité entre deux versions et donc la difficulté d'une mise à niveau.

Une version de correctif de bogue doit préserver la compatibilité binaire, source et de sérialisation.

Les versions mineures signifient différentes choses pour différents projets, mais elles n'ont généralement pas besoin de préserver la compatibilité de la source.

Les numéros de version majeurs peuvent rompre les trois formes.

J'ai écrit davantage sur la justification ici .

Avec les pratiques de développement logiciel Agile et les applications SaaS, l'idée d'une version majeure par opposition à une version mineure a disparu - les versions sont extrêmement fréquentes - un schéma de numérotation des versions reposant sur cette distinction n'est donc plus utile. pour moi.

Ma société utilise un schéma de numérotation qui prend les 2 derniers chiffres de l'année de début de la publication, suivis du numéro de version de cette année.

La 4ème version commencée en 2012 serait donc 12.4.

Vous pouvez inclure un "correctif de bogue". numéro de version après cela si nécessaire, mais idéalement, vous publiez assez souvent pour que cela ne soit pas souvent nécessaire - donc "12.4.2".

Il s’agit d’un schéma très simple qui ne nous a posé aucun des problèmes des autres schémas de numérotation des versions que j’avais utilisés auparavant.

La différence entre une stratégie de numéro de version proche et open-source peut également provenir d'un aspect commercial , lorsque la version majeure peut refléter l'année de la publication, par exemple.

Ce que nous faisions auparavant, c'est major.minor.platform.fix .

majeur : nous augmentons ce nombre lorsque les fichiers enregistrés à partir de cette version ne sont plus compatibles avec la version précédente.
Exemple : Les fichiers enregistrés dans la version 3.0.0.0 ne seront pas compatibles avec la version 2.5.0.0.

mineur : nous augmentons ce nombre lorsqu'un nouvel élément a été ajouté. Cette fonctionnalité devrait être vue par l'utilisateur. Pas une fonctionnalité cachée pour le développeur. Ce nombre est réinitialisé à 0 lorsque la valeur majeure est incrémentée.

plate-forme : il s'agit de la plate-forme utilisée pour le développement.
Exemple : 1 correspond à .net Framework version 3.5.

correction : nous augmentons ce nombre lorsque seules les corrections de bogues sont incluses dans cette nouvelle version. Ce nombre est réinitialisé à 0 lorsque les majeures ou mineures sont incrémentées.

Simplement

Major.Minor.Revision.Build
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top