Sistema de Controle de Versão: definição e tipos

Durante o desenvolvimento de qualquer sistema é evidente que o código sofrerá inúmeras alterações que podem funcionar corretamente, não funcionar ou podem até funcionar mas causar erros em coisas que já estavam funcionando. Em todas essas situações pode existir a necessidade de "voltar atrás" no que foi programado, e nem sempre o CTRL + Z será a melhor opção ou até mesmo será capaz de resolver.


Todos esses detalhes e contratempos durante o desenvolvimento de um sistema precisam ser previstos e controlados, caso contrário você perderá muito tempo ou até mesmo todo um software. É nesse momento que entra os Sistemas de Controle de Versão.

Sistemas de Controle de Versão (SCV, ou VCS em inglês) são sistemas que visam manter os artefatos gerados durante o desenvolvimento de sistemas de software. Ou seja, todas as mudanças feitas em um arquivo ou um conjunto de arquivos serão registradas e organizadas, em ordem cronológica, em forma de versões. Dessa maneira, quando você precisar voltar atrás em mudanças já feitas, basta restaurar para uma versão anterior desejada.

Existem alguns tipos de SCVs que se diferenciam principalmente pelo seu propósito e pelo que oferecem. Vou explicar os três principais, juntamente com seus benefícios e problemas.

1 - Sistemas de Controle de Versão Locais

É o mais simples porém o mais frágil. As versões são organizadas localmente pelo programador por meio de diretórios. Qualquer erro no armazenamento pode por em risco todo o seu versionamento. Uma grande desvantagem é que o controle será realizado apenas pela pessoa que estiver usando o computador.


2 - Sistemas de Controle de Versão Centralizados

Superando a principal desvantagem do anterior, esse SCV tem como objetivo o controle de versão com a participação de mais de um desenvolvedor. Isso é extremamente importante já que o mais comum é o desenvolvimento de sistemas em equipe, porém esse tipo de SCV tem um grande problema: a centralização da informação.

Todos os desenvolvedores precisam se comunicar com o servidor para subir ou baixar as versões contidas nele, logo, qualquer problema no servidor impossibilitaria os desenvolvedores de trabalhar e também corre um grande risco já que toda a informação está em um único local.


3 - Sistemas de Controle de Versão Distribuídos

Tem a mesma ideia do tipo anterior, que é o trabalho em equipe, mas com uma proposta muito mais eficiente. Nesse modelo todos os participantes (desenvolvedores) do projeto serão uma "cópia" de todo o repositório contendo as versões. Logo, se um falhar, outros desenvolvedores ainda continuarão com o repositório. Isso também permite que o trabalho seja full-time já que não é necessário se conectar a um servidor central.



Nas próximas publicações explicaremos o funcionamento dos Sistemas de Controle de Versão Distribuídos mais conhecidos.

Autor: Edgar Lima

Fonte das imagens:

  1. https://git-scm.com/book/pt-br/v1/Primeiros-passos-Sobre-Controle-de-Vers%C3%A3o

Outras fontes:

  1. http://fabrica.ulbra-to.br/blog/2014/05/06/versionar-e-preciso/
  2. http://www.ufjf.br/getcomp/files/2013/03/An%C3%A1lise-Comparativa-entre-Sistemas-de-Controle-de-Vers%C3%B5es-Daniel-Tannure-Menandro-de-Freitas.pdf
  3. http://solysion.com.br/geral/sistemas-para-controle-de-versoes-centralizado-versus-distribuido/


Comentários

Postagens mais visitadas deste blog

Plano de Projeto de Software do SIUR

Git

Sobre a ferramenta Github