Controle de Versões em Software: GCS
Controle de Versões em Software: GCS
Imprimir
CONTROLE DE VERSÕES
0
seõçatona reV
Roque Maitino Neto
Fonte: Shutterstock.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE&… 1/23
04/11/2023, 10:14 lddkls211_eng_sof
0
obrigam) a convocação de mão de obra variada para que o desafio seja
seõçatona reV
levado a bom termo. As consequências dessa união de forças são
naturalmente benéficas, mas exigem providências bem coordenadas
para o correto gerenciamento da evolução das versões do produto, sob
pena de perda de controle das alterações feitas nessas versões.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE&… 2/23
04/11/2023, 10:14 lddkls211_eng_sof
0
Assim, o desafio que agora se apresenta a você é o de novamente
convencer seus pares quanto à adoção de um recurso, desta vez de um
seõçatona reV
sistema de controle de versões de software. E novamente o meio de que
você se utilizará será o da informação, com o adicional de uma exibição
prática da ferramenta GitHub de controle de versão.
DICA
CONCEITO-CHAVE
Um software é um produto em constante evolução. Da sua concepção
até a entrega (e além dela), ele nasce, cresce e carece de manutenção ao
longo de um ciclo de vida bem definido e conhecido. Na condição de um
produto dinâmico, seu processo de construção e sua manutenção
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE&… 3/23
04/11/2023, 10:14 lddkls211_eng_sof
0
das revisões é necessário, o que é atingido por meio da utilização de
seõçatona reV
uma ferramenta de controle de versões.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE&… 4/23
04/11/2023, 10:14 lddkls211_eng_sof
Como o GCS não se resume a uma ação apenas, ele é composto por
uma série de atividades bem definidas e estruturadas. De acordo com
IEEE (2004), essas atividades incluem: gerenciamento e planejamento do
processo de GCS, identificação de configuração do software, controle de
0
configuração de software, controle de status de configuração de
seõçatona reV
software, auditoria de configuração de software, gerenciamento da
entrega e do lançamento de software e configuração das ferramentas
de gerenciamento. A Figura 1.10 ilustra essas atividades em uma
estrutura hierárquica.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE&… 5/23
04/11/2023, 10:14 lddkls211_eng_sof
0
identifica os itens a serem controlados, estabelece esquemas de
identificação para os itens e suas versões e, por fim, estabelece as
seõçatona reV
ferramentas e técnicas a serem utilizadas na aquisição e no
gerenciamento de itens controlados.
ASSIMILE
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE&… 6/23
04/11/2023, 10:14 lddkls211_eng_sof
0
outros desafios. No entanto, a transição será tão mais simples
seõçatona reV
quanto mais eficiente for o trabalho das equipes de gerenciamento e
de implementação do GCS. Ao utilizarem o sistema, os
desenvolvedores e outros atores do processo de criação do software
deverão compreender seus potenciais benefícios e o esforço que
conseguirão evitar por meio da automação de tarefas e da
eliminação de erros. Atualmente, as ferramentas de gerenciamento
de configuração de um software automatizam todas as tarefas
repetitivas, facilitando assim a atuação do pessoal envolvido com o
produto.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE&… 7/23
04/11/2023, 10:14 lddkls211_eng_sof
0
apenas por serem obrigados a isso. A potencial hostilidade voltada
seõçatona reV
ao GCS pode ser eliminada se os desenvolvedores forem educados
nos princípios da prática e esclarecidos sobre seus benefícios. As
ferramentas atuais de GCS proporcionam um nível fenomenal de
automação, o que acaba contribuindo para que outros atores do
processo de desenvolvimento acabem se beneficiando delas,
incluindo testadores e pessoal de qualidade, manutenção e suporte.
REFLITA
CONTROLE DE VERSÕES
Feita a contextualização do Gerenciamento de Configuração do
Software com o ambiente em que o controle de versões está inserido,
avançamos para a abordagem desse tema. De acordo com Caetano
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE&… 8/23
04/11/2023, 10:14 lddkls211_eng_sof
0
Recuperar versões anteriores do sistema.
seõçatona reV
Auditar as modificações realizadas, levantando quem alterou,
quando alterou e o que alterou.
REPOSITÓRIO
Todas essas funções parecem convergir para um elemento bem
definido: a centralização dos dados. E se não tivéssemos essa
centralização? Bem, o uso descentralizado de um arquivo de código-
fonte, por exemplo, permitiria que vários programadores acessassem
vários arquivos e cada alteração feita nele não seria refletida nos
demais. Assim, o desenvolvimento paralelo seria inviável e o conflito
entre desenvolvedores inevitável. O recurso que as ferramentas de
controle de versão (abordadas a seguir) usam é o repositório, local em
que programas em desenvolvimento, fotos, vídeos e demais arquivos
ficam armazenados e podem ser acessados de forma controlada por
todos os envolvidos no desenvolvimento do produto.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE&… 9/23
04/11/2023, 10:14 lddkls211_eng_sof
0
O termo também é usado para se referir a uma versão específica de um
seõçatona reV
item de configuração de software que foi acordado e, em qualquer caso,
a baseline só pode ser alterada por meio de procedimentos formais de
controle de mudanças. Uma baseline, junto com todas as alterações
aprovadas na linha de base, representa a configuração aprovada atual.
BRANCHES
A Gerência de Configuração de Software também permite que a
implementação de novas funcionalidades por uma equipe seja realizada
em paralelo, mas de forma isolada e independente das modificações de
outros desenvolvedores. O isolamento é obtido com uso de
ramificações (branches). As linhas de desenvolvimento (codelines) são
designadas para cada projeto e são compartilhadas por vários
desenvolvedores. A primeira linha de desenvolvimento definida no
projeto é, por convenção, nomeada mainline. O ramo é criado no
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 10/23
04/11/2023, 10:14 lddkls211_eng_sof
0
ramos um diferencial (DANTAS, 2009).
seõçatona reV
FERRAMENTAS DE CONTROLE DE VERSÃO
Como era de se esperar, as funções próprias do controle de versões
podem (e devem) ser executadas por uma ferramenta computacional,
fato que naturalmente apresenta indiscutíveis vantagens em relação a
uma eventual execução manual. O mercado disponibiliza ótimas
ferramentas de controle de versão e três delas serão abordadas na
sequência. Os critérios para adoção da ferramenta mais adequada
deverão variar entre organizações, mas vale o alerta de que nenhuma
decisão deve ser tomada com base na convicção de que ela fará as
vezes de um compilador, de que substituirá o gerente do projeto, ou de
que ela pode se tornar um meio de automatizar testes. Passemos,
então, à discussão de duas das mais importantes e utilizadas
ferramentas de controle de versão.
GIT E GITHUB
Nossa primeira providência, ao tratarmos das ferramentas Git e GitHub,
será a de diferenciá-las. Apesar de terem nomes bastante parecidos e
de serem produtos do mesmo desenvolvedor, suas funções são
distintas: o Git é uma ferramenta de controle de versão bastante
popular entre desenvolvedores e apresenta recursos de colaboração
bastante aprimorados, incluindo fóruns de discussão para os projetos
em desenvolvimento e para abordagem das alterações em curso.
Presente também em outras ferramentas de controle de versão, os
branches implementados no Git viabilizam o trabalho em paralelo entre
membros da equipe e o controle de subprojetos que um desenvolvedor
pode manter para experimentos próprios, incluindo correção de bugs e
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 11/23
04/11/2023, 10:14 lddkls211_eng_sof
0
O Git é um sistema de controle de versão gratuito e de código aberto,
concebido para lidar com todos os projetos, desde os pequenos até
seõçatona reV
aqueles bem grandes e que movimentam praticamente toda as equipes.
Ele é bem fácil de ser aprendido e ocupará pouco espaço do servidor.
Além disso, seu desempenho é bastante satisfatório. Mas e a
segurança? Bem, o modelo de dados que o Git usa garantirá a
integridade criptográfica de cada bit dos projetos. Cada arquivo e cada
operação de commit passa por verificação de checksum, operação
também aplicada em sua recuperação. Será impossível extrair qualquer
coisa do Git além dos bits exatos que foram adicionados.
0
1. Acesse a página de cadastro (GITHUB, c2020) e preencha os espaços
seõçatona reV
com os dados solicitados.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 13/23
04/11/2023, 10:14 lddkls211_eng_sof
0
seõçatona reV
Fonte: captura de tela do GitHub.
5. Neste ponto, uma tela com uma série de opções será oferecida,
conforme ilustra a Figura 1.12.
A partir deste ponto, você pode criar seus arquivos de código ou fazer
upload de um já existente em sua máquina.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 14/23
04/11/2023, 10:14 lddkls211_eng_sof
0
Commit. O arquivo escolhido foi Maior.java, uma aplicação simples em
seõçatona reV
Java, que exibe o maior valor entre os oito informados pelo usuário via
teclado.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 15/23
04/11/2023, 10:14 lddkls211_eng_sof
0
seõçatona reV
Fonte: adaptado de Caetano (2004, p. 15).
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 16/23
04/11/2023, 10:14 lddkls211_eng_sof
0
seõçatona reV
Fonte: GNU ([s.d.]).
EXEMPLIFICANDO
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 17/23
04/11/2023, 10:14 lddkls211_eng_sof
0
operação do CVS inclui um repositório central e três usuários,
seõçatona reV
cada um com sua cópia de trabalho. As transições de
comandos update (ou check-out) e commit (ou check-in)
também estão representadas na Figura 1.15.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 18/23
04/11/2023, 10:14 lddkls211_eng_sof
0
seõçatona reV
Figura 1.16 | Representação de revisões mais recentes no número à direita
ASSIMILE
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 19/23
04/11/2023, 10:14 lddkls211_eng_sof
0
de um software (CAETANO, 2004).
seõçatona reV
Merge: refere-se à fusão das diversas modificações feitas por
diferentes usuários na cópia local de um mesmo arquivo. Sempre
que alguém altera o código, é necessário realizar uma atualização
antes da aplicação da operação de commit, a fim de que seja feita a
fusão das mudanças.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 20/23
04/11/2023, 10:14 lddkls211_eng_sof
0
seõçatona reV
Questão 2
Como o GCS não se resume a uma ação apenas, ele é composto por
uma série de atividades bem definidas e estruturadas. De acordo com
IEEE (2004), essas atividades incluem: o gerenciamento e o
planejamento do processo de GCS, a identificação de configuração do
software, o controle de configuração de software, o controle de status
de configuração de software, a auditoria de configuração de software, o
gerenciamento da entrega e do lançamento de software e a
configuração das ferramentas de gerenciamento.
a. Teste de software.
b. Projeto de software.
c. Segurança de dados.
e. Desenvolvimento profissional.
Questão 3
A qualidade de um projeto de software é diretamente proporcional à
qualidade dos processos adotados nas diversas fases do seu ciclo de
vida. O controle de versões é visto como uma extensão natural do
processo de desenvolvimento, permitindo que se possa paralelizar o
desenvolvimento de forma coerente e padronizada, especialmente em
se tratando de um conjunto muito grande de desenvolvedores
(CAETANO, 2004).
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 21/23
04/11/2023, 10:14 lddkls211_eng_sof
0
necessárias.
seõçatona reV
b. Importação dos arquivos para o repositório de arquivos no servidor, transferência dos
arquivos do servidor para a área de trabalho, realização das modificações necessárias e
submissão da versão modificada para o servidor.
c. Aplicação das ações de copiar e colar na área de trabalho do arquivo a ser alterado,
efetivação das modificações necessárias e aplicação das ações de copiar e colar o arquivo
alterado no servidor.
e. Importação dos arquivos para o repositório de arquivos na área de trabalho, realização das
modificações necessárias, transferência dos arquivos do servidor para a área de trabalho e
submissão da versão modificada para o servidor.
REFERÊNCIAS
CAETANO, C. CVS – Controle de Versões e Desenvolvimento Colaborativo
de Software. São Paulo: Novatec Editora, 2004.
GIT FOR WINDOWS. Git for Windows – Version 2.29.2.3. Git for
Windows, [S.l.], 2020. Disponível em: https://gitforwindows.org/. Acesso
em: 13 dez. 2020.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 22/23
04/11/2023, 10:14 lddkls211_eng_sof
0
Disponível em: https://bit.ly/3r8DGWC. Acesso em: 28 nov. 2020.
seõçatona reV
MAILUND, T. The Beginner’s Guide to GitHub. [S.l.: s.n.], 2017. E-book.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=ismaelfrancopvh%40gmail.com&usuarioNome=ISMAEL+FRANCO+DE+OLIVEIRA&disciplinaDescricao=ENGENHARIA+DE+SOFTWARE… 23/23