Вы находитесь на странице: 1из 12

Processo de Desenvolvimento de Sistemas

Desenvolvimento de Sistemas pgina 1 Prof. Hugo Estevam Longo


Controle de Verso
Introduo
Muitos problemas de desenvolvimento de software so causados por falta de controle de verso. Faa
uma avaliao rpida da situao da sua equipe de desenvolvimento:
1. Algum j sobrescreveu o cdigo de outra pessoa por acidente e acabou perdendo as
alteraes?
2. Tem dificuldades em saber quais as alteraes efetuadas em um programa, quando foram
feitas e quem fez?
3. Tem dificuldade em recuperar o cdigo de uma verso anterior que est em produo?
4. Tem problemas em manter variaes do sistema ao mesmo tempo?

Se alguma das perguntas acima teve um sim como resposta, ento sua equipe necessita
urgentemente de um sistema para controle de verso!
No h mais desculpa para no usar uma ferramenta assim. Atualmente, esto disponveis diversas
opes, e as melhores so open source. Alm disso, h dois tipos de controle de verso que podem ser
escolhidos: centralizado (Subversion e TFS, por exemplo) e distribudo (Exemplos: Mercurial e o Git).
Este resumo pretende responder a algumas perguntas relacionadas com controle de verso e ajudar a se
informar melhor e decidir baseada nas necessidades reais.
1. Para que serve um sistema de controle de verso?
2. Como funciona o controle de verso?
3. Quais as semelhanas e diferenas entre o centralizado e o distribudo?
Para que Serve o Controle de Verso?
O Controle de verso apoia o desenvolvimento de diversas maneiras:
Histrico. Registra toda a evoluo do projeto, cada alterao sobre cada arquivo. Com essas
informaes sabe-se quem fez o que, quando e onde. Alm disso, permite reconstruir uma reviso
especfica do arquivo sempre que desejado;
Colaborao. O controle de verso possibilita que vrios desenvolvedores trabalhem em paralelo
sobre os mesmo arquivos sem que um sobrescreva o cdigo de outro, o que traria reaparecimento
de defeitos e perda de funcionalidades;
Variaes no Projeto. Mantm linhas diferentes de evoluo do mesmo projeto. Por exemplo,
mantendo uma verso 1.0 enquanto a equipe prepara uma verso 2.0.

Enfim, controle de verso fundamental para o desenvolvimento de software. Todos os
ambientes de desenvolvimento modernos, tais como o Visual Studio, Eclipse e NetBeans, j possuem
plugins para integrao com algum sistema de controle de verso.
Como Funciona o Controle de Verso?
O controle de verso composto de duas partes: o repositrio e a rea de trabalho. O repositrio
armazena todo o histrico de evoluo do projeto, registrando toda e qualquer alterao feita em cada
item versionado.
Processo de Desenvolvimento de Sistemas
Desenvolvimento de Sistemas pgina 2 Prof. Hugo Estevam Longo
O desenvolvedor no trabalha diretamente nos arquivos do repositrio. Ao invs disso, usa uma
rea/cpia de trabalho que contm a cpia dos arquivos do projeto e que monitorada para
identificar as mudanas realizadas. Essa rea individual e isolada das demais reas de trabalho.

Estrutura de um controle de verso composta por repositrio e rea de trabalho. A comunicao entre
elas se d atravs de operaes de commit e update.

A sincronizao entre a rea de trabalho e o repositrio feita atravs dos comandos de commit e
update.
O commit envia um pacote contendo uma ou mais modificaes feitas na rea de trabalho (origem) ao
repositrio (destino). O update faz o inverso, isto , envia as modificaes contidas no repositrio
(origem) para a rea de trabalho (destino).
Cada commit gera uma nova reviso no repositrio, contendo as modificaes feitas, data e autor.
Uma reviso funciona como uma "foto" de todos os arquivos e diretrios em um determinado momento
da evoluo do projeto. As "fotos" antigas so mantidas e podem ser recuperadas e analisadas sempre
que desejado. O conjunto dessas revises justamente o histrico do projeto.
Tanto o controle de verso centralizado quanto o distribudo possuem repositrios e reas de trabalho. A
diferena est em como cada uma dessas partes est arranjada.
Controle de Verso Centralizado
O controle de verso centralizado segue a topologia em estrela, havendo apenas um nico
repositrio central mas vrias cpias de trabalho, uma para cada desenvolvedor. A comunicao
entre uma rea de trabalho e outra passa obrigatoriamente pelo repositrio central.
Processo de Desenvolvimento de Sistemas
Desenvolvimento de Sistemas pgina 3 Prof. Hugo Estevam Longo

No controle de verso centralizado h um nico repositrio e vrias cpias de trabalho que se
comunicam apenas atravs do repositrio central.
Controle de Verso Distribudo
So vrios repositrios autnomos e independentes, um para cada desenvolvedor. Cada repositrio
possui uma rea de trabalho acoplada e as operaes commit e update acontecem localmente
entre os dois.
Processo de Desenvolvimento de Sistemas
Desenvolvimento de Sistemas pgina 4 Prof. Hugo Estevam Longo

No controle de verso distribudo cada desenvolvedor possui um repositrio prprio acoplado a uma
rea de trabalho. A comunicao entre eles continua sendo atravs de commit e update.

Um repositrio pode se comunicar com qualquer outro atravs de duas operaes bsicas: pull epush:
Pull (Puxar). Atualiza o repositrio local (destino) com todas as alteraes feitas em outro
repositrio (origem).
Push (Empurrar). Envia as alteraes do repositrio local (origem) para um outro repositrio
(destino).
Processo de Desenvolvimento de Sistemas
Desenvolvimento de Sistemas pgina 5 Prof. Hugo Estevam Longo

