Este documento apresenta uma lista de exercícios sobre gerência de projetos com questões sobre controle de versão. Discute políticas de armazenamento em repositórios, estratégias de ramificação, situações de conflito em junções e características de ferramentas como o Git e o Mercurial.
Este documento apresenta uma lista de exercícios sobre gerência de projetos com questões sobre controle de versão. Discute políticas de armazenamento em repositórios, estratégias de ramificação, situações de conflito em junções e características de ferramentas como o Git e o Mercurial.
Este documento apresenta uma lista de exercícios sobre gerência de projetos com questões sobre controle de versão. Discute políticas de armazenamento em repositórios, estratégias de ramificação, situações de conflito em junções e características de ferramentas como o Git e o Mercurial.
IV Lista de exerccios 1 De acordo com as sentenas abaixo, defina quais so verdadeiras e quais so falsas, justificando sua resposta: a) O armazenamento num repositrio baseado em forward delta til quando o desenvolvimento depende da recuperao constante de verses iniciais do sistema.
R: Verdadeiro. A poltica de armazenamento baseado em forward delta armazena a primeira verso integralmente no repositrio, e seus deltas em seguida, at a verso mais atual. b) Numa estratgia de ramificao baseada em customizaes somente o ramo de integrao manipulado (dica: ver slides sobre estratgias de ramificao do curso de GC). R: Falso. Tanto os ramos de customizao quando o de integrao so manipulados. Entretanto, quando se tem uma nova verso no ramo de integrao, as alteraes presentes nesta verso so passadas aos ramos de customizao, que por consequncia tero novas verses. Os ramos de customizao podem ter novas verses sem que o ramo de integrao tenha sido atualizado, quando bugs nestas customizaes so corrigidos ou novas funcionalidades especficas a estas atualizaes so implementadas. c) O processo de auditoria realizado aps a liberao do produto, visando analisar se este foi corretamente implantado. R: Falso. O processo de auditoria realizado para verificar se o software atende as especificaes e no possui erros, sendo realizado antes da entrega/liberao do produto. d) A poltica pessimista de controle de verso visa evitar conflitos fsicos em junes. R: Verdadeiro. A poltica pessimista apresenta meios para que dois usurios no alteram um mesmo item de configurao concorrentemente, evitando assim problemas que podem ocorrer na juno de verses. Porm, vale enfatizar que esta poltica evita somente conflitos fsicos (em arquivos). 2 Quais situaes podem ocorrer no momento da juno de duas verses de um mesmo arquivo? Quais estratgias podem ser utilizadas para resolver estes problemas e que aspectos devem ser considerados durante a juno? R: Durante o processo de merge, podem ocorrer 2 situaes: os arquivos podem ter sido modificados em partes distintas e os arquivos podem ter sido modificados em partes iguais. No primeiro caso, uma simples unio dos arquivos resolver. Quando os arquivos possuem conflito no mesmo trecho, o processo de juno torna-se mais complicado, uma vez que precisamos analisar o contexto antes de realizar a juno. Entretanto, a sintaxe e a semntica do arquivo devem ser consideradas ao juntar arquivos. Algoritmos comumente utilizados no levam em conta estes aspectos, e possvel que mesmo que a juno ocorra com sucesso, erros ocorram. Por este motivo no se recomenda que a juno seja realizada unicamente por um sistema automatizado, mas conferida por um ou mais membros da equipe. 3 Sabendo de seus conhecimentos em Gerncia de Configurao adquiridos na disciplina de Engenharia de Software II, uma empresa de software o contratou para criar um sistema de controle de verso prprio. Quais as caractersticas desta empresa devem ser consideradas quando se projeta este sistema de controle de verso em quais aspectos do sistema de controle de verso estas caractersticas influenciam? R: No projeto deste sistema de controle de verso, caractersticas como a existncia de equipes que trabalhem de forma distribuda (como filiais), a forma de trabalho da equipe (se existem pessoas que trabalham em um mesmo arquivo frequentemente), o formato dos projetos (se existe um projeto somente ou vrios projetos que sero armazenados no mesmo repositrio), a frequncia com que verses antigas do projeto so acessadas e a forma de realizar alteraes podem influenciar em caractersticas como topologia, controle de concorrncia, forma de numerar verses, tipo de armazenamento e organizao de ramos, respectivamente. 4 Pesquise uma ferramenta de controle de verso existente (exceto o Subversion) e descreva qual a topologia utilizada, de que forma ela identifica verses, de que forma ela armazena verses e se (e como) ela trabalha com ramos. R: A ttulo de exemplo, analisemos duas ferramentas: Git e Mercurial: Git: O Git um sistema de controle de verso baseado na topologia distribuda, onde cada usurio possui um espao de trabalho junto com o repositrio local, sendo que este ltimo pode ser puxado por outros usurios. O Git armazena verses completas, ou snapshots do repositrio. Entretanto, ele cria links para os arquivos que no foram alterados desde a ltima verso, de forma transparente ao usurio. Assincronamente, o Git compacta o repositrio, criando delta entre os arquivos. O Git armazena um hash do repositrio em cada verso, para identifica-lo. Git trabalha com ramos, criando ponteiros que identificam estes ramos, os quais apontam para uma determinada reviso. Para identificar com qual ramo estamos trabalhando, um ponteiro HEAD utilizado.
Mercurial: O Mercurial um sistema de controle de verso com topologia distribuda. No Mercurial, arquivos e informaes sobre estes e suas verses so armazenados separadamente. A estrutura que agrega dados e arquivos de uma verso chamada de revlog. Para armazenar verses de um arquivo, utilizado o mecanismo de reverse delta. A verso mais atual completa, e o conjunto de alteraes para tornar uma verso mais nova em uma ou mais verses antigas armazenado. Porm, ele tambm armazena uma verso completa a cada nmero especfico de verses, de forma a agilizar a recuperao de verses mais antigas. Para numerar verses, o Mercural armazena tanto uma numerao sequencial para cada verso, computado no mbito local, quanto um hash desta verso. Com relao a ramos, o Mercurial permite a criao de ramos, onde nomes identificam estes ramos. Podem ser criados ramos diretamente (pelo comando branch) ou indiretamente, quando clonamos um repositrio.