SlideShare una empresa de Scribd logo
1 de 52
O que é?
 Um sistema de controle de versão tem a finalidade de
 gerenciar diferentes versões de um artefato.

 Com isso ele oferece uma maneira muito mais
 inteligente e eficaz de organizar projetos, pois é
 possível acompanhar o histórico de desenvolvimento
Como funciona?
 Basicamente, os arquivos do projeto ficam armazenados em
  um repositório (um servidor) e o histórico de suas versões é
  salvo nele.

 Os desenvolvedores podem acessar e resgatar a ultima
  versão disponível e fazer uma cópia local, na qual poderão
  trabalhar em cima dela e continuar o processo de
  desenvolvimento.

 A cada alteração feita, é possível enviar novamente ao
  servidor e atualizar a sua versão a partir outras feitas pelos
  demais desenvolvedores
Como funciona?
Classificação
 Atualmente, os sistemas de controle de versão são
 classificados em dois tipos:

 Centralizados


 Distribuídos.
 O centralizado trabalha apenas com um servidor
 central e diversas áreas de trabalho, baseados na
 arquitetura cliente-servidor.

 Essa versão atende muito bem a maioria das equipes
 de desenvolvimento de pequeno e médio porte, e que
 trabalhem em uma rede local.
Arquitetura de um SCV centralizado
 O distribuído vai mais além. Ele é recomendado para
  equipes com muitos desenvolvedores e que se encontram
  em diferentes locais.

 Esta versão funciona da seguinte maneira: cada área de
  trabalho tem seu próprio “servidor”, ou seja, as operações
  de check-in e check-out são feitas na própria máquina.

 Porém diferentemente do centralizado, as áreas de trabalho
  podem comunicar-se entre si, recomenda-se usar um
  servidor como centro do envio dos arquivos para centralizar
  o fluxo e evitar ramificações do projeto e a perda do
  controle sobre o mesmo.
Arquitetura de um SCV distribuído
 Por ser na própria máquina, o sistema de controle
 distribuído acaba sendo mais rápido, porém exige
 maior conhecimento da ferramenta e de inicio podem
 atrapalhar o desenvolvedor.

 Portanto, por esse tratamento de mesclagem ser
 diferente, podem ocorrer situações onde o trabalho de
 alguém possa ser sobreposto e gerar tormento para os
 desenvolvedores.
Porque usar?
 Qual a necessidade de utilização de ferramentas para
 controle de versão?

 Quais as vantagens de sua utilização?
 Histórico. Registra toda a evolução do projeto, cada
  alteração sobre cada arquivo. Com essas informações sabe-
  se quem fez o que, quando e onde. Além disso, permite
  reconstruir uma revisão específica do arquivo sempre que
  desejado;

 Colaboração. O controle de versão possibilita que vários
  desenvolvedores trabalhem em paralelo sobre os mesmo
  arquivos sem que um sobrescreva o código de outro, o que
  traria reaparecimento de defeitos e perda de
  funcionalidades;

 Variações no Projeto. Mantém linhas diferentes de
  evolução do mesmo projeto. Por exemplo, mantendo uma
  versão 1.0 enquanto a equipe prepara uma versão 2.0.
Imaginem o seguinte quadro:

Você chega na sua empresa de manhã cedinho para
terminar aquele trabalho que você passou o dia anterior
fazendo, só que chegando lá você descobre que aquele
estagiário novo alterou acidentalmente os arquivos que
você tanto demorou pra fazer. É um desespero não? Seu
prazo está estourado e você vai ter que passar a
madrugada toda trabalhando para poder entregar o
trabalho em tempo.
 Utilizando um sistema de controle de versão isso
 poderia ser facilmente resolvido com um simples
 comando.

 Isso porque todo o código( assim como seu histórico )
 fica guardado em um servidor.
