Isso é algo que você terá que dar uma olhada em alguns ângulos diferentes, já que precisa levar em conta as necessidades do usuário, bem como as necessidades do software e dos desenvolvedores.
Em geral, seus clientes não se importarão muito sobre qual será o número da versão do software, desde que eles saibam que estão executando algo mais recente (ou seja, o Produto 2012 é mais recente que o Produto 2010) e que eles sabem que está atualizado se há patches que podem ser implantados (por exemplo, Produto 2012, Atualização 10). Como tal, de um ponto de vista da marca do cliente, tenho a tendência de preferir versões com nome (por exemplo, Windows XP, Windows Vista) seguidas por um número de sequências estrito que pode ser instalado pelos usuários.
Porém, escrever um software que verifique as coisas que são fáceis para o usuário tende a tornar o código mais difícil de escrever. Assim, eu prefiro preferir o esquema simples de Major.Minor
version apenas porque você pode fazer uma simples comparação de números para verificar se algo está atualizado como a seguir:
// Check to see if we can handle the file version
if (this.Version < fileVersion) {
throw new UnsupportedFileException("The file version is " + fileVersion.toString() + " which is not supported");
}
// Do stuff ...
Para colocar isso em um pouco de contexto, eu geralmente não me importo com o tamanho do número menor (ou seja, 1.1024), o que permite que o sistema acima continue funcionando com sucesso. Geralmente, os números de revisão são de interesse apenas para o desenvolvimento interno e, na verdade, ainda não os vi realmente afetando as coisas muito além de apenas dar às coisas um número adicional para acompanhar.
No entanto, os dois esquemas acima realmente não se aplicam a ambientes em que a implantação contínua está sendo usada (por exemplo, Stack Exchange), onde eu prefiro algum tipo de data seguido por um número de revisão que parece ser usado em os sites do Stack Exchange. O raciocínio para isso é que as versões vão mudar muito frequentemente no ambiente de implantação contínua e você pode ter várias versões do código subindo no mesmo dia, o que justifica o número de revisão e a data atual é tão boa quanto qualquer outra para quebrar coisas mais ainda. Teoricamente, você poderia usar apenas o número de revisão para tudo, mas o uso da data atual permite que você acompanhe internamente os principais marcos que poderiam tornar as coisas mais fáceis de serem discutidas.