Versionamento semântico 2.0.0

illustroke
Tempo de leitura: 3 minuto(s)
Versionamento semântico 2.0.0 (ou Semantic Versioning 2.0.0) propõe regras e requerimentos para atribuição de versão de programas. Se trata de uma tentativa de resolução do problema de versionamento de software denominado “inferno de dependências”, que ocorre quando uma version lock impede que o projeto prossiga com segurança e integridade. Versionamento semântico implica diretamente no controle por numeração, na garantia de compatibilidade dos pull requests / merge requests ao considerar os tipos de modificação que os softwares sofrem durante seu desenvolvimento e eventuais atualizações. Etiquetar branches com números de versão pode ser considerado uma boa prática, que possibilita um melhor controle durante o deploy.

O que significa cada fração?

Como desenvolvedores, estamos preocupados em não fornecer software com erros. Logo, só vamos oferecer atualizações automáticas para PATCHes (correções de  bug). Entregas de funcionalidade (MINOR) são entregas com maior importância, que podem oferecer risco para o funcionamento do software, se forem aplicadas a versões MAJOR incorretas. Entregas de importância crítica (MAJOR) devem ser versões oferecidas separadamente. Geralmente, versão MAJOR Implica que a versão anterior será removida e a nova será instalada do zero.

Controle por numeração e tags

versionamento-semantico-2

MAJOR MINOR PATCH PRE-RELEASE
[+aumente em caso de  Evolução de API] [+aumente em caso de Nova funcionalidade] [+aumente em caso de  Correção de BUG] [+aumente em caso de  Aviso de Incompatibilidade]
por mudanças incompatíveis com a versão anterior por funcionalidades implementadas compatíveis com a versão atual MAJOR por resolução de bugs compatível com a MINOR ativa sinalização incompatibilidade ou versão de teste (ex: prefixos -alpha, -beta)

Git e Github

Projetos versionados com git dependem de alguma padronização de nome que represente as funcionalidades e determinado momento, dada a constância de incrementos submetidos. Para isso existe a numeração sequencial. Sem uma padronização de sequência, seria impossível saber a ordem dos incrementos, gerando complicações na localização de código já produzido e dificultando rollbacks de emergência.

Dependências de software (vendors)

A gestão de dependências é notável em Frameworks onde as dependências (vendors) são gerenciadas de forma automatizada. Vendors são softwares extras que a aplicação exige, e as versões dessas dependências que cada projeto demanda, são controladas com a convenção do versionamento semântico . Uma ferramenta como NPM ou Composer realiza a leitura de um arquivo de configuração (json ou xml), e obtém as versões especificadas em tal arquivo de um repositório na web. Isso faz com que seja dispensável o transporte das vendors em migrações, uma vez que podem ser obtidos com um comando.

Especificação autorada por Tom Preston-Werner. Leia a versão original (em inglês).

Atualizações automatizadas

Por meio de um padrão como o versionamento semântico é possível configurar o processo de CI – Integração contínua, fazendo com que o software em produção receba atualizações minor e patch de forma automática fazendo melhorias incrementais no sistema.

Propósito do versionamento semântico

O desenvolvimento iterativo e incremental exige muito com relação à cooperação, organização e segurança no desenvolvimento de software. Adotar a regra de versionamento semântico significa etiquetar conjuntos de mudanças (pull-requests), de modo análogo a gavetas de um arquivo. É possível otimizar, hoje mesmo, o desenvolvimento de suas aplicações com semantic versioning 2.0:

  • Centralização de trabalhos;
  • Segurança para integrações;
  • Organização para trabalho em equipe;
  • Etiquetagem/backup dos trabalhos.

Você já passou por problemas com versionamento? Sugere alguma mudança? Compartilhe com a gente nos comentários! Ah, ainda sobre construção de software, vale a pena ler o post sobre APIs RESTlike e RESTful.

Quer saber mais sobre como funciona? Fale com um desenvolvedor agora mesmo!
Este artigo foi lido 6494+ vezes. Obrigado por ler até aqui! Fique à vontade pra copiar e compartilhar. Ajude sempre seus colegas. O conhecimento muda vidas!

O conteudo foi útil? Isso é fantástico. Quer incentivar mais posts como esse? Mostre seu apoio com qualquer valor.
Chave PIX: d0311e58-cb6e-4d47-b3d8-3d4254763ce7

Inscrever-se
Notify of
guest
1 Comentário
Mais antigos
Mais recentes Mais votados
Inline Feedbacks
View all comments
trackback
4 anos atrás

[…] Leia mais sobre Versionamento Semântico […]


Categorias relacionadas
Tags relacionadas