Exemplos de soluções
 Soluções comerciais

 Microsoft Visual SourceSafe (VSS) – produto da Microsoft
  para controle de versão, integrado a muitas IDEs da
  Microsoft.

 Rational ClearCase – produto da IBM para controle de
  versão.

 Borland StarTeam – produto da Borland para controle de
  versão e de equipe.
 Soluções livres

 Concurrent Version System (CVS) – software livre clássico e bem
    testado.
   Subversion (SVN)
   Git – Software para controle de versão distribuído com foco na
    velocidade.
   MediaWiki – software livre que possui um sistema integrado de
    controle de versões. Sites com os projetos da Wikimedia, tal como a
    Wikipédia mantém o sistema MediaWiki para o controle das versões
    dos documentos. Esse sistema permite o trabalho simultâneo de
    milhares de voluntários.
   GNU CSSC
   Revision Control System (RCS)
   Bazaar
   Darcs
   Mercurial
   Monotone
   SVK
Subversion
 Subversion é um sistema de controle de versão
 livre/open-source. Isto é, o Subversion gerencia
 arquivos e diretórios, e as modificações feitas neles ao
 longo do tempo.

 Isto permite que você recupere versões antigas de seus
 dados, ou que examine o histórico de suas alterações.
 Devido a isso, muitas pessoas tratam um sistema de
 controle de versão como uma espécie de “máquina do
 tempo”.
Características do Subversion
 Versionamento de diretórios
 Histórico de versões efetivo
 Commits atômicos
 Versionamento de metadados
 “Adaptabilidade”
Versionamento de diretórios
 O Subversion implementa um sistema de arquivos
   “virtual”



 Esse diretório fica sob
  controle de versão que
  rastreia modificações a toda
  a árvore de diretório ao
  longo do tempo.
Histórico de versões efetivo
 Como o CVS é limitado apenas ao versionamento de
 arquivos, operações como cópia e renomeação—que
 podem ocorrer com arquivos também, mas que são
 realmente alterações no conteúdo de algum diretório.

 Com o Subversion, você pode adicionar, excluir, copiar,
 e renomear ambos os arquivos ou diretórios. E cada
 novo arquivo adicionado começa com um histórico
 próprio e completamente novo.
Commits atômicos
 Um conjunto de modificações ou é inteiramente
 registrado no repositório, ou não é registrado de forma
 nenhuma.

 Isto possibilita aos desenvolvedores criarem e
 registrarem alterações como blocos lógicos, e também
 evita problemas que possam ocorrer quando apenas
 uma parte de um conjunto de alterações seja enviada
 com sucesso ao repositório.
 Versionamento de metadados

Cada arquivo e diretório tem um conjunto de propriedades—
chaves e seus valores—associados consigo. Você pode criar e
armazenar quaisquer pares chave/valor que quiser. As
propriedades são versionadas ao longo do tempo, tal como os
conteúdos de arquivo.

 Adaptabilidade

O Subversion não tem qualquer bagagem histórica; ele é
implementado como um conjunto de bibliotecas C
compartilhadas com APIs bem definidas. Isto torna o
Subversion extremamente manutenível e usável por outras
aplicações e linguagens.
Arquitetura do subversion
GIT
 O Git é um sistema de controle de versão, projetado
 basicamente para facilitar a vida de quem quer
 executar projetos em equipe, permitindo que duas ou
 mais pessoas trabalhem juntas.

 Também é utilizado por quem trabalha sozinho,
 devido a possibilidade de ‘controlar’ as versões do
 projeto.
Mercurial
 Mercurial é uma ferramenta multi-plataforma
 de controle de versão distribuído para desenvolvedores
 de software. O sistema é implementado
 principalmente em Python e C.

 Mercurial foi inicialmente escrito para rodar sobre
 Linux, mas foi portado para Windows, Mac OS X, e a
 maioria dos outros sistemas UNIX.
Estudo comparativo
ESTUDO DE CASO: Jabil do Brasil
  Empresa: Jabil do Brasil
  Problema: Falta de sincronia no desenvolvimento de projetos
  Impacto: Quantidade excessiva de retrabalho e falha no cumprimento de prazos
