Sie sind auf Seite 1von 18

Agenda Gerncia de Configurao de Software

Marcos Dsea
dosea@ufs.br

Vamos entender o Problema? Quais os problemas? Gerncia de Configurao

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

P1) Duplicidade de Trabalho


O mesmo trabalho realizado por mais de um desenvolvedor.
Ex: Classe GerenciaCalculosCusto

P2) Trabalhos Sobrepostos


Usando um repositrio compartilhado gravada apenas as alteraes do ltimo desenvolvedor.
Ex: Classe GerenciaCalculosCusto

Torna-se mais difcil de controlar quando a soluo armazenada de forma distinta.


Ex: pastas calculos e pasta custo

Problema pode ser maior quando a implementao correta sobreposta pela implementao errada.

Quem foi o maluco que mandou vocs realizarem o trabalho?

P3) Perda de Trabalho


Imagine agora se houve implementaes diferentes entre dois desenvolvedores. Um dos trabalhos ser perdido. Ter o trabalho garantindo apenas aquele que salvar por ltimo os seus trabalhos.

P4) Histrico de Mudanas


Quem implementou o mtodo errado?
Quem foi o responsvel por dar 20% de desconto no preo de atacado? Quem foi o responsvel por dar 10% de desconto no preo de atacado? Quem foi o maluco que ordenou que vocs fizessem isso? Quero que retorne com a implementao anterior da classe!

P5) Verso Inconsistente


A evoluo das classes deixa a sistema insconsistente at que uma nova bateria de testes seja realizada. E se ocorrer um erro grave? Como recuperar a ltima verso estvel do sistema e realizar uma correo urgente, sem atrapalhar a evoluo do sistema?

Como resolver esses problemas?

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).

Onde a GCM ser utilizada?


Requisitos Modelos Anlise Modelos Projeto

Modelo de Negcio

Processo de Desenvolvimento de Software


Cdigo Fonte Artefatos de Gerenciamento Testes

Onde a GCM ser utilizada?


Requisitos Modelos Anlise Modelos Projeto

Por que GCM?


Evoluo do software => MUDANAS
75% do custo total do ciclo de vida do software com manuteno. 20% do tempo para consertar erros. 80% do tempo para modificaes nos requisitos:
Requisitos funcionais Regras de negcio Reengenharia da aplicao.

Modelo de Negcio

Processo de Desenvolvimento Mudanas de Software


Cdigo Fonte Artefatos de Gerenciamento Testes

Gerncia de Configurao
Considerada muitas vezes como etapa do gerenciamento de qualidade:
Sistema liberado verificado pela equipe de GQ.

Gerncia do Configurao no MPS.Br

Essencial usar padres para certificao da qualidade.


Ex: Padro para Plano de GC seguindo a norma IEEE 828-1998.

Gerncia de Configurao
Gerenciamento de Mudanas Gerenciamento de Verses Gerenciamento de Builds

Gerncia de Configurao
Gerenciamento de Mudanas
P1) Duplicidade de Trabalho

Gerenciamento de Verses Gerenciamento de Builds

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

Processo de Gerenciamento de Mudanas


Exemplo

Estados de uma Solicitao de Mudana


Exemplo

Vamos solicitar uma Mudana?


http://code.google.com/p/projeto-es-ufs/

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

Simule o atendimento dessas mudanas.

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.

Cdigo Fonte Dados Documentos Dados Documentos Cdigo Fonte

Como Operar com o Repositrio?


Passo 2) Executar Operaes do Cliente
Ckeck-in Ckeck-out Lock - Merge - Marcar Tag - Branches

Check-in e Check-out

Desenvolvedor

Repositrio

Como Operar com o Repositrio?


Operao 1) Check-out
Recupera a (ltima) verso de um item de configurao guardada no repositrio. Escrita: obtm o lock do item e cria uma cpia para edio no cliente. Leitura: cria uma cpia apenas para leitura no cliente.
Check-out

Como Operar com o Repositrio?


Operao 2) Check-in
Ao de inserir/atualizar um item de configurao no repositrio Verifica o lock do item de configurao, e caso seja possvel, incrementa a verso do item.
Check-in

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

Como Operar com o Repositrio?


Operao 3) Lock
Resolve a Atualizao Simultnea Garante que apenas o usurio que detm o lock pode alterar o arquivo Problema: serializa o trabalho dos desenvolvedores

tempo

Como Operar com o Repositrio?


Operao 4) Merge
Unificao de diferentes verses de um mesmo item de configurao Integrao dos itens de configurao de um branch com os itens de configurao do fluxo principal Mesmo com o uso de ferramentas, em vrios casos h necessidade de interveno humana

Repositrio Tradicional
Relembrando o problema...

10

Solues dos Repositrios


Poltica Pessimista (Lock-Modify-Unlock) Poltica Otimista (Copy-Modify-Merge)

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

Solues dos Repositrios


Poltica Pessimista (Lock-Modify-Unlock) Poltica Otimista (Copy-Modify-Merge)

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?

Qual poltica utilizar?


Poltica Pessimista
Artefatos no textuais (imagem, vdeo, etc) Artefatos onde a juno manual complexa.

Poltica Otimista
Nas demais situaes.

12

Ciclo de Trabalho Tpico


1) 2) 3) 4) 5) 6) Atualizar cpia de trabalho Realizar as mudanas Revisar as mudanas Consertar os erros Resolver Conflitos Publicar mudanas (commit)

Atividade Sala
Usando o sistema de controle de verso implemente as classes passadas na primeira aula.

Poltica Pessimista

Poltica Otimista

Ciclo de Trabalho Tpico


1) 2) 3) 4) 5) 6) Atualizar cpia de trabalho Realizar as mudanas Revisar as mudanas Consertar os erros Resolver Conflitos Publicar mudanas (commit)

Atividade Sala
Criem o arquivo GerenciadorAluno.java Crie os mtodos:
void inserir(Aluno a); void consultar(Aluno a);

Ao mesmo tempo pea ao colega para criar os mtodos:


void remover(String matricula) void alterar(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.

Excluso com o TortoiseSVN

Renomear com o TortoiseSVN

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.

Ignorando com o TortoiseSVN

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

Das könnte Ihnen auch gefallen