Pular para o conteúdo principal

Versionamento Semântico

 


Talvez este seja um assunto básico, mas nem por isso deixa de ser importante. O versionamento semântico é aquela sequência de números que determinam a versão de um programa. Esses números possuem um significado e você, desenvolvedor, deve respeitar essa semântica quando lançar uma nova versão de seu sistema ou de sua biblioteca.

Uma versão padrão de programa deve conter três partes: major version, minor version e patch version. M.n.p, sendo que as três partes que compõem a versão devem conter números não negativos (o zero é permitido). E essas três partes devem ser incrementadas seguindo regras já bem estabelecidas no mundo do software:

  • Incremente apenas a patch version se você realizou correções de bugs;
  • Incremente a minor version se você criou novas funcionalidades ou fez melhorias no seu código;
  • Por fim, incremente a major version se você criou alguma funcionalidade nova ou mexeu em alguma parte de seu programa / sistema que o tornou incompatível com a versão anterior.
Essas três regrinhas simples, se seguidas, tornarão a versão do seu programa semanticamente compreensível para quem for consumi-lo. Aumenta a segurança de quem for utilizar seu produto.

No nosso órgão, temos usado o versionamento semântico com sucesso, adicionando também um arquivo texto (CHANGES.TXT) apontando as principais alterações de cada nova versão. Pequenos padrões que auxiliam bastante novos desenvolvedores que entram no projeto (já conseguem, em um arquivo, um histórico de alterações) e também auxilia quem trabalha no projeto permitindo ver rapidamente o que foi alterado, sem necessidade de consultar o log do versionador.

Algumas regras complementares são recomendadas:

  • Incremente cada versão em uma unidade;
  • Ao incrementar uma parte, zere as partes inferiores (ao incrementar a minor version, zere a patch version; ao incrementar a major version, zere as outras duas versões).
 Outras recomendações que dou para facilitar a vida de toda a equipe:

  • Dê publicidade às novas versões de suas bibliotecas. Alguém pode vislumbrar algum problema que você não anteviu com a sua atualização;
  • Descreva essas regras em um espaço comum e de fácil acesso à equipe. Pessoalmente, eu recomendo uma Wiki.

Pronto, garanto que agora você vai olhar para as versões dos programas que usa de uma forma diferente!

Um abraço e até o próximo post! Feliz Natal e Um Ano Novo com muita tecnologia nova pra gente!!


Comentários

Postagens mais visitadas deste blog

Jakarta EE 10, A nova versão corporativa do Java

Mais de um ano atrás, fiz um post sobre o lançamento da versão 9.1 do Jakarta EE (confira esse post aqui ). Nesse post, eu expliquei um pouco sobre a transferência do Java EE da Oracle para a Eclipse Foundation e a mudança necessária ocorrida nessa versão no nome dos pacotes: de javax para jakarta . Agora, acabou de sair uma nova versão do Jakarta EE , versão 10 , a primeira versão que verdadeiramente traz novidades nas especificações que tanto conhecemos: JPA agora evoluiu para a versão 3.1; CDI para a versão 4.0; JAX-RS  para a versão 3.1; e assim por diante. Foram mais de vinte especificações atualizadas / evoluídas nesta versão, que criou também um novo perfil de implementação. Agora, temos três perfis para implementação do Jakarta EE :  Jakarta EE 10 Platform , o perfil completo com todas as especificações (este perfil somente os servidores de aplicação costumam implementar, como Wildfly e Glassfish ); Jakarta EE 10 Web Profile , um perfil com especificações volta...

Maven - Versão nova lançada

  Saiu versão nova do Maven - 3.8.2. Esta foi apenas uma versão de correção de bugs, mas a versão anterior, a 3.8.l, foi uma versão importante e vou aproveitar para falar sobre ela. Quem acompanha o histórico de versões do Maven , deve ter percebido o pulo de versão, da 3.6.3 para esta 3.8.1. A razão está explicada neste link , e o grande motivo foi tentar evitar problemas de segurança pelo acesso a repositórios via protocolo HTTP. Por default, esta versão 3.8.1 do Maven bloqueia o acesso a repositórios HTTP - você precisa acessar repositórios HTTPS . O bloqueio acontece com a adição de um mirror chamado "maven-default-http-blocker", bloqueando todo e qualquer acesso a repositórios HTTP externos. <mirror>    <id>maven-default-http-blocker</id>    <mirrorOf>external:http:*</mirrorOf>   <name>Pseudo repository to mirror external repositories initially using HTTP.</name>    <url>http://0.0.0.0/</u...

Implantando o Flyway em sistemas Java - Parte 1

  Quando temos uma empresa terceirizada de fábrica de software desenvolvendo, geralmente especificamos no edital de licitação que essa empresa precisa entregar alguns artefatos obrigatórios para poder receber pelos serviços prestados: o código-fonte (óbvio!), diagramas UML (quando necessário), evidências de testes (artefato que cada vez mais me convenço que de nada serve)... e um plano de implantação. Esse plano de implantação precisa trazer os passos necessários para colocar o produto no ambiente de homologação (e, posteriormente, no ambiente de produção). Na maioria das vezes, um ou mais scripts de banco de dados que devem ser executados. Nós, servidores, tínhamos que abrir o plano de implantação, verificar os passos, acessar o versionador, abrir a ferramenta de banco de dados, copiar o(s) script(s), executá-los, tudo manualmente, gerando um trabalhinho chato e propenso a erros. Além disso, os scripts sempre ficavam meio perdidos: as vezes espalhados por pastas relativas às orden...