ESTUDO DE CASO: Jabil do Brasil
  Solução Inicial: Utilização de ferramenta SVN (Tortoise)


  Problemas:
         Falta de conhecimento técnico no uso da ferramenta
         Resistência à mudanças por parte dos desenvolvedores
ESTUDO DE CASO: Jabil do Brasil
  Solução: Treinamento no uso da ferramenta


  Impactos:
        Melhorias no processo de integração de módulos dos sistemas
        Agilidade incrementada na entrega dos projetos
ESTUDO DE CASO: Jabil do Brasil
  Novo desafio: Desenvolvimento e implantação de
     sistemas em escala global

  Problemas: A solução atual não atendia as necessidades


  Impactos:
           Dificuldade no controle dos módulos produzidos
           Impossibilidade da implantação do mesmo
            em outras filiais.
ESTUDO DE CASO: Jabil do Brasil
  O problema estava na ferramenta?
ESTUDO DE CASO: Jabil do Brasil
  O problema estava nos processos e metodologias
   como um todo
ESTUDO DE CASO: Jabil do Brasil
  Solução: Padronização dos processos como um todo (best
     practices), assim como ferramentas de auxílio para
     desenvolvimento distribuído.

  Impactos:
           Possibilidade de trabalho conjunta com outras filiais.
           Criação e implantação de sistema em escala global.
Sistema IT Spare Control
Considerações Finais
 Controle de versão resolve diversos problemas intrínsecos
  ao desenvolvimento de software. É uma prática de
  engenharia de software comprovadamente eficaz. Por isso,
  faz parte das exigências para melhorias do processo de
  desenvolvimento de certificações tais como CMMi, MPS-Br
  e SPICE.

 Existem várias ferramentas disponíveis para controle de
  versão. Para o controle de versão centralizado, é
  recomendado o Subversion. Para quem deseja usar o
  controle de versão distribuído, o Mercurial e o Git são as
  mais recomendadas.
Referências
 SVN
http://svnbook-pt-br.googlecode.com/svn/snapshots/1.4/svn.intro.whatis.html


 Comparação
http://pronus.eng.br/blog/http:/pronus.eng.br/blog/comparacao-entre-
subversion-mercurial-e-git-parte-1


 Outras Informações
http://www.slideshare.net/IvaniltonPolato/gerenciadores-de-controle-de-verso-
git-mercurial-e-bazaar

http://www.pronus.eng.br/artigos_tutoriais/gerencia_configuracao/conceitos_ba
sicos_controle_versao_centralizado_e_distribuido.php

Más contenido relacionado

La actualidad más candente

Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de software
elliando dias
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de Configuração
Wagner Zaparoli
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Sérgio Souza Costa
 

La actualidad más candente (20)

Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de software
 
X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de Software
 
Padrões MVC
Padrões MVCPadrões MVC
Padrões MVC
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
Modelos de Engenharia de Software
Modelos de Engenharia de SoftwareModelos de Engenharia de Software
Modelos de Engenharia de Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Treinamento de Scrum
Treinamento de ScrumTreinamento de Scrum
Treinamento de Scrum
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introdução
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de Configuração
 
COMO SE TORNAR UM GP PMBOK 7 AINDA EM 2021
COMO SE TORNAR UM GP PMBOK 7 AINDA EM 2021COMO SE TORNAR UM GP PMBOK 7 AINDA EM 2021
COMO SE TORNAR UM GP PMBOK 7 AINDA EM 2021
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de Software
 
Fundamentos do java
Fundamentos do javaFundamentos do java
Fundamentos do java
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
 
Modelos de Processo de Software Parte 2
Modelos de Processo de Software Parte 2Modelos de Processo de Software Parte 2
Modelos de Processo de Software Parte 2
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 

Destacado

Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de Versão
Jonathas Silva
 
Controle de versão
Controle de versãoControle de versão
Controle de versão
Zé Pereira
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
ocfelipe
 

Destacado (20)

Git - Controle de Versões do Jeito Certo
Git - Controle de Versões do Jeito CertoGit - Controle de Versões do Jeito Certo
Git - Controle de Versões do Jeito Certo
 
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisPlano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiais
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de Versão
 
