As regras essenciais sobre versionamento de artefaos entregaveis de projeto, tais como pacotes para download.

Visao Geral

O versionamento de artefatos eh a chave para controle e rastreabilidade dos entregaveis no projeto.

O objetivo eh localizar univocamente o artefato, e com isso ter informacoes sobre quais os elementos que o compoem e qual distribuicao do projeto ele esta atrelado.

Numeracao

O 3PUP usa as regras da Fundacao Eclipse (1, 2) e o novo padrao Java 6 (3) para versionamento de artefatos.

Enquanto o padrao Eclipse determina a profundidade dos niveis de numeracao e as regras essenciais para incremento de cada nivel, o padrao Java 6 delinea as regras para ruptura de API entre major versions.

Para um entendimento detalhado dessas regras, consulte os links de referencia ao final da pagina.

Para uma visao sintetizada dessas informacoes, use a tabela abaixo:

Nivel

Nome

Descricao

1.x.x.x

Nivel Maior

Indica uma versao de ruptura (ou possivel ruptura) de API, iniciando em 0 e incrementando em uma unidade cada vez. A primeira versao de producao deve ter numero 1.

x.1.x.x

Nivel Menor

Indica alteracoes visiveis na API, como adicoes de metodos ou parametros, alteracoes de nomes de parametros, sobreescrita de tipos, alteracoes em hieraquia de classes ou interfaces e outras modificacoes, que nao invalidem o nivel maior. Inicia em 0 e incrementa em uma unidade cada vez. Quando o nivel maior muda de valor, o nivel menor junto.

x.x.1.x

Nivel de Servico

Indica correcoes de bugs ou melhorias nao visiveis em nivel de API, como documentacao, melhoria de performance, seguranca ou outras capacidades (requisitos nao funcionais) no sistema. Inicia em 0 e incrementa em uma unidade cada vez. Quando o nivel menor reinicia, o nivel de servico reinicia junto.

x.x.x.1

Nivel de Qualificacao

Incrementado automaticamente a cada build, geralmente pelo sistema de integracao continua. Quando o nivel de servico reinicia, o nivel de qualificacao reinicia junto.

Exemplo Pratico

TODO - Descrever um caso de uso de como usar esse padrao no dia-a-dia.

Referencias

1 - http://www.eclipse.org/equinox/documents/plugin-versioning.html
2 - http://wiki.eclipse.org/index.php/Version_Numbering
3 - Link para padrao Java 6 de "deprecacao" de APIs