Um repositrio recebe e envia revises com qualquer outro atravs de operaes pull e push sem a
necessidade de uma topologia pr-definida.

A sincronizao entre os desenvolvedores acontece de repositrio a repositrio e no existe, em
princpio, um repositrio mais importante que o outro, embora o papel de um repositrio central possa
ser usado para convencionar o fluxo de trabalho.
Resumo das Operaes Bsicas dos Controles de Verso
Centralizado e Distribudo

Centralizado Distribudo Descrio
checkout clone criao da cpia de trabalho/repositrio
commit commit envia alteraes para o repositrio, criando uma reviso
Processo de Desenvolvimento de Sistemas
Desenvolvimento de Sistemas pgina 6 Prof. Hugo Estevam Longo
update update atualiza a cpia/rea de trabalho em uma reviso
pull importa revises feitas em outro repositrio
push envia revises locais para outro repositrio
Sincronizao de Mudanas Concorrentes
Uma das responsabilidades do controle de verso possibilitar o trabalho paralelo e concorrente de
vrios desenvolvedores sobre os mesmos arquivos, evitando que um sobrescreva o cdigo de outro, o
que resultaria no reaparecimento de defeitos e perda de funcionalidades.
Em parte, isto conseguido atravs da rea de trabalho, que fornece a impresso de que o
desenvolvedor o nico dono de todo o projeto. Mas s a rea de trabalho no resolve todo o problema.
Ainda necessrio um jeito de sincronizar os esforos dos membros da equipe.
A sincronizao feita combinando-se revises concorrentes em uma nica resultante. Essa operao
conhecida como merge (mesclagem) e, apesar de parecer complexa, acontece sem conflitos na maioria
das vezes alis, essa a ideia.
As sees a seguir mostraro como acontece a sincronizao do trabalho de dois desenvolvedores nos
controles de verso centralizado e distribudo.
Sincronizao no Controle de Verso Centralizado

(1) Duas cpias de trabalho so criadas a partir do comando checkout. As duas iniciam no mesmo
estado.

Processo de Desenvolvimento de Sistemas
Desenvolvimento de Sistemas pgina 7 Prof. Hugo Estevam Longo

(2) Os dois desenvolvedores executam modificaes nas suas cpias de trabalho, mas Aline publica
antes no repositrio.


(3) Roberto tenta publicar suas alteraes, mas o controle de verso recusa justificando que as
alteraes foram baseadas em arquivos desatualizados. No caso, um ou mais arquivos alterados por
Roberto j haviam sido alterados por Aline antes.

Processo de Desenvolvimento de Sistemas
Desenvolvimento de Sistemas pgina 8 Prof. Hugo Estevam Longo

(4) Na atualizao da cpia de trabalho, o controle de verso j mescla automaticamente as revises.


(5) Aps conferir se a atualizao e a mesclagem produziram o resultado desejado, Roberto envia as
mudanas ao repositrio. Enquanto isso, Aline j trabalha em outra tarefa, executando novas alteraes.

Processo de Desenvolvimento de Sistemas
Desenvolvimento de Sistemas pgina 9 Prof. Hugo Estevam Longo

(6) O commit de Aline pode ser aceito sem problema se nenhuma das revises que vieram depois da
atualizao da cpia de trabalho tiver alterado os mesmos arquivos que Aline. uma situao possvel
de acontecer, mesmo que no seja comum.
Sincronizao no Controle de Verso Distribudo

(1) Roberto clona o repositrio de Aline. Agora, ambos partem do mesmo ponto.

Processo de Desenvolvimento de Sistemas
Desenvolvimento de Sistemas pgina 10 Prof. Hugo Estevam Longo

(2) Aline e Roberto publicam suas alteraes nos seus respectivos repositrios, sem interferir no
repositrio um do outro.


(3) Roberto sincroniza seu repositrio com as revises publicadas por Aline. Sua rea de trabalho no
afetada pela sincronizao.


(4) A mesclagem entre as revises de Aline e Roberto feita explicitamente na rea de trabalho de
Roberto atravs de um comando merge. Enquanto isso, Aline j gera outra reviso no seu repositrio.
Processo de Desenvolvimento de Sistemas
Desenvolvimento de Sistemas pgina 11 Prof. Hugo Estevam Longo


(5) Aps conferir se a mesclagem produziram o resultado desejado, Roberto envia as mudanas ao seu
repositrio. Paralelamente, Aline publica mais uma vez no seu repositrio.


(6) Roberto envia suas revises ao repositrio de Aline, que as combina com o histrico de revises j
existente.
5. Diferentes verses de projeto
Muitos projetos precisam de variaes especficas. Um caso tpico para customizaes feitas para
atender determinados clientes que precisam de adaptaes particulares. Outro caso comum a criao
de um ramo para experimentaes no projeto, sem comprometer a linha principal de desenvolvimento.
Processo de Desenvolvimento de Sistemas
Desenvolvimento de Sistemas pgina 12 Prof. Hugo Estevam Longo

O controle de verso oferece funcionalidades que facilitam a coordenao de ramos diferentes de
desenvolvimento em um mesmo projeto.
Consideraes Finais
Controle de verso resolve diversos problemas intrnsecos ao desenvolvimento de software. uma
prtica de engenharia de software comprovadamente eficaz. Por isso, faz parte das exigncias para
melhorias do processo de desenvolvimento de certificaes tais como CMMi, MPS-Br e SPICE.
Existem vrias ferramentas disponveis para controle de verso. Nesta disciplina usaremos o controle de
verso centralizado do Subversion. Para quem deseja usar o controle de verso em trabalhos pessoais e
divulgao do seu conhecimento, pode utilizar o controle de verso distribudo GitHub.

Вам также может понравиться