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

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...

REST Assured

Recentemente, fiz uma apresentação no meu trabalho falando sobre o framework REST Assured, que permite construir testes unitários que verificam o funcionamento de serviços REST. Confira a apresentação abaixo!

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...