3 Um Estudo Sobre as Ferramentas Disponíveis


Diante da necessidade existente em todas as empresas para controlar seu acervo de softwares e garantir que os fontes e executáveis correspondem as versões liberadas e corrigidas, garantindo o desenvolvimento equilibrado e controlado de novos aplicativos o mercado oferece diversas ferramentas, o objetivo deste capitulo é apresentar algumas soluções de softwares para gerenciamento de versões e demonstrar algumas de suas utilidades, não está no escopo deste trabalho a comparação destas ferramentas, sendo que o foco são as ferramentas open-source.

 

Podemos acompanhar o pensamento de PRESSMAN (2006):, para nos ajudar a escolher uma ferramenta de apoio a gestão de configuração de software:

 

Controle de versão combina procedimentos e ferramentas para gerir diferentes versões de objetos de configuração, que são criados durante o processo de software. Um sistema de controle de versão implementa ou está diretamente integrado com quatro capacidades principais: (1) um banco de dados de projeto (repositório) que guarda todos os objetos de configuração relevantes; (2) uma capacidade de gestão de versãoque guarda todas as versões de um objeto de configuração (ou permite que qualquer versão seja construída usando  diferenças de versões anteriores); (3) uma facilidade de construir que permite ao engenheiro de software coletar todos os objetos de configuração relevantes e construir uma versão específica do software.[...]. (PRESSMAN, 2006, p. 608).

 

PRESSMAN (2006) ainda comenta que os sistemas do controle de versão e controle de modificação podem implementar a capacidade de acompanhamento de tópicos, veja:

 

[…] sistema de controle de versão e controle de modificação frequentemente implementam uma capacidade deacompanhamento de tópicos (também chamado de bugs) que permite à equipe registrar e acompanhar o estado de todos os tópicos importantes associados a cada objeto de configuração. (PRESSMAN, 2006. p 608).

 

Muitas das ferramentas disponíveis no mercado poderão incluir ou não  esta facilidade de rastreabilidade, porém como veremos mais a frente haverá a possibilidade de utilizar as ferramentas em conjunto, sem prejuízo para a gerência de configuração de software.

 

As ferramentas de controle de versão foram evoluindo ao longo de muitas décadas. Em termos simples existem 3 gerações de ferramentas:

 

  1. a.Versionamento de arquivos individuais, ex. SCCS, RCS. Até esse momento as pessoas controlavam de arquivos apenas salvando-os com um nome acrescido da versão correspondente e cada vez maior (exemplo v1.0, v1.1), com a chegada do controle de arquivos individuais, estas ferramentas já eram um grande avanço pois automatizavam essas tarefas, mas tinham algumas deficiências, como trabalhar apenas nos arquivos do computador do usuário. 

  2. b.Versionamento em árvores de diretórios – centralizado, ex. CVS, Subversion. Nesta segunda geração passa-se a trabalhar com servidores centralizados que permitem um controle maior sobre as alterações, equipes de desenvolvimento começam a trabalhar e a compartilhar alterações através de um servidor central, a conexão de rede entre os desenvolvedores e o servidor é essencial. 

  3. c.Versionamento em arvores de diretórios – distribuído, ex. Bazaar, Git e Mercurial. Nesta terceira geração o desenvolvimento passa a ocorrer de forma distribuída, diminui a dependência de um único servidor central, permite que o código seja distribuído para onde ele é realmente necessário. Estas novas ferramentas podem operar offline por tempo indeterminado e de forma autônoma, com uma conexão de rede somente quando necessário sincronizar as alterações com outro repositório.