Pular para o conteúdo principal


Entenda como funciona o Versionamento Semântico (e por que você deve começar a usá-lo)


Nos últimos anos é evidente o crescimento do consumo de aplicativos e sistemas. E nós, desenvolvedores, conseguimos ver isso mais de perto, como também conseguimos enxergar alguns problemas e dificuldades que podemos passar ao desenvolver um software que tem a possibilidade de crescer muito.

Não é um assunto novo o tal do versionamento. Por muito tempo, o versionamento ocorria (e ainda hoje ocorre) de maneira diferenciada para cada organização. Assim, temos o Versionamento Semântico (Semantic Versioning ou SemVer), que traz algumas especificações quanto a definição de versões para APIs e é de autoria de  Tom Preston-Werner, co-fundador do GitHub.

Apesar de fornecer especificações para aplicação em APIs, a boa notícia é que você pode aplicar o versionamento semântico em qualquer software em desenvolvimento. Como o nome já diz, "semântico", visa dar um significado aos números de versão.


Um resumo das definições do Versionamento Semântico

Considere o seguinte esquema de versão:
MAJOR . MINOR . PATCH
Assim, podemos identificar os pontos mais importantes do Versionamento Semântico:

1) O software usando Versionamento Semântico deve declarar uma API pública;
2) Um número de versão deve conter o formato X.Y.Z, onde X, Y e Z devem ser números inteiros e não negativos;
3) Após lançada uma versão, ela não pode ser alterada. Para alterar, deve-se fazer uma nova versão;
4) No início o MAJOR deve ser 0, indicando ser uma versão ainda não-estável;
5) Quando o MAJOR passa a ser 1, isso define a API como pública e estável (Ex.: 1.0.0);
6) O PATCH define mudanças que corrigem bugs, mas não afetam em nada no funcionamento e uso da API;
7) O MINOR deve ser incrementado quando forem lançadas novas funcionalidades na API pública, de modo totalmente compatível, podendo incluir incrementos no PATCH se houverem correções;
8) O MAJOR deve ser incrementado quando forem lançadas novas funcionalidades na API pública, de modo que sejam incompatíveis, e deve zerar o MINOR e o PATCH;
9) Uma pre-release pode ser identificada com o uso de hífen e incluir caracteres alfanuméricos. Ex.: 0.2.0-alpha, 1.0.0-0.3.6, etc.

Mas a descrição fala sobre APIs. Posso utilizar o Versionamento Semântico em qualquer tipo de Software? A resposta é sim! Basta traçar um paralelo entre as duas aplicações:

1) Você altera o PATCH toda vez que corrigir algum bug na sua aplicação;
2) Você altera o MINOR toda vez que adicionar alguma funcionalidade que não mude o modo de funcionamento da aplicação (fazendo um paralelo com a compatibilidade da API);
3) Você altera o MAJOR quando sua aplicação se tornar estável (versão 1.0.0) e toda vez que implementar um conjunto de funcionalidades que alteram o modo de uso.

A verdade é que estas especificações foram criadas para dar alguma formalização para algo que já foi livre. O versionamento é importante por deixar as definições mais claras para a organização e para o público em geral.

Comentários