Testes de software
Testes de softwareTestes de software
Testes de software
 
Controle de versão - GIT
Controle de versão - GITControle de versão - GIT
Controle de versão - GIT
 
Controle de versão
Controle de versãoControle de versão
Controle de versão
 
Git in 5 Minutes
Git in 5 MinutesGit in 5 Minutes
Git in 5 Minutes
 
Git - Controle de Versão Inteligente
Git - Controle de Versão InteligenteGit - Controle de Versão Inteligente
Git - Controle de Versão Inteligente
 
Sistema de Controle de Versão - CVS, SVN e GIT
Sistema de Controle de Versão - CVS, SVN e GITSistema de Controle de Versão - CVS, SVN e GIT
Sistema de Controle de Versão - CVS, SVN e GIT
 
A brief introduction to version control systems
A brief introduction to version control systemsA brief introduction to version control systems
A brief introduction to version control systems
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de código
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & Git
 
What is version control software and why do you need it?
What is version control software and why do you need it?What is version control software and why do you need it?
What is version control software and why do you need it?
 
Version Control with SVN
Version Control with SVNVersion Control with SVN
Version Control with SVN
 
Git Presentation
Git PresentationGit Presentation
Git Presentation
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control System
 
Basic Git Intro
Basic Git IntroBasic Git Intro
Basic Git Intro
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 

Similar a Sistemas de controle de versão

Aula 4 gerência de configuração de software1
Aula 4   gerência de configuração de software1Aula 4   gerência de configuração de software1
Aula 4 gerência de configuração de software1
Tiago Vizoto
 
Curso de CVS - Parte 1 - Introdução
Curso de CVS - Parte 1 - IntroduçãoCurso de CVS - Parte 1 - Introdução
Curso de CVS - Parte 1 - Introdução
Marden Neubert
 
CVS - Slides Parte 1 - Introdução
CVS - Slides Parte 1 - IntroduçãoCVS - Slides Parte 1 - Introdução
CVS - Slides Parte 1 - Introdução
Marden Neubert
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
Carlos Gonzaga
 

Similar a Sistemas de controle de versão (20)

MiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIEMiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIE
 
Svn - grupo de estudos sol7
Svn - grupo de estudos sol7Svn - grupo de estudos sol7
Svn - grupo de estudos sol7
 
Gerência de configuração ágil
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágil
 
Controle de versões com o Subversion
Controle de versões com o SubversionControle de versões com o Subversion
Controle de versões com o Subversion
 
Aula 4 gerência de configuração de software1
Aula 4   gerência de configuração de software1Aula 4   gerência de configuração de software1
Aula 4 gerência de configuração de software1
 
Curso de CVS - Parte 1 - Introdução
Curso de CVS - Parte 1 - IntroduçãoCurso de CVS - Parte 1 - Introdução
Curso de CVS - Parte 1 - Introdução
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
CVS - Slides Parte 1 - Introdução
CVS - Slides Parte 1 - IntroduçãoCVS - Slides Parte 1 - Introdução
CVS - Slides Parte 1 - Introdução
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
 
ARTIGO ANÁLISE COMPARATIVA DE SISTEMAS DE CONTROLE DE VERSÕES BASEADOS EM CÓD...
ARTIGO ANÁLISE COMPARATIVA DE SISTEMAS DE CONTROLE DE VERSÕES BASEADOS EM CÓD...ARTIGO ANÁLISE COMPARATIVA DE SISTEMAS DE CONTROLE DE VERSÕES BASEADOS EM CÓD...
ARTIGO ANÁLISE COMPARATIVA DE SISTEMAS DE CONTROLE DE VERSÕES BASEADOS EM CÓD...
 
Integração Contínua com CVS, CruiseControl, AntHill, Gump
Integração Contínua com CVS, CruiseControl, AntHill, GumpIntegração Contínua com CVS, CruiseControl, AntHill, Gump
Integração Contínua com CVS, CruiseControl, AntHill, Gump
 
Automatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOpsAutomatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOps
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Git + Github
Git + GithubGit + Github
Git + Github
 
O_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdf
O_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdfO_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdf
O_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdf
 
Bugs, DVCS e tools
Bugs, DVCS e toolsBugs, DVCS e tools
Bugs, DVCS e tools
 

Más de Marcos Pessoa

Más de Marcos Pessoa (10)

Protocolo FTP e DNS
Protocolo FTP e DNSProtocolo FTP e DNS
Protocolo FTP e DNS
 
Data warehousing - Técnicas e procedimentos
Data warehousing - Técnicas e procedimentosData warehousing - Técnicas e procedimentos
Data warehousing - Técnicas e procedimentos
 
Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)
Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)
Modelo entidade-relacionamento - SIGEM (sistema de gestão de materiais)
 
Ferramentas de automação de teste
Ferramentas de automação de testeFerramentas de automação de teste
Ferramentas de automação de teste
 
Tipos de automação de teste
Tipos de automação de testeTipos de automação de teste
Tipos de automação de teste
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Inovacao Organizacional - App's tecnologia mobile
Inovacao Organizacional - App's tecnologia mobileInovacao Organizacional - App's tecnologia mobile
Inovacao Organizacional - App's tecnologia mobile
 
Etnografia e usabilidade
Etnografia e usabilidadeEtnografia e usabilidade
Etnografia e usabilidade
 
Exercise Planning - Uma ferramenta de apoio ao meio educacional
Exercise Planning - Uma ferramenta de apoio ao meio educacionalExercise Planning - Uma ferramenta de apoio ao meio educacional
Exercise Planning - Uma ferramenta de apoio ao meio educacional
 
Petic Marinha
Petic MarinhaPetic Marinha
Petic Marinha
 

Último

Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
sh5kpmr7w7
 

Último (20)

Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdf
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 

