Beruflich Dokumente
Kultur Dokumente
Marcos Dsea
dosea@ufs.br
Atividade Sala
Entender os problemas...
Quais os problemas?
Problema 1) Duplicidade de Trabalho Problema 2) Trabalhos sobrepostos Problema 3) Perda de trabalho Problema 4) Histrico de Mudanas Problema 5) Verso inconsistente
Problema pode ser maior quando a implementao correta sobreposta pela implementao errada.
Soluo Trivial
Repositrio Compartilhado
Soluo Trivial
Desenvolvedor A Desenvolvedor B
Programa de A A1 A2 A3
Componente Compartilhado
Programa de B B1 B2 B3
A Soluo
Gerncia de Configurao
a arte de identificar, organizar e controlar mudanas no software que est sendo construdo. O objetivo maximizar a produtividade pela minimizao de erros (Pressman, 2002).
Gerncia de Configurao
o desenvolvimento e uso de padres e procedimentos para o gerenciamento de sistemas de software em desenvolvimento. Define como registrar mudanas e relacion-las a diferentes verses do sistema (Sommerville, 2007).
Modelo de Negcio
Modelo de Negcio
Gerncia de Configurao
Considerada muitas vezes como etapa do gerenciamento de qualidade:
Sistema liberado verificado pela equipe de GQ.
Gerncia de Configurao
Gerenciamento de Mudanas Gerenciamento de Verses Gerenciamento de Builds
Gerncia de Configurao
Gerenciamento de Mudanas
P1) Duplicidade de Trabalho
Gerenciamento de Mudanas
Controla o processo de solicitao de mudanas, anlise de custo e benefcio das mudanas, aprovao e rastreabilidade de quais componentes foram alterados.
Gerenciamento de Mudanas
Change Request Form (CRF)
Exemplo:
Algumas Ferramentas
Redmine Bugzilla Jira Trac IBM Rational ClearQuest
Redmine
Bugzilla
Atividade de Sala
Crie uma mudana para seu parceiro:
Defeito reportado pelo desenvolvedor Defeito reportado pelo usurio Nova funcionalidade
Gerncia de Configurao
Gerenciamento de Mudanas Gerenciamento de Verses Gerenciamento de Builds
Gerenciamento de Verses
Processo de identificar e manter a rastreabilidade das verses de um sistema, objetivando recuperar, quando solicitado, uma verso que implementa um determinando conjunto de funcionalidades.
O Repositrio
a base para utilizao de um sistema de controle de verso. Cada cliente possui uma cpia de trabalho do repositrio.
Alguns Repositrios
CVS Subversion (SVN) Mercurial IBM Rational ClearCase Microsoft Visual Source Safe.
O Repositrio
VisualSVN Server
O Repositrio
VisualSVN Server
Atividade Sala
Explorar as configuraes do VisualSVN
Gerenciamento de Verses
Passo 1) Definir o Repositrio
Local (fsico e lgico) onde os itens de um sistema so guardados Pode conter diversas verses do sistema Utiliza mecanismos de controle de acesso
Definir o Repositrio
Layout do Repositrio
trunk: linha principal do desenvolvimento branches: cpias divergentes da linha base do desenvolvimento. tags: fotografias de verses estveis do sistema.
Repositrio Repositrio
Definir o Repositrio
Exemplo: code.google.com com SVN
Definir o Repositrio
Exemplo: Visual SVN
Definir o Repositrio
Exemplo: Visual SVN
Definir o Repositrio
Exemplo: Visual SVN
Atividade Sala
Defina um repositrio do seu grupo Utilize a funo browse do TortoiseSVN para acessar os arquivos do repositrio criado pelo colega.
Gerncia de Configurao
Gerenciamento de Mudanas Gerenciamento de Verses Gerenciamento de Builds
Gerenciamento de Verses
Processo de identificar e manter a rastreabilidade das verses de um sistema, objetivando recuperar, quando solicitado, uma verso que implementa um determinando conjunto de funcionalidades.
O Repositrio
a base para utilizao de um sistema de controle de verso. Cada cliente possui uma cpia de trabalho do repositrio.
Conceitos Bsicos
Item de Configurao
Conjunto de itens de hardware/software vistos como uma entidade nica para fins de gerncia de configurao.
Conceitos Bsicos
Configurao do Software
Toda informao produzida como parte do processo de desenvolvimento de software.
Check-in e Check-out
Desenvolvedor
Repositrio
cliente
Repositrio
cliente
Repositrio
Gerenciamento de Verses
Operao 2) Check-in
Cada check-in no repositrio cria uma nova reviso (baseline) do mesmo.
Atividade Sala
Faa o Check-out do seu repositrio. Qual a reviso que voc est trabalhando? Crie 1 arquivo na pasta trunk e faa o checkin. Faa check-out e visualize a reviso. Crie agora mais dois novos arquivo na pasta trunk e faa o check-in. Visualize agora as revises dos trs arquivos criados.
Baselines
Reviso um tipo de baseline
item fluxo de desenvolvimento
tempo
Repositrio Tradicional
Relembrando o problema...
10
Poltica Pessimista
Enfatiza o check-out reservado Bloqueia o(s) item(ns) de configurao Inibe o paralelismo
Poltica Pessimista
Usando o TortoiseSVN
Atividade de Sala
Faa o bloqueio de um arquivo armazenado no repositrio. Solicite ao seu colega que tente alterar esse arquivo e depois gravar no repositrio. Ele conseguiu? No esquea de desbloquear o arquivo.
Poltica Pessimista
Problemas
Pode causar problemas administrativos, quando um lock no liberado. Pode causar serializao de trabalho desnecessria, por exemplo, editar o mesmo arquivo mas em locais diferentes. Causa um falso senso de segurana, por exemplos, arquivos dependentes que so editados por desenvolvedores distintos podem no trabalhar juntos.
11
Poltica Otimista
Assume que a quantidade de conflitos naturalmente baixa. mais fcil e produtivo tratar cada conflito individualmente. Um conflito ocorre quando a mesma linha ou regio do arquivo modificada. A juno (merge) automtica na maioria dos casos e manual quando ocorrem conflitos.
Poltica Otimista
Atividade Sala
Crie um arquivo com um texto qualquer na linha 1 e 3. Grave o arquivo no repositrio. Altere o arquivo e insira um texto na linha 5 e ao mesmo tempo pea a seu colega para baixar o arquivo do repositrio e colocar um texto na linha 4 Tentem gravar o arquivo no repositrio. O que aconteceu?
Atividade Sala
Baixem a nova verso do arquivo. Agora insira textos diferentes na linha 2, cada um na sua cpia de trabalho. Tentem gravar o arquivo. O que aconteceu?
Poltica Otimista
Nas demais situaes.
12
Atividade Sala
Usando o sistema de controle de verso implemente as classes passadas na primeira aula.
Poltica Pessimista
Poltica Otimista
Atividade Sala
Criem o arquivo GerenciadorAluno.java Crie os mtodos:
void inserir(Aluno a); void consultar(Aluno a);
Gravem no repositrio.
13
Excluindo e Renomeando
A excluso de um arquivo/pasta da cpia de trabalho no implica na excluso do mesmo no repositrio. O mesmo acontece para renomeao. O SVN possui um comando delete e rename que devem ser executados no arquivo. Em seguida deve ser feita a gravao (commit) no repositrio.
Dever de Sala
Faa a excluso de um arquivo do repositrio. Renomeie um arquivo do repositrio.
Ignorando Arquivos
Alguns arquivos podem ser marcados para serem ignorados pelo sistema de versionamento. Isso comum para arquivos de compilao ou arquivos temporrios.
14
Dever de Sala
Crie um arquivo na cpia de trabalho Marque esse arquivo para ser ignorado pelo sistema de versionamento.
Baselines
Baselines
So marcos no versionamento dos artefatos. Representam conjuntos de itens de configurao que foram formalmente aprovados. Baselines so marcadas a partir de revises do repositrio. Uma baseline identificada atravs de uma tag.
Baselines
Verso do Sistema: uma instncia do sistema que difere, de alguma maneira, de outras instncias. Release do Sistema: Verso do sistema distribuda aos clientes.
Gerenciamento de Verses
Operao 5) Marcar Tag
So rtulos associados a um snapshot do repositrio num determinado momento. Um tag referencia um ou mais arquivos em um ou mais diretrios Usadas normalmente para denominar uma verso do projeto ou release.
Sistema de Biblioteca 1.0 1.1 2.0
Tags no TortoiseSVN
15
Tags no TortoiseSVN
Atividade Sala
Marque uma tag da verso atual do projeto. Faa novas alteraes na mainline. Marque uma nova tag do projeto.
Branches
uma linha de desenvolvimento independente de outras linhas mas que compartilha um histrico. Deve ser criado quando mltiplas necessidades precisam ser atendidas.
Branches
Fazer um branche simplesmente criar uma cpia de uma reviso. Apesar de manter o histrico o branche pode evoluir de forma indepentente.
Gerenciamento de Verses
Operao 6) Criar Branch
Criao de um fluxo alternativo para atualizao de verses de itens de configurao Devem existir regras bem definidas para criao de branches Por que e quando devem ser criados? Quais os passos? Quando retornar ao fluxo principal?
Braches no TortoiseSVN
16
Braches no TortoiseSVN
Atividade de Sala
Crie um branche da sua linha de desenvolvimento principal.
Reintegrando um Branche
possvel reintegrar branches sua linha principal atravs de uma operao de merge. Pode ser necessrio quando uma grande alterao no deve atrapalhar a linha principal do desenvolvimento.
Reintegrando Branches
Reintegrando Branches
Reintegrando Branches
17
Atualizando um Branche
Para que as modificaes de um branche no fiquem muito distantes da linha principal pode-se fazer sua atualizao. A atualizao de um branche tambm feita atravs da operao de merge.
Atualizando Branches
Atualiazando Branches
Atualiazando Branches
Atividade Sala
Criar um novo branche a partir do trunk. Criar um novo arquivo no trunk. Criar um novo arquivo no branche. Alterar um mesmo arquivo existente no trunk e no branche criado. Atualizar o branche a partir do trunk. Reintegrar o branche ao trunk.
Referncias
Sommerville, Ian. Engenharia de Software. 8a edio. Addison Wesley. Pressman R. Engenharia de Software. 6a edio. McGraw-Hill. Cristine Dantas. Gerncia de Configurao de Software. Revista de Engenharia de Software. Edio 2. Disponvel no link. Acesso em Maro 2011.
18