Doutorado em Ciência da ComputaçãoGerência de Configuração                Making Sense of Revision-Control                ...
ORGANIZAÇÃO Contextualização Ramos (branches) e Junção (merging)   SCV2   Centralizado versus SCV Distribuído Conclusõ...
Contextualização                   3
Software é …complicado?complexo?               4
5
Os métodos utilizados para gerenciar o  desenvolvimento de um software    refletem a sua complexidade.                    ...
Mas …if (Gerência de Configuração == “o controle da evolução de                                  sistemas complexos”)     ...
 CVS (Concurrent Versions System)  Dominou o mercado por mais de uma década  Limitações  Sistema legado Subversion (S...
Modelo Cliente/Servidor                      [Tanenbaum 2007]                                         9
Modelo Cliente/Servidor e o Controle de VersõesVisão limitada dos dados                                        CVS ou SVN ...
Qual ferramenta de controle de versão           devo escolher?                                        11
Team Foundation    Server   PVCS Pro   ClearCase                  12
“All revision-control systems come with    complicated sets of trade-offs.”                                          13
“How do you find the best match                                             between tool and team?”                       ...
 Início dos anos 2000 Projetos buscando algo DIFERENTE do modelo centralizado Mais populares Git Mercurial           ...
Modelo Peer-to-Peer                [Tanenbaum 2007]                                   16
Modelo Peer-to-Peer e o Controle de Versõescheck-in                                                    clone/pull         ...
Tarefas básicas de um Sistema de Controle de Versões História dos arquivos  Quem fez uma mudança  Quando e por qual mot...
Fatos em Sistema de Controle de Versões Cada ferramenta tem sua própria abordagem de trabalho e colaboração Cada ferrame...
Onde está o problema?Desenvolvimento Concorrente/Paralelo    Como gerenciar grandes projetos ???                          ...
Ramos (branches) e Junções (merging)                                       21
Árvore de evolução histórica de um projeto                                                                                ...
Cenário de Riscos        Desenvolvimento concorrente + SCV centralizado• Programador habituado com bugs em módulos não rel...
Cenário de Riscos          Desenvolvimento concorrente + SCV centralizado• Branches isolados por muito tempo  Equipes em ...
1– Alice e Bob fazem check-out da versão 1052 – Alice faz check-in e a versão é atualizada para 1063 – Se Bob tentar fazer...
Cenário Ideal           Desenvolvimento concorrente + SCV distribuído• Repositório contém uma cópia completa do histórico ...
1– Alice clona uma cópia do repositório de Bob (ou de um servidor)2 – Alice faz check-out e check-in localmente3 – Oportun...
SCV Centralizado versus SCV Distribuído                                          28
Flexibilidade             SVN                          Git e MercurialConvenção em /trunk e /branches   Repositório tratad...
Publicação de Mudanças               SVN                             Git e MercurialMerge crítico (sintática/semântica)   ...
Merges e Nomes de Arquivos/Diretórios                SVN                        Git e MercurialArquivos renomeados não são...
Nova forma de identificar bugs                         Git e Mercurial• Comando bisect  Compara versão SEM bug e versão C...
Pontos Positivos das Ferramentas Centralizadas• Gerenciamento de arquivos binários (lock)• História linear de um branch fa...
Conclusões             34
Quando usar o quê?• SCV Centralizado  Equipe altamente engajada e estruturada.  Equipe com acesso de escrita ao servidor...
Quando usar o quê?• SCV Centralizado  Versionamento de arquivos binários  Controle de acesso no nível de arquivos       ...
Quando usar o quê?• SCV Distribuído  Membros da equipe passam muito tempo em viagem e/ou  no cliente.  Projeto exige agi...
http://noticias.uol.com.br/album/110318_terremotonojapao_4_album.jhtm?abrefoto=78#fotoNav=72                              ...
39
“Choosing a revision-control system is a question  with a surprisingly small number of absolute answers.The fundamental is...
Referências[1] O’Sullivan, B. Making sense of revision-control systems. Communications of the ACM, v.52,n.9, p.56-62. 2009...
Próximos SlideShares
Carregando em…5
×

Making Sense of Revision-Control Systems

531 visualizações

Publicada em

Apresentação do artigo com o mesmo título realizada na disciplina Gerência de Configuração do doutorado em Ciência da Computação da Universidade Federal Fluminense.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
531
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Making Sense of Revision-Control Systems

  1. 1. Doutorado em Ciência da ComputaçãoGerência de Configuração Making Sense of Revision-Control Systems 1 Luiz Matos Rio Branco, Maio de 2012. 1 Slides concedidos sob [1] O’Sullivan, B. Making sense of revision-control systems. Communications of the ACM, v.52, n.9, p.56-62. 2009. Licença Creative Commons.
  2. 2. ORGANIZAÇÃO Contextualização Ramos (branches) e Junção (merging) SCV2 Centralizado versus SCV Distribuído Conclusões 2 Sistema de Controle de Versões 2
  3. 3. Contextualização 3
  4. 4. Software é …complicado?complexo? 4
  5. 5. 5
  6. 6. Os métodos utilizados para gerenciar o desenvolvimento de um software refletem a sua complexidade. 6
  7. 7. Mas …if (Gerência de Configuração == “o controle da evolução de sistemas complexos”) [Estublier 2000] ... 7
  8. 8.  CVS (Concurrent Versions System) Dominou o mercado por mais de uma década Limitações Sistema legado Subversion (SVN) Popularizado em meados dos anos 2000 Construído para superar as limitações do CVS 8
  9. 9. Modelo Cliente/Servidor [Tanenbaum 2007] 9
  10. 10. Modelo Cliente/Servidor e o Controle de VersõesVisão limitada dos dados CVS ou SVN (centralizados) [Murta 2012, adaptado] Metadados Histórico 10
  11. 11. Qual ferramenta de controle de versão devo escolher? 11
  12. 12. Team Foundation Server PVCS Pro ClearCase 12
  13. 13. “All revision-control systems come with complicated sets of trade-offs.” 13
  14. 14. “How do you find the best match between tool and team?” 14http://www.nextbillion.net/archive/files/images/india-call-center.jpg http://linguagenscontemporaneas.files.wordpress.com/2012/05/campus_party1.jpg
  15. 15.  Início dos anos 2000 Projetos buscando algo DIFERENTE do modelo centralizado Mais populares Git Mercurial 15
  16. 16. Modelo Peer-to-Peer [Tanenbaum 2007] 16
  17. 17. Modelo Peer-to-Peer e o Controle de Versõescheck-in clone/pull clone/pull push check-outMetadados push Metadados História História Git ou Mercurial (distribuídos) Metadados História 17
  18. 18. Tarefas básicas de um Sistema de Controle de Versões História dos arquivos  Quem fez uma mudança  Quando e por qual motivo foi realizada  Recuperação para um estado consistente (“giant UNDO key”) Permite o trabalho em subprojetos independentes  Branches 18
  19. 19. Fatos em Sistema de Controle de Versões Cada ferramenta tem sua própria abordagem de trabalho e colaboração Cada ferramenta possui suas particularidades Nenhuma vai atender os anseios de TODA a equipe de desenvolvimento 19
  20. 20. Onde está o problema?Desenvolvimento Concorrente/Paralelo Como gerenciar grandes projetos ??? 20
  21. 21. Ramos (branches) e Junções (merging) 21
  22. 22. Árvore de evolução histórica de um projeto 22 http://en.wikipedia.org/wiki/File:Revision_controlled_project_visualization-2010-24-02.svg
  23. 23. Cenário de Riscos Desenvolvimento concorrente + SCV centralizado• Programador habituado com bugs em módulos não relacionados Assume o risco utilizando branches isolados 23
  24. 24. Cenário de Riscos Desenvolvimento concorrente + SCV centralizado• Branches isolados por muito tempo  Equipes em diferentes ramos e alterações conflitantes para o mesmo código• Merge torna-se ALTAMENTE arriscado  Introdução de bugs e criação de novos problemas 24
  25. 25. 1– Alice e Bob fazem check-out da versão 1052 – Alice faz check-in e a versão é atualizada para 1063 – Se Bob tentar fazer check-in, o SVN o notifica de que é necessário realizar merge de suacontribuição com a versão 106 (de Alice)E ser der algum problema nessa operação de merge? AliceR.: Perda ou inconsistência de dados (código-fonte). Bob 106 105 105E ser não tiver quaisquer problemas?R.: Alice e Bob não serão notificados sobre as alterações. SVN (centralizado) 25 [Murta 2012, adaptado]
  26. 26. Cenário Ideal Desenvolvimento concorrente + SCV distribuído• Repositório contém uma cópia completa do histórico e dos arquivos do projeto. 26
  27. 27. 1– Alice clona uma cópia do repositório de Bob (ou de um servidor)2 – Alice faz check-out e check-in localmente3 – Oportunamente, Alice deverá publicar o repositório em um servidor ou devolvê-lo para Bob check-in Alice clone/pull Bob push check-out Git ou Mercurial (distribuídos) 27
  28. 28. SCV Centralizado versus SCV Distribuído 28
  29. 29. Flexibilidade SVN Git e MercurialConvenção em /trunk e /branches Repositório tratado como uma unidade de trabalhoProblemas de inconsistência git commit -a(commit e update em porções hg updatediferentes do workspace)Adequado quando usuários estão Publicação ad hocconectados na mesma rede 29
  30. 30. Publicação de Mudanças SVN Git e MercurialMerge crítico (sintática/semântica) Não realizam merge de mudanças remotas com mudanças locaisAo fazer um check-in ele é Separação entre check-in epublicado implicitamente publicaçãoNão permite trabalho off-line Permite trabalho off-lineCompartilhamento de projetos Fácil compartilhamento de projetossomente com permissão (hospedado no próprio host) 30
  31. 31. Merges e Nomes de Arquivos/Diretórios SVN Git e MercurialArquivos renomeados não são Merges frequentes, logo, lidam bemdetectados no merge (?) com mudanças de nomeProblemas em plataformas Mecanismo de case-insensitivediferentes (foo.txt != FOO.txt) (Mercurial) 31
  32. 32. Nova forma de identificar bugs Git e Mercurial• Comando bisect  Compara versão SEM bug e versão COM bug  Solicita confirmação se a versão realmente contém um bug  Repete o processo até encontrar a versão que INSERIU o bug 32
  33. 33. Pontos Positivos das Ferramentas Centralizadas• Gerenciamento de arquivos binários (lock)• História linear de um branch facilitando a compreensão• Configuração de scripts pre-commit 33
  34. 34. Conclusões 34
  35. 35. Quando usar o quê?• SCV Centralizado  Equipe altamente engajada e estruturada.  Equipe com acesso de escrita ao servidor (repositório) e seus membros estão conectados na mesma rede. 35
  36. 36. Quando usar o quê?• SCV Centralizado  Versionamento de arquivos binários  Controle de acesso no nível de arquivos 36
  37. 37. Quando usar o quê?• SCV Distribuído  Membros da equipe passam muito tempo em viagem e/ou no cliente.  Projeto exige agilidade, inovação e muita colaboração. 37
  38. 38. http://noticias.uol.com.br/album/110318_terremotonojapao_4_album.jhtm?abrefoto=78#fotoNav=72 38
  39. 39. 39
  40. 40. “Choosing a revision-control system is a question with a surprisingly small number of absolute answers.The fundamental issues to consider are what kind of data your team works with, and how you want your team members to interact.” 40
  41. 41. Referências[1] O’Sullivan, B. Making sense of revision-control systems. Communications of the ACM, v.52,n.9, p.56-62. 2009.[2] Estublier, J. Software Configuration Management: a Roadmap. International Conference onSoftware Engineering (ICSE), The Future of Software Engineering. Limerick, Ireland. June, 2000.279-289 p.[3] TANENBAUM, A. Sistemas Distribuídos: princípios e prática. 2. ed. São Paulo: Bookman, 2007.[4] MURTA, L. Gerência de Configuração: terminologia. Slides de aula. Universidade FederalFluminense, Doutorado em Ciência da Computação, 2012.* Os logotipos do slide 12 foram obtidos nos sites oficiais dos respectivos fornecedores/ferramentas, para quaisquer formas deutilização, deve-se atentar às normas de utilização correspondentes. 41

×