Sistemas de controle de versão

  • 1.
  • 2. O que é?  Um sistema de controle de versão tem a finalidade de gerenciar diferentes versões de um artefato.  Com isso ele oferece uma maneira muito mais inteligente e eficaz de organizar projetos, pois é possível acompanhar o histórico de desenvolvimento
  • 3. Como funciona?  Basicamente, os arquivos do projeto ficam armazenados em um repositório (um servidor) e o histórico de suas versões é salvo nele.  Os desenvolvedores podem acessar e resgatar a ultima versão disponível e fazer uma cópia local, na qual poderão trabalhar em cima dela e continuar o processo de desenvolvimento.  A cada alteração feita, é possível enviar novamente ao servidor e atualizar a sua versão a partir outras feitas pelos demais desenvolvedores
  • 5. Classificação  Atualmente, os sistemas de controle de versão são classificados em dois tipos:  Centralizados  Distribuídos.
  • 6.  O centralizado trabalha apenas com um servidor central e diversas áreas de trabalho, baseados na arquitetura cliente-servidor.  Essa versão atende muito bem a maioria das equipes de desenvolvimento de pequeno e médio porte, e que trabalhem em uma rede local.
  • 7. Arquitetura de um SCV centralizado
  • 8.  O distribuído vai mais além. Ele é recomendado para equipes com muitos desenvolvedores e que se encontram em diferentes locais.  Esta versão funciona da seguinte maneira: cada área de trabalho tem seu próprio “servidor”, ou seja, as operações de check-in e check-out são feitas na própria máquina.  Porém diferentemente do centralizado, as áreas de trabalho podem comunicar-se entre si, recomenda-se usar um servidor como centro do envio dos arquivos para centralizar o fluxo e evitar ramificações do projeto e a perda do controle sobre o mesmo.
  • 9. Arquitetura de um SCV distribuído
  • 10.  Por ser na própria máquina, o sistema de controle distribuído acaba sendo mais rápido, porém exige maior conhecimento da ferramenta e de inicio podem atrapalhar o desenvolvedor.  Portanto, por esse tratamento de mesclagem ser diferente, podem ocorrer situações onde o trabalho de alguém possa ser sobreposto e gerar tormento para os desenvolvedores.
  • 11. Porque usar?  Qual a necessidade de utilização de ferramentas para controle de versão?  Quais as vantagens de sua utilização?
  • 12.  Histórico. Registra toda a evolução do projeto, cada alteração sobre cada arquivo. Com essas informações sabe- se quem fez o que, quando e onde. Além disso, permite reconstruir uma revisão específica do arquivo sempre que desejado;  Colaboração. O controle de versão possibilita que vários desenvolvedores trabalhem em paralelo sobre os mesmo arquivos sem que um sobrescreva o código de outro, o que traria reaparecimento de defeitos e perda de funcionalidades;  Variações no Projeto. Mantém linhas diferentes de evolução do mesmo projeto. Por exemplo, mantendo uma versão 1.0 enquanto a equipe prepara uma versão 2.0.
  • 13. Imaginem o seguinte quadro: Você chega na sua empresa de manhã cedinho para terminar aquele trabalho que você passou o dia anterior fazendo, só que chegando lá você descobre que aquele estagiário novo alterou acidentalmente os arquivos que você tanto demorou pra fazer. É um desespero não? Seu prazo está estourado e você vai ter que passar a madrugada toda trabalhando para poder entregar o trabalho em tempo.
  • 14.  Utilizando um sistema de controle de versão isso poderia ser facilmente resolvido com um simples comando.  Isso porque todo o código( assim como seu histórico ) fica guardado em um servidor.
  • 15.
  • 16.
  • 17.
  • 19.  Soluções comerciais  Microsoft Visual SourceSafe (VSS) – produto da Microsoft para controle de versão, integrado a muitas IDEs da Microsoft.  Rational ClearCase – produto da IBM para controle de versão.  Borland StarTeam – produto da Borland para controle de versão e de equipe.
  • 20.  Soluções livres  Concurrent Version System (CVS) – software livre clássico e bem testado.  Subversion (SVN)  Git – Software para controle de versão distribuído com foco na velocidade.  MediaWiki – software livre que possui um sistema integrado de controle de versões. Sites com os projetos da Wikimedia, tal como a Wikipédia mantém o sistema MediaWiki para o controle das versões dos documentos. Esse sistema permite o trabalho simultâneo de milhares de voluntários.  GNU CSSC  Revision Control System (RCS)  Bazaar  Darcs  Mercurial  Monotone  SVK
  • 21. Subversion  Subversion é um sistema de controle de versão livre/open-source. Isto é, o Subversion gerencia arquivos e diretórios, e as modificações feitas neles ao longo do tempo.  Isto permite que você recupere versões antigas de seus dados, ou que examine o histórico de suas alterações. Devido a isso, muitas pessoas tratam um sistema de controle de versão como uma espécie de “máquina do tempo”.
  • 22. Características do Subversion  Versionamento de diretórios  Histórico de versões efetivo  Commits atômicos  Versionamento de metadados  “Adaptabilidade”
  • 23. Versionamento de diretórios  O Subversion implementa um sistema de arquivos “virtual”  Esse diretório fica sob controle de versão que rastreia modificações a toda a árvore de diretório ao longo do tempo.
  • 24. Histórico de versões efetivo  Como o CVS é limitado apenas ao versionamento de arquivos, operações como cópia e renomeação—que podem ocorrer com arquivos também, mas que são realmente alterações no conteúdo de algum diretório.  Com o Subversion, você pode adicionar, excluir, copiar, e renomear ambos os arquivos ou diretórios. E cada novo arquivo adicionado começa com um histórico próprio e completamente novo.
  • 25. Commits atômicos  Um conjunto de modificações ou é inteiramente registrado no repositório, ou não é registrado de forma nenhuma.  Isto possibilita aos desenvolvedores criarem e registrarem alterações como blocos lógicos, e também evita problemas que possam ocorrer quando apenas uma parte de um conjunto de alterações seja enviada com sucesso ao repositório.
  • 26.  Versionamento de metadados Cada arquivo e diretório tem um conjunto de propriedades— chaves e seus valores—associados consigo. Você pode criar e armazenar quaisquer pares chave/valor que quiser. As propriedades são versionadas ao longo do tempo, tal como os conteúdos de arquivo.  Adaptabilidade O Subversion não tem qualquer bagagem histórica; ele é implementado como um conjunto de bibliotecas C compartilhadas com APIs bem definidas. Isto torna o Subversion extremamente manutenível e usável por outras aplicações e linguagens.
  • 28. GIT  O Git é um sistema de controle de versão, projetado basicamente para facilitar a vida de quem quer executar projetos em equipe, permitindo que duas ou mais pessoas trabalhem juntas.  Também é utilizado por quem trabalha sozinho, devido a possibilidade de ‘controlar’ as versões do projeto.
  • 29.
  • 30.
  • 31.
  • 32. Mercurial  Mercurial é uma ferramenta multi-plataforma de controle de versão distribuído para desenvolvedores de software. O sistema é implementado principalmente em Python e C.  Mercurial foi inicialmente escrito para rodar sobre Linux, mas foi portado para Windows, Mac OS X, e a maioria dos outros sistemas UNIX.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 40.
  • 41.
  • 42.
  • 43. ESTUDO DE CASO: Jabil do Brasil  Empresa: Jabil do Brasil  Problema: Falta de sincronia no desenvolvimento de projetos  Impacto: Quantidade excessiva de retrabalho e falha no cumprimento de prazos
  • 44. ESTUDO DE CASO: Jabil do Brasil  Solução Inicial: Utilização de ferramenta SVN (Tortoise)  Problemas:  Falta de conhecimento técnico no uso da ferramenta  Resistência à mudanças por parte dos desenvolvedores
  • 45. ESTUDO DE CASO: Jabil do Brasil  Solução: Treinamento no uso da ferramenta  Impactos:  Melhorias no processo de integração de módulos dos sistemas  Agilidade incrementada na entrega dos projetos
  • 46. ESTUDO DE CASO: Jabil do Brasil  Novo desafio: Desenvolvimento e implantação de sistemas em escala global  Problemas: A solução atual não atendia as necessidades  Impactos:  Dificuldade no controle dos módulos produzidos  Impossibilidade da implantação do mesmo em outras filiais.
  • 47. ESTUDO DE CASO: Jabil do Brasil  O problema estava na ferramenta?
  • 48. ESTUDO DE CASO: Jabil do Brasil  O problema estava nos processos e metodologias como um todo
  • 49. ESTUDO DE CASO: Jabil do Brasil  Solução: Padronização dos processos como um todo (best practices), assim como ferramentas de auxílio para desenvolvimento distribuído.  Impactos:  Possibilidade de trabalho conjunta com outras filiais.  Criação e implantação de sistema em escala global.
  • 50. Sistema IT Spare Control
  • 51. Considerações Finais  Controle de versão resolve diversos problemas intrínsecos ao desenvolvimento de software. É uma prática de engenharia de software comprovadamente eficaz. Por isso, faz parte das exigências para melhorias do processo de desenvolvimento de certificações tais como CMMi, MPS-Br e SPICE.  Existem várias ferramentas disponíveis para controle de versão. Para o controle de versão centralizado, é recomendado o Subversion. Para quem deseja usar o controle de versão distribuído, o Mercurial e o Git são as mais recomendadas.
  • 52. Referências  SVN http://svnbook-pt-br.googlecode.com/svn/snapshots/1.4/svn.intro.whatis.html  Comparação http://pronus.eng.br/blog/http:/pronus.eng.br/blog/comparacao-entre- subversion-mercurial-e-git-parte-1  Outras Informações http://www.slideshare.net/IvaniltonPolato/gerenciadores-de-controle-de-verso- git-mercurial-e-bazaar http://www.pronus.eng.br/artigos_tutoriais/gerencia_configuracao/conceitos_ba sicos_controle_versao_centralizado_e_distribuido.php