339
Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes Gerência de Configuração

Embed Size (px)

Citation preview

Page 1: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Gerência de Configuração

Page 2: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 2

Módulos

4. Controle de 4. Controle de MudançasMudanças

4. Controle de 4. Controle de MudançasMudanças

1. Introdução1. Introdução1. Introdução1. Introdução 2. Padrões GC2. Padrões GC2. Padrões GC2. Padrões GC

5. Sistemas de 5. Sistemas de Controle de Controle de

VersãoVersão

5. Sistemas de 5. Sistemas de Controle de Controle de

VersãoVersão

4. Integração 4. Integração ContínuaContínua

4. Integração 4. Integração ContínuaContínua

6. Sistemas de 6. Sistemas de Controle de Controle de MudançasMudanças

6. Sistemas de 6. Sistemas de Controle de Controle de MudançasMudanças

3. Disciplina de 3. Disciplina de GC e AmbienteGC e Ambiente3. Disciplina de 3. Disciplina de GC e AmbienteGC e Ambiente

Page 3: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Gerência de Configuração

Introdução

Page 4: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 4

Objetivos

Fornecer os principais conceitos relacionados a GCCriar uma visão geral de como GC pode ser aplicada ao seu projeto

Page 5: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 5

Pré-requisitos

Noções de Engenharia de Software

Page 6: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 6

Motivação

Problemas na manutenção de software: bugs previamente corrigidos que

reaparecem

Features já testadas que somem repentinamente

Um programa que deixa de funcionarEstes são problemas frustrantes

provenientes da falta de gerência de configuração

Page 7: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 7

Outros problemas

Ambientes que funcionam somente para parte dos desenvolvedores;Descontrole sobre o que deve ser empacotado no ultimo release do sistemaErros que ocorrem em produção não podem ser reproduzidos em desenvolvimentoProblemas de coordenação do trabalho concorrente dos desenvolvedores

Page 8: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Problema da Quebra de Comunicação

| 8

Desenvolvedor A Desenvolvedor B

Desenvolvedor C

Page 9: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 9

Problema da Quebra de Comunicação (continuação)

Falhas de comunicação em equipes Ocorre pelas mais diversas razões: Vocabulários incompatíveis

Culturas de desenvolvimento diferentes

Distância geográfica

Dificuldade de expressão

Quando este problema acontece: Os sistemas produzidos não atendem aos

requisitos

Força de trabalho é desperdiçada

Page 10: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 10

Problema dos Dados Compartilhados

Componente

Compartilhado

Desenvolvedor A Desenvolvedor B

A1 A2 A3

Programa de A Programa de B

B1 B2 B3

Page 11: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 11

Problema dos Dados Compartilhados - Cenário

O desenvolvedor A modifica o componente compartilhadoMais tarde, o desenvolvedor B realiza algumas alterações no mesmoAo tentar compilar o componente, erros são apontados pelo compilador, mas nenhum deles ocorre na parte que B alterouO desenvolvedor B não tem a menor idéia sobre a causa do problema

Page 12: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 12

Problema dos Dados Compartilhados - Solução

simplista

Solução simplista: cada desenvolvedor trabalha em uma cópia

“local” do componente

resolve o Problema dos Dados Compartilhados, mas cria um novo problema

Page 13: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 13

Problema da Manutenção Múltipla

Componente

Compartilhado

Desenvolvedor A Desenvolvedor B

A1 A2 A3 B1 B2 B3

Programa de A Programa de BComponente

Compartilhado

Versão de A do Componente

Compartilhado

Componente

Compartilhado

Componente

Compartilhado

Versão de B do Componente

Compartilhado

Page 14: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 14

Problema da Manutenção Múltipla (continuação)

Ocorre quando cada desenvolvedor trabalha com uma cópia “local” do que seria o mesmo componenteDificuldade para saber: Que funcionalidades foram implementadas em quais

versões do componente

Que defeitos foram corrigidos

Evitado através de uma biblioteca central de componentes compartilhados Nesse esquema, cada componente é copiado para a

biblioteca sempre que alterado

Resolve o Problema da Manutenção Múltipla, mas...

Page 15: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 15

Problema da Atualização Simultânea

Versão de A do Componente

Compartilhado

Desenvolvedor A Desenvolvedor B

A1 A2 A3 B1 B2 B3

Programa de A Programa de BVersão de B do Componente

Compartilhado

Biblioteca Central de Recursos Compartilhados

Componente

Compartilhado

Page 16: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 16

Problema da Atualização Simultânea – Cenário 1:

O desenvolvedor A encontra e corrige um defeito em sua versão do componente compartilhado

Uma vez corrigido, o componente modificado é copiado para a biblioteca central

O desenvolvedor B encontra e corrige o mesmo defeito em sua versão do componente por não saber que A já tinha feito isso

O trabalho de A é desperdiçado

Page 17: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 17

Problema da Atualização Simultânea – Cenário 2:

O desenvolvedor A encontra e corrige um defeito em sua versão do componente compartilhado

Uma vez corrigido, o componente modificado é copiado para a biblioteca central

O desenvolvedor B encontra e corrige um outro defeito em sua versão do componente, sem saber do defeito corrigido por A

O desenvolvedor B copia sua versão do componente para a biblioteca central

Além de o trabalho de A ser desperdiçado, a versão do componente que se encontra na biblioteca central continua apresentando um defeito

O desenvolvedor A julga o problema como resolvido

Page 18: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 18

Como Resolver?

O problema da atualização simultânea não pode ser resolvido simplesmente copiando componentes compartilhados para uma biblioteca centralAlgum mecanismo de controle é necessário para gerenciar a entrada e saída dos componentes

Page 19: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 19

Sobre Gerência de Configuração

“Em qualquer time, um certo grau de confusão é inevitável. O objetivo é minimizar a confusão de modo que mais trabalho possa ser feito.”“A arte de coordenar o desenvolvimento de software para minimizar esse tipo particular de confusão é chamada de Gerência de Configuração.”

W.A. Babich

Page 20: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 20

O que é Gerência de Configuração?

Gerência de configuração (GC) é o processo de identificar, organizar e controlar modificações ao software sendo construído A idéia é maximizar a produtividade minimizando os enganos

Page 21: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 21

Objetivos de GC

Definir o ambiente de desenvolvimentoPolíticas para controle de versões garantindo a consistência dos artefatos produzidosDefinir procedimentos para solicitações de mudançasAdministrar o ambiente e auditar mudançasFacilitar a integração das partes do sistema

Page 22: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 22

Benefícios

Aumento de produtividade no desenvolvimentoMenores Custos de ManutençãoRedução de defeitosMaior rapidez na identificação e correção de problemas

Page 23: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Conceitos Básicos

Page 24: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 24

Configuração do Software

Um projeto de desenvolvimento de software produz os seguintes itens: Programas (código fonte, programas

executáveis, bibliotecas de componentes, etc.)

Documentação (manuais do usuário, documento de requisitos, modelo de análise e projeto, etc.)

Dados (dados de teste e do projeto)

Esses conjuntos de itens são chamados, coletivamente, de configuração do software

Page 25: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 25

Workspace

- Todos os artefatos necessários para a execução de uma tarefa- O desenvolvedor pode ter exercer várias

tarefas, e ter consequentemente vários workspaces

- Podem ser gerenciados por uma IDE.

- A configuração do software pode ser composta por vários workspaces

Page 26: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 26

Item de Configuração

Um conjunto de itens de hardware e/ou software vistos como uma entidade única para fins de gerência de configuraçãoUm item de configuração está sujeito a mudanças e essas devem obedecer às políticas estabelecidasNormalmente, um item de configuração é estabelecido para cada pedaço de software que pode ser projetado, implementado e testado de forma independente

Page 27: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 27

Configuração de Software

item

tempo

fluxo

Page 28: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 28

Codeline

Uma codeline contem todas a versões de cada artefato sobre um ramo evolucionário do sistema Codelines armazenam todas as mudanças

R1 R2

R2R1

V1 V2 V3

Page 29: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 29

Baseline

Uma especificação ou produto que foi formalmente revisado e aceito Serve como base para os passos posteriores do

desenvolvimento

A configuração do software em um ponto discreto no tempoSó pode ser modificado através de procedimentos formais (solicitações de mudança)Um artefato ou conjunto de artefatos só se torna um item de configuração depois que um baseline é estabelecido

Page 30: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 30

Baseline e Codelines

item

tempo

fluxo

codeline

baseline

Page 31: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 31

Razões para Criar um Baseline

• Reproducibilidade – a habilidade de reproduzir uma versão anterior do sistema

• Rastreabilidade – Estabelece uma relação predecessor-sucessor entre artefatos do projeto (projeto satisfaz requisitos, código implementa projeto, etc.)

• Geração de Relatórios – A comparação dos conteúdos de dois baselines ajuda na depuração e criação de documentação

• Controle de Mudanças – referencial para comparações, discussões e negociações

Page 32: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 32

Baselines importantes

Baselines são considerados marcos no processo de desenvolvimento: Funcional : requisitos

De Produto : releases, iterações

Page 33: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 33

Repositório

Local (físico e lógico) onde os itens de um sistema são guardadosPode conter diversas versões do sistemaUtiliza mecanismos de controle de acesso

RepositórioDesenvolvedor

Page 34: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 34

Lock

Resolve a Atualização Simultânea Garante que apenas o usuário que detém o lock pode alterar o arquivoProblema: “serializa” o trabalho dos desenvolvedores

Page 35: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 35

Check-Out

Check-out

Repositóriocliente

Page 36: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 36

Check-Out (continuação)

Recuperar a (última) versão de um item de configuração guardada no repositório Escrita

• Verifica que ninguém detém o lock do item de configuração

• Obtém o lock do item• Cria uma cópia, para edição, no cliente

Leitura• Verifica que alguém já detém o lock• Cria uma cópia, apenas para leitura, no cliente

Page 37: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 37

Check-In

Check-in

Repositóriocliente

Page 38: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 38

Check-In (continuação)

Ação de inserir/atualizar um item de configuração no repositório Verifica o lock do item de configuração,

caso o mesmo já exista

Verifica e incrementa a versão do item

Registra informações das mudanças (autor, data, hora, comentários)

Inclui/atualiza o item

Page 39: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 39

Tags

Rótulos que são associados a conjuntos de arquivosUm tag referencia um ou mais arquivos em um ou mais diretórios Costuma-se usar tags para:

• Denominar projeto rotulando todos os arquivos associados ao projeto

• Denominar uma da versão do projeto (um build ou release) rotulando todos os arquivos associados ao build ou release

Page 40: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 40

Tags

1.1 1.2 1.3 1.4

release_1

tagHistórico

de um arquivo

release_2

Page 41: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 41

Branch

Criação de um fluxo alternativo para atualização de versões de itens de configuraçãoRecurso muito poderosoRegras bem definidas para criação de branches Por que e quando devem ser criados?

Quais os passos?

Quando retornar ao fluxo principal?

Page 42: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 42

Branch (continuação)

Uso de lock inviabiliza a criação de branchesBranches normalmente se originam de correções em versões anteriores

Page 43: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 43

Branch (exemplo)

4

3

5 6

4

3.j.1 3.j.2 3.j.3

2.j.1 2.j.2

3.m.1 3.m.2 3.m.3

2.m.1

1hello.c 2 3

1hello.h 2

hello.c

hello.h

José

Mariahello.c

hello.h 2.m.2

Page 44: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 44

Merge

Unificação de diferentes versões de um mesmo item de configuraçãoIntegração itens de configuração de um branch com os itens de configuração do fluxo principalCheck-out atualizando a área localAlgumas ferramentas fornecem um mecanismo automático para realização de merges Mesmo com o uso de ferramentas, em

vários casos há necessidade de intervenção humana

Page 45: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 45

Merge (exemplo)

3hello.c 4

2hello.h 3

5

4

3.j.1hello.c 3.j.2 3.j.3

2.j.1hello.h 2.j.2José

Maria3.m.1hello.c 3.m.2 3.m.3

2.m.1hello.h 2.m.2

3.j.4

2.j.3

Page 46: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

1.4

release_2

| 46

Branching e Merging

1.1 1.2 1.3

1.2.2.21.2.2.1

rel_

1_fix

Tronco principal de

desenvolvimento

Branch

release_1

tag

patchtag

Merge

Page 47: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 47

Build

Representa uma versão ainda incompleta do sistema em desenvolvimento, mas com certa estabilidadeCostumam apresentar limitações conhecidasEspaço para integração de funcionalidades

Page 48: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 48

Mais sobre build

Incluem não só código fonte, mas documentação, arquivos de configuração, base de dados, etc.A política de geração dos builds deve ser bem definida na estruturação do ambienteA geração de builds deve ser automatizada e realizada com freqüência adequada

Page 49: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 49

Release

Versão do sistema validada após os diversos tipos de testeProduto de softwareSupostamente sem errosEntregue ao cliente ou ao mercadoProcesso iterativo/incremental produz, em geral, mais de um release

Page 50: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 50

Mais sobre release

Implantado no clienteDeve ser devidamente mantido Enquanto a linha principal evolui

Uso de branches e merges

Page 51: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 51

Oportunidades criadas com GC

Reuso de itens de software Artefatos

Componentes

Automação de processo Construção de builds

Geração de releases

Testes

Integração

Page 52: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 52

Conclusões

GC é um fluxo de apoio ao projeto como um todoPassos iniciais para a adoção de um processo de softwareRequer uma certa disciplina na manipulação de itens de configuraçãoApoio de ferramentas sempre que possível

Page 53: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Padrões em Gerência de ConfiguraçãoReuso de soluções

Page 54: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 54

Créditos

Compilação de padrões contidos no livro “Software Configuration Management Patterns: Effective Teamwork, Practical Integration” de Steve Berczuk

Page 55: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 55

O que são padrões?

Padrões são formas de representação de conhecimento, organizado de forma estruturadaObjetiva a rápida assimilação e aplicação em um novo contextoConstruído a partir da destilação de anos de experiência

Page 56: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 56

Estrutura de um padrão

NomeContexto Problema a ser solucionadoSoluçãoDiagrama representando a solução (opcional)

Page 57: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 57

Padrões em GC

Catálogo com 15 padrõesClassificação dos padrões:

Codeline Workspace

Page 58: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 58

Mainline“Simplifique seu modelo”

Classificação: Codeline

Você quer simplificar sua estrutura de codelinesComo manter várias codelines (e minimizar merging)?

Page 59: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 59

Mainline (Contexto)

A utilização de Branches é uma ótima maneira de isolar esforços paralelos. Exemplos de branches durante o desenvolvimento: Variar código para plataformas

Manter manutenções de releases

Isolar esforços durante o desenvolvimento.

Porém, isto requer merging, o que pode ser custoso.Tarefa 1

Tarefa 2

Tarefa 3

Merge

Page 60: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 60

Mainline (Contexto)

O uso desenfreado de branches pode gerar estruturas complexas, difíceis de serem mantidas e integradas.

Algumas empresas aboliram o uso de branch devido a más experiências

Page 61: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 61

Mainline (Solução)

Controle o uso de branch elegendo uma linha de desenvolvimento principal que Agrega todos os esforços

Serve de base para outras codelines

Reduz custo com merging

/Mainline t1

Rel 1.0

1.0

1.0 Correções t1

t2 2.0

Rel 1.1

Rel 2.0

Page 62: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 62

Mainline (Criação/Manutenção)

1. Crie uma codeline a partir da base de artefatos

2. Check-in todas mudanças nesta codeline3. Mantenha a codeline reutilizável (testes)4. Planeje cuidadosamente a necessidade de e

a vida (criação e morte) de cada branch

[Não Resolvido] Como motivar o uso da mainline por muitas pessoas?

Mainline

Active dev. line

O padrão Active dev. Lineé aplicado no contexto do mainline

Page 63: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 63

Active Development Line“Defina suas metas”

Classificação: Codeline

Você está desenvolven-do em uma mainlineComo manter a evolução rápida de uma codeline de maneira estável para que seja útil?

Page 64: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 64

Active Development Line (Contexto)

A mainline é um ponto de sincronização Requer a comunicação entre os

desenvolvedores

Check-ins e integrações freqüentes são bons

Check-ins com má qualidade afetam a todos

Procedimentos rigorosos Demoram muito tempo

Geram menos check-ins (natureza humana)

Logo, atrapalham o projeto

Page 65: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 65

Active Development Line (Contexto)

Problemas de produtividade Linha de desenvolvimento pouco ativa e

muito estável

Linha de desenvolvimento muito ativa e pouco estável

Bons testes Bons testes

Testes fracos Testes fracos

Page 66: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 66

Active Development Line(Solução)

Use uma linha de desenvolvimento ativa Com políticas para a estabilidade necessária

da codeline para suas necessidades

Considerando, o próprio ritmo de desenvolvimento.

Page 67: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 67

Active Development Line (Problemas não resolvidos)

Alguns padrões complementares Private Workspace : Ambiente isolado de

desenvolvimento

Smoke Test : Mantém a estabilidade da codeline

Task Branch: Lida com tarefas de grande risco:

Release Prep Codeline: Evita congelamento da codeline

Mainline

Active dev. line

Private Workspace Smoke Test Task BranchRelease Prep Codeline

Page 68: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 68

Private Workspace“Isole o seu trabalho”

Classificação: Workspace

Você quer suportar uma Active Development Line Como evoluir sem se distrair com as freqüentes mudanças do ambiente?

Page 69: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 69

Private Workspace (Contexto)

Integração freqüente evita o trabalho com artefatos desatualizados Porém, pessoas não conseguem raciocinar

em um ambiente em constante mudança

Algumas vezes, artefatos diferentes dos encontrados no ambientes são necessários Porém, isolamento em excesso é proibitivo

Page 70: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 70

Private Workspace (Solução)

Crie um ambiente de trabalho privado que contenha tudo o que você necessita para executar suas tarefas em uma codeline Você controla quando atualizá-lo

Antes de integrar suas tarefas Update

Build

Test Ambiente local Servidorcentral

atualiza

commitdesenvolvedor

Page 71: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 71

Private Workspace

Pode conter: Código-fonte a ser editado

Componentes compilados localmente

Dados e código para testar localmente o sistema

Scripts de build

Não pode conter: Versões especializadas de scripts, quebrando a

política do projeto;

Componentes que estão versionados mas que você copiou de um outro local desconhecido;

Diferentes versões de ferramentas certificadas pela organização

Page 72: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 72

Private Workspace (Problemas não resolvidos)

Alguns padrões complementares Repository: Povoar o ambiente de trabalho

Private system build: Construir e testar o ambiente

Integration Build: Integração com as mudanças dos outros

Active dev. line

Private Workspace

IntegrationBuild

Private sysbuild

Repository

Page 73: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 73

Repository“Um único lugar para compras”

Classificação: Workspace

Private workspaces e Integration Builds precisam de componentesComo obter a versão correta de um determinado componente em um ambiente de trabalho?

Page 74: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 74

Repository (Contexto)

Diferentes artefatos compõem um workspace Codigo, scripts, componentes de terceiros

Artefatos podem vir de diversas fontes Outros grupos, empresas terceiras

Integradores, Testadores e Desenvolvedores precisam, se necessário, ter acesso às mesmas versões de componentes

Page 75: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 75

Repository(Solução)

Ponto único de acesso a todos os artefatos em suas devidas codelines Mecanismos de acesso

Replicação de workspaces

Organização de todas as versões de cada itens de configuração

Códigofonte

RepositoryBiblioteca

de terceiros

Scriptsde build

Workspace

Page 76: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 76

Repository(Problemas restantes)

Caso a ferramenta de controle de versão não faça o mapeamento automático dos componentes no ambiente de trabalho, uma ferramente de script, como o ANT

Page 77: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 77

Private System Build “Pense globalmente e construa

localmente”

Classificação: Workspace

Você precisa construir e testar o que está em seu Private WorkspaceComo verificar que suas mudanças não interropem o sistema antes de realizar um commit no Repositório?

Page 78: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 78

Private System Build (Contexto)

Adequar as necessidades de um build para um workspace de desenvolvimento O build do sistema pode ser complicado

Manter consistência com outros builds

Evitar commits de mudanças que interropam o sistema Atenuar isolamento de um Private

Workspace

Page 79: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 79

Private System Build (Solução)

Construa o sistema usando os mesmos mecanismos do build central de integração Use os mesmos componentes e ferramentas

(reproduzir problemas)

Considere apenas detalhes relevantes ao desenvolvimento

Inclua todas as dependências requeridas

Faça isto antes de cada commit Inclua chamada para testes durante o build

Atualize o cabeçalho da codeline antes de executar o build

Page 80: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 80

Private System Build (Problemas não resolvidos)

Se a construção de todo o sistema é proibitivo, construa a menor quantidade de componentes que sua mudança requer.

Alguns padrões complementares Smoke Test: Testar o que você construiu

Private Workspace

Private sysbuild

Smoke Test

Page 81: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 81

Integration Build “Realize um build centralizado”

Classificação: Workspace

O que é realizado em um Workspace precisa ser compartilhadoComo garantir que o codebase sempre é construído consistentemente?

Page 82: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 82

Integration Build (Contexto)

Trabalhos individuais devem ser integrados Comunicação não é o suficiente

Você quer garantir que o que é atualizado no repositório funcionaPrivate System Build é uma forma de testar o sistema Porém, construir sempre todo os sistema

pode levar muito tempo

Page 83: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 83

Integration Build (Solução)

Execute um build centralizado para todo o sistema em um ambiente isolado

Page 84: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 84

Integration Build (Processo)

Determine a freqüências de acordo com O tempo de duração do build

A freqüência das mudanças

O processo de build deve ser: Reprodutível

Tão próximo quanto possível de um build de produto final

Automatizado, com mínima intervenção manual

Um mecanismo de log e de notificação (e-mail) para sanar problemas rapidamente

Page 85: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 85

Integration Build

Identifique builds com uma tag (Repositório)Repita para todas as plataformas suportadasSe um build falhar continuamente, adicione mais verificações antes dos commits.Se possível, use o Integration Build como base para install kits.

Page 86: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 86

Integration Build (Problemas não resolvidos)

Alguns padrões complementares Repository: Diponibilizar resultados do build

Smoke Test: Testar se o build é útil

Regression Test: Testar stable baselines

Task Level Commit: Descobrir o que quebrou o build

Private Workspace

IntegrationBuild

Repository Task levelcommit

Smoke Test

Regression test

Page 87: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 87

Task Level Commit“Realize um commit por cada pequena

tarefa”

Classificação: Workspace

Você precisa associar mudanças com um build de integraçãoQuanto você deve trabalhar antes de realizar um commit no Repositório?

Page 88: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 88

Task Level Commit (Contexto)

É tentador realizar várias pequenas mudanças em um único check-in Políticas rigorosas

Tarefas complexas

Quanto menores as mudanças associadas a um check-in, Mais fácil é voltar atrás.

Mais fácil é identificar problemas

Page 89: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 89

Task Level Commit (Solução)

Efetue um commit por tarefa consistente (ou sub-tarefa, com granularidade adequada)

Considere a complexidade de cada tarefa, se pode ser subdividida, etc.Se houver dúvida, induza o erro para a granularidade menor Isto aumenta a freqüência das integrações

Aumenta a possibilidade de desfazer, de forma segura, o trabalho feito

Page 90: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 90

Task Level Commit

Algumas modificações são intrinsecamente longas Utilize Task Branch, e repita as

considerações propostas por Task Level Commit dentro do novo branch

Antes de realizar um commit, assegure que seu workspace possui o estado corrente da codelineUtilize testes (Unit Test) para assegurar mudanças consistentes

Page 91: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 91

Codeline Policy“Defina as regras”

Classificação: Codeline

Active Development Line e Release Line precisam ter regras diferentes.Quando os desenvolvedores sabem quando e como usar cada codeline?

Page 92: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 92

Codeline Policy (Contexto)

Diferentes codelines têm diferentes requisitos de estabilidadeComo explicar uma política? Qual o nível de documentação que você

precisa?

Como motivar as pessoas a utilizá-la?

Política derelease line

Política de Mainline

Release

Main

Page 93: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 93

Codeline Policy (Solução)

Defina regras para cada codeline como uma Política do Codeline, que Determine como e quando as pessoas realizaram

mudanças.

Seja concisa e passível de auditoria

As políticas de cada codeline podem conter: Tipo de trabalho sugerido (desenvolvimento, release, etc)

Como e quando novos elementos podem sofrer check-in, check-out, branch e merge

Restrições de acesso para indivíduos, papéis e grupos

A duração dos trabalhos

A carga de trabalho esperada e a freqüência de integrações

Page 94: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 94

Codeline Policy (Boas práticas)

Textos curtos e objetivos: “direto ao ponto” Com apenas o essencial ao contexto da codeline

De 1 a 3 parágrafos. Uma página no máximo

Adicione aos comentários de sua codeline no seu sistema de controle de versão

Crie um Branch, sempre que tiver incompatibilidade de políticasDivulgação efetiva das políticas no grupoUtilize ferramentas automáticas que facilitem o uso de sua política (ex.: ANT)

Page 95: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 95

Smoke Test“Verifique funcionalidades básicas”

Classificação: Workspace

Você precisa de verificações em seus builds de forma a manter a Active Development Line.Como verificar que o sistema continua funcionando após a mudança?

Page 96: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 96

Smoke Test (Contexto)

Testes exaustivos são bons para garantir a qualidadeQuanto mais longo for teste, mais longos serão os commits Commits com menor freqüência

Maior probabilidade de mudanças na Baseline desde a última verificação

Page 97: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 97

Smoke Test (Solução)

Condicione cada build a um teste de fumaça que verifique que o sistema ainda funcionará em cenários básicos. Testes simples de caixa preta

Iterações inadvertidas, bugs conhecidos

Garante integração básica dos componentes

Rápido de executar

Provê cobertura geral do sistema

Page 98: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 98

Smoke Test (Problemas não resolvidos)

Smoke Tests não são o sulficiente: Regression Test: Lida com problemas que

você achava já ter resolvido

Unit Test: Nível de abstração menor

Active developmentLine

IntegrationBuild

Private sysbuild

Smoke Test

Unit Test Regression test

Page 99: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 99

Unit Test“Verifique os contratos”

Classificação: Workspace

Smoke Tests não são suficientes para verificar que um modulo funciona em um nível menor de detalhes.Como verificar que um modulo continua funcionando após a mudança?

Page 100: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 100

Unit Test (Contexto)

Integração identifica problemas, mas é dificil para isolar problemasNecessidade de isolar questões de integração de questões de mudanças locais das unidades Testar o contrato de cada elemento

localmente

Estratégia incremental: a parte, depois o todo

Page 101: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 101

Unit Test (Solução)

Desenvolva e execute testes unitários Verificando se um componente obedece seu

contrato

Bons testes unitários são: Simples para rodar

Granularidade fina. Cada método significativo da interface de uma classe deve ser testado

Automáticos com auto-avaliação. Olha-se para os testes somente quando houver uma falha

Isolados. Um teste unitário não interage outros testes

Page 102: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 102

Unit Test

Testes unitários devem ser executados: Enquanto o software é codificado;

Antes de um check-in e após atualizar seu workspace com a versão corrente do software

Boas práticas: Uso de um framework para escrever testes

(Junit, CPPUnit, etc)

Redução da quantidade depuração em prol dos testes unitários. Ganhos de produtividade

Page 103: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 103

Regression Test“Teste as mudanças”

Classificação: Workspace

Smoke Tests são bons mas não abrangem todos os casosComo garantir que um código não deteriora ao longo do tempo?

Page 104: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 104

Regression Test (Contexto)

Abranger todos os casos leva tempoÉ uma boa estratégia adicionar testes à medida que erros são encontradosQuando um antigo erro reaparece: você quer estar apto a identificar quando isto acontece provar que o software não apresenta

problemas dos passado

Page 105: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 105

Regression Test (Solução)

Desenvolva uma bateria de testes de regressão baseado em casos de testes que o sistema falhou no passado Prefira testes que envolvam entradas do

sistema

Rodar a cada check-in pode custar caro Unit Tets podem ser mais baratos

Rode Regression Tests sempre que quiser validar a estabilidade o sistema Antes de um build de release

Antes de uma alteração de alto risco

Page 106: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 106

Private Versions“Histórico Privado”

Classificação: Codeline

Uma Active Development Line ficará inconsistente se commits forem realizados no meio de uma tarefa.Como realizar tarefas complexas e ainda ter os benefícios de um gerenciamento de versões?

Page 107: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 107

Private Version (Contexto)

Algumas vezes deseja-se criar um checkpoint durante passos intermediários de uma tarefa longa e complexa. Checkpoint é mecanismos oferecido por

sistemas de gerenciamento de versões

Você não deseja publicar passos intermediários

Page 108: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 108

Private Version (Solução)

Forneça aos desenvolvedores mecanismos com checkpointing mudanças Com uma interface simples

Na granularidade que eles estejam comfortáveis

Pode ser implementado como Private History

Private Repository

Private Branch

Page 109: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 109

Task Branch“Lidando com tarefas de longa

duração”

Classificação: Codeline

Algumas tarefas possuem passos intermediaários que prejudicariam o ritmo de uma Active Development LineComo um time pode realizar múltiplas tarefas de longa duração em uma codeline sem comprometer sua integridade?

Page 110: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 110

Task Branch(Contexto)

Às vezes somente parte da equipe está trabalhando em uma tarefa A tarefa pode incluir vários passos

Exemplo: Grandes refactorings não são facilmente

realizados em estágios. Ex.: novo mecanismo de persistência

Trabalhos para o futuro

Page 111: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 111

Task Branch (Solução)

Use Branches para isolamento da Mainline Crie um branch em separado para cada

atividade que tiver mudanças significantes para a codeline.

Use como um mecanismos para reduzir riscos

Para facilitar o merge final do branch, integre constantemente mudanças na

codeline

Page 112: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 112

Release Line“Desenvolvimento Não-Linear”

Classificação: Codeline

Você quer manter uma Active Development Line.Como manter uma versão de release sem interferir no trabalho corrente?

Page 113: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 113

Release Line (Contexto)

Tudo não pode ser evoluído na mainline Release precisa de uma política com mais

estabilidade

Precisa-se evitar estruturas complexas

Page 114: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 114

Release Line (Solução)

Divida manutenção/release a desenvolvimento ativo em codelines separadas. Mantenha cada release em uma release line independente para possibilitar a correção de bugsBranch cada release line de sua mainline.

Page 115: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 115

Release-Prep Codeline “Evite congelar o código”

Classificação: Codeline

Você quer manter uma Active Development Line.Como estabilizar uma codeline para um release iminente ainda permitindo que novas tarefas continuem na codeline ativa?

Page 116: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 116

Release-Prep Codeline (Contexto)

A codeline precisa ser estabilizada para que o release seja terminado Congelar novos trabalhos na codeline é

penoso

Uma Release Line pode ser custosa, se apenas uma pequena parte do time está trabalhando em um novo release

Release lineantecipada

Page 117: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 117

Release-Prep Codeline (Solução)

Crie um novo branch quando o código estiver se aproximando da qualidade desejada do release. Finalize o release neste branch, e torne-o o

Release Line

Page 118: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 118

A relação entre os padrões

Mainline

Active dev. line

Private Workspace

IntegrationBuild

Private sysbuild

Repository

Task levelcommit

Smoke Test

Unit TestRegression

test

PrivateVersions

Task Branch

CodeLinePolicy

ReleaseLine

Release-Prep Code Line

Page 119: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Disciplina de Gerência de Configuração e

Ambiente

Page 120: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 120

Objetivos

Definir Recursos de hardware e software

Política de atualização destes recursos

Estruturação de diretórios e repositórios

Plataforma de desenvolvimento

Política de utilização do ambiente

As atividades de Gerência de Configuração que deverão ser realizadas e em que momentos do desenvolvimento

Page 121: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 121

Responsáveis

Gerente de Configuração e ambiente Responsável pela definição dos

equipamentos e softwares utilizados e suas configurações

Define o ambiente, regras de uso do mesmo e política de mudanças

Define os papéis dos membros da equipe responsáveis pelas atividades de gerência de configuração

Estabelece as atividades de gerência de configuração que serão realizadas

Page 122: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 122

Artefatos

Documento de Definição de AmbientePlano de Gerência de Configuração de Software

Page 123: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 123

Artefatos – Documento de Definição de Ambiente

1. INTRODUÇÃO<Descreva os objetivos do documento>

2. INFRA-ESTRUTURA2.1. FERRAMENTAS

<Descreva que ferramentas serão usadas por todos os envolvidos no projeto durante o seu desenvolvimento,fornecendo uma breve descrição de cada uma e aquantidade de licenças disponíveis>

2.2. EQUIPAMENTOS<Descreva que equipamentos serão usadas durante o desenvolvimento do sistema, detalhando suasconfigurações>

3. ORGANIZAÇÃO FÍSICA<Forneça uma breve descrição da estrutura física do localonde o sistema será desenvolvido>

Page 124: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 124

Artefatos – Documento de Definição de Ambiente

4. PADRÃO DE NOMENCLATURA DE ARTEFATOS<Descreva qual será a convenção utilizada para nomear osartefatos, em inglês ou português>

5. AMBIENTE LOCAL5.1. ESTRUTURA DE DIRETÓRIOS5.2. INFORMAÇÕES ADICIONAIS

6. AMBIENTE DE HOMOLOGAÇÃO E TESTES6.1. ESTRUTURA DE DIRETÓRIOS6.2. INFORMAÇÕES ADICIONAIS

7. AMBIENTE DE PRODUÇÃO7.1. ESTRUTURA DE DIRETÓRIOS7.2. INFORMAÇÕES ADICIONAIS

8. ARQUIVOS DE CONFIGURAÇÂO<Descreva os arquivos utilizados para configuração e uso dosistema>

Page 125: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 125

Artefatos – Documento de Definição de Ambiente

9. PROMOÇÂO ENTRE AMBIENTES E BACKUPS<Defina a política para promoção dos artefatos entre osambientes e realização de backups>

9.1. AMBIENTE LOCAL AMBIENTE DE HOMOLOGAÇÃO E TESTES

<Descreva o procedimento que deve ser usado para transferirarquivos do ambiente local para o de homologação e testes

9.2. AMBIENTE LOCAL AMBIENTE DE PRODUÇÃO<Descreva o procedimento que deve ser usado para realizar atransferência de arquivos entre o ambiente de homologação etestes e o ambiente de produção>

10. POLÍTICA DE BACKUP<Descreva o procedimento que deve ser usado para realizaçãode backups em cada um dos ambientes>

11. AVALIAÇÃO E REVISÃO DO AMBIENTE<Descreva as modificações que serão necessárias no ambientepara o desenvolvimento do projeto>

12. REFERÊNCIAS

Page 126: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 126

Artefatos – Plano de Gerência de Configuração

de Software1. INTRODUÇÃO

<Descreva os objetivos do documento, forneça definições de termos necessários para o entendimento do mesmo e liste algumas referências interessantes.>

2. GERENCIAMENTO DA GERÊNCIA DE CONFIGURAÇÃO DE SOFTWARE

2.1. ORGANIZAÇÃO<Deve ser descrita nesta seção a estrutura da equipe de GCS e como ela se encaixa na estrutura da organização com relação a outras equipes>

2.2. RESPONSABILIDADES<Defina nesta seção os deveres e responsabilidades daqueles que estiverem envolvidos com as atividades de GCS.>

2.3. RELAÇÃO COM AS FASES DO DESENVOLVIMENTO E OUTROS FLUXOS DE ATIVIDADES

<Nesta seção são relacionadas as atividades de GCS com as diferentes etapas do ciclo de vida do desenvolvimento de software.>

Page 127: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 127

Artefatos – Plano de Gerência de Configuração

de Software3. ATIVIDADES DA GERÊNCIA DE CONFIGURAÇÃO DE

SOFTWARE3.1. IDENTIFICAÇÃO DA CONFIGURAÇÃO

<Esta seção descreve como identificar, nomear e adquirir os itens de configuração do sistema.>3.1.1. Identificação de itens de configuração3.1.2. Nomeação dos itens de configuração3.1.3. Aquisição e armazenamento de itens de configuração3.1.4. Gerenciamento de baselines

3.2. CONTROLE DA CONFIGURAÇÃO<Nesta seção deve ser descrito o processo de gerência de mudanças. Normalmente, essa informação é colocada em um documento a parte chamado Documento de Políticas de Mudanças. Aqui deve apenas ser incluído um apontador para esse documento.>

Page 128: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 128

Artefatos – Plano de Gerência de Configuração

de Software3.3. REGISTRO DO STATUS DA CONFIGURAÇÃO

<Esta seção lida com os detalhes de registrar o status de cada item de configuração e apresentar essa informação aos indivíduos que precisam saber sobre ela.>3.1.1. Identificação das necessidades de informação3.1.2. Mecanismos de coleta de informações3.1.3. Relatórios, seus conteúdos e frequências3.1.4. Acesso a dados de registro de status

3.4. AUDITORIA DA CONFIGURAÇÃO<Esta seção descreve os tipos de auditoria que serão realizados, o procedimento de auditoria, a freqüência e qualquer outra informação relevante.>3.1.1. Auditorias que devem ser realizadas3.1.2. Procedimentos de auditoria

Page 129: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 129

Artefatos – Plano de Gerência de Configuração

de Software4. AGENDA DA GERÊNCIA DE CONFIGURAÇÃO

<Esta seção descreve a seqüência de atividades de GCS, suas interdependências e a relação com o ciclo de vida do projeto.>

5. RECURSOS DE GERÊNCIA DE CONFIGURAÇÃO<Indique nesta seção as ferramentas de software, técnicas, equipamentos, pessoas e treinamentos necessários para a implementação das atividades de gerência de configuração especificadas.>

6. MANUTENÇÃO DO PLANO DE GERÊNCIA DE CONFIGURAÇÃO DE SOFTWARE

<Esta seção descreve as atividades que são necessárias para manter o plano atualizado durante o ciclo de vida do projeto.>

Page 130: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 130

O Fluxo de Atividades

Gerente deConfiguraçãoe Ambiente

Definir ferramentas eequipamentos

Implantar e administrar ambiente

Estruturar ambiente

Planejar gerência de configuração

Page 131: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 131

Gerente deConfiguraçãoe Ambiente

Definir ferramentas eequipamentos

Implantar e administrar ambiente

Estruturar ambiente

Planejar gerência de configuração

Definir Ferramentas e Equipamentos

Page 132: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 132

Definir Ferramentas e Equipamentos(continuaçã

o)

Objetivos Definir ferramentas de suporte ao

desenvolvimento, controle de versões e softwares em geral

Definir hardwares e suas configurações

Definir regras para atualizações de hardware e software

Responsável Gerente de configuração e ambiente

Page 133: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 133

Definir Ferramentas e Equipamentos(continuaçã

o)

Entradas Documento de requisitos

Lista de riscos

Estudo de viabilidade

Saídas Documento de definição de ambiente

Plano de gerência de configuração de software

Page 134: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 134

Passos para Definir Ferramentas e Equipamentos

Passo 3 – Definir Equipamentos e suas Configurações Escolha dos equipamentos (hardware) que serão

utilizados para o desenvolvimento e teste do sistema

Devem ser explicitadas Configurações das máquinas Periféricos necessários

As máquinas devem ser compatíveis com as plataformas escolhidas e ter, pelo menos, as configurações mínimas necessárias para o uso das ferramentas

Page 135: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 135

Passos para Definir Ferramentas e Equipamentos

Definir plataformas de desenvolvimentoDefinir ferramentasDefinir equipamentos e suas configurações

Page 136: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 136

Passo 1 – Definir Plataforma(s) de Desenvolvimento

Escolha da plataforma sobre a qual o sistema será desenvolvido

Deve ser levada em consideração também a plataforma na qual o sistema rodará

Page 137: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 137

Passo 2 – Definir Ferramentas

Escolha das ferramentas que serão utilizadas para o desenvolvimento do sistema

Inclui IDEs, ferramentas de teste, sistemas de gerência de configuração, SGBD, etcDevem ser fornecidas informações sobre cada ferramenta escolhida

Page 138: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 138

Passo 3 – Definir Equipamentos e suas

Configurações

Escolha dos equipamentos (hardware) que serão utilizados para o desenvolvimento e teste do sistemaDevem ser explicitadas: Configurações das máquinas

Periféricos necessários

As máquinas devem ser compatíveis com as plataformas escolhidas e ter, pelo menos, as configurações mínimas necessárias para o uso das ferramentas

Page 139: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 139

Gerente deConfiguraçãoe Ambiente

Definir ferramentas eequipamentos

Implantar e administrar ambiente

Estruturar ambiente

Planejar gerência de configuração

Estruturar Ambiente

Page 140: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 140

Estruturar Ambiente(continuação)

Objetivos Determinar a estrutura de diretórios que

será adotada para o projeto

Definir os diferentes ambientes• desenvolvimento, integração, testes, produção

Definir a política de uso do ambiente

Responsável Gerente de configuração e ambiente

Page 141: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 141

Estruturar Ambiente(continuação)

Entradas Documento de definição de ambiente

Plano de gerência de configuração de software

Saídas Documento de definição de ambiente

(atualizado)

Plano de gerência de configuração de software(atualizado)

Page 142: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 142

Passos para Estruturar Ambiente

Definir estrutura de diretórios, repositórios e áreas de backupDefinir política para utilização do ambiente

Page 143: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 143

Passo 1 – Definir Estrutura de Diretórios, Repositórios e Áreas de

Backup

As seguintes áreas podem ser definidas: Área para apresentação da metodologia

Desenvolvimento, testes, integração e produção

Área de programas

Repositórios onde são mantidos os itens de configuração

Área para disponibilização de builds e releases

Cada uma dessas áreas deve ter uma estrutura interna bem definida

Page 144: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 144

Passo 2 – Definir Política para Utilização do

Ambiente

Neste passo são definidas diversas regras relacionadas à utilização do ambiente Forma de acessar o site da metodologia

Forma de recuperar templates com o fim de criar artefatos

Política de realização de backups do projeto

Regras para recuperação e atualização de itens de configuração

Políticas para a criação de branches

Page 145: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 145

Gerente deConfiguraçãoe Ambiente

Definir ferramentas eequipamentos

Implantar e administrar ambiente

Estruturar ambiente

Planejar gerência de configuração

Planejar Gerência de Configuração

Page 146: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 146

Planejar Gerência de Configuração

(continuação)

Objetivos Definir os papéis e responsabilidades dos

membros da equipe responsável pelas atividades de gerência de configuração (GC)

Definir os baselines que deverão ser estabelecidos

Definir o cronograma das atividades de GC

Definir as políticas, procedimentos e padrões que guiarão essas atividades

Identificar os itens de configuração

Responsável Gerente de configuração e ambiente

Page 147: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 147

Planejar Gerência de Configuração

(continuação)

Entradas Plano de gerência de configuração de

software

Saídas Plano de gerência de configuração de

software (atualizado)

Page 148: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 148

Passos para Planejar Gerência de Configuração

1. Definir organização, papéis e responsabilidades

2. Definir políticas e procedimentos para registro do status da configuração

3. Definir esquema de nomeação para itens de configuração

4. Identificar e registrar itens de configuração5. Planejar auditorias6. Definir baselines7. Definir cronograma de gerência de

configuração

Page 149: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 149

Passo 1 – Definir Organização, Papéis e

Responsabilidades

Neste passo devem ser definidos os papéis e responsabilidades da equipe responsável pelas tarefas GCA relação dessa equipe com as outras do time de desenvolvimento também deve ser descrita nesta atividadeÉ interessante mencionar as atividades de GC que são realizadas por pessoas fora da equipe de GC

Page 150: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 150

Passo 2 - Definir Políticas e Procedimentos para Registro do Status

da Configuração

Neste passo, devem ser descritas as informações a ser registradas durante o desenvolvimentoÉ importante especificar o modo como essas informações serão coletadasTambém são definidos os relatórios que serão emitidos a partir dessas informações

Page 151: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 151

Passo 3 – Definir Esquema de Nomeação de Itens de Configuração

Para cada item de configuração selecionado, deve ser atribuído um identificador únicoPara tanto, deve ser definido um esquema de nomeaçãoEsse esquema deve permitir diferenciar versões diferentes de um item de configuração

Page 152: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 152

Passo 3 – Definir Esquema de Nomeação de Itens de

Configuração

Um esquema de nomeação que atende aos requisitos mencionados é o seguinte:

<projeto>-<tipo de item><contador>V<versão>

Alguns exemplos: QIB-HW00005V1.2

QIB-SW00034V1.5

AMAZONIA-SW00035V4.1

QIB-DOC00002V5.0

Page 153: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 153

Passo 4 – Identificar e Registrar Itens de

Configuração

Neste passo, são selecionados os itens de configuração que fazem parte do sistema em desenvolvimentoCada item selecionado deve ser unicamente identificado de acordo com o esquema de nomeação definidoAs características físicas e funcionais de cada item devem ser registradas na base de dados de GC

Page 154: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 154

Passo 5 – Planejar Auditorias

Devem ser definidos, neste passo, os tipos de auditoria que serão realizados na configuração:Os dois tipos mais comuns são: Auditoria física da configuração

Auditoria funcional da configuração

Também devem ser definidos: Os momentos em que as auditorias serão

realizadas

Os itens de configuração que serão auditados

Os procedimentos, papéis e responsáveis para cada auditoria

Page 155: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 155

Passo 6 – Definir Baselines

O objetivo deste passo é definir os baselines que serão estabelecidos durante o processo de desenvolvimentoDevem ser documentadas as características físicas e funcionais de cada um

Page 156: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 156

Passo 7 – Definir Cronograma de GC

Neste passo é elaborado um cronograma das atividades de gerência de configuração, relacionando-as com as outras atividades do projetoNo cronograma, devem constar informações como: As fases do ciclo de vida do projeto nas quais

os diferentes baselines deverão ser estabelecidos

As fases do ciclo de vida do projeto nas quais os diferentes releases que serão liberados

As ocasiões nas quais serão realizadas as diferentes auditorias da configuração.

Page 157: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 157

Gerente deConfiguraçãoe Ambiente

Definir ferramentas eequipamentos

Implantar e administrar ambiente

Estruturar ambiente

Planejar gerência de configuração

Implantar e Administrar Ambiente

Page 158: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 158

Implantar e Administrar Ambiente(continuação)

Objetivos Implantar o ambiente com base na

estrutura definida na atividade anterior

Gerenciar a utilização do ambiente de acordo com as normas propostas

Avaliar e revisar o ambiente

Responsável Gerente de configuração e ambiente

Page 159: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 159

Implantar e Administrar Ambiente(continuação)

Entradas Documento de definição de ambiente

Plano de gerência de configuração de software

Saídas Documento de definição de ambiente

(atualizado)

Plano de gerência de configuração de software(atualizado)

Page 160: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 160

Passos para Implantar e Administrar Ambiente

Instalar máquinas e criar diretóriosDisseminar política de utilização do ambienteGerenciar e avaliar ambiente

Page 161: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 161

Passo 1 – Instalar Máquinas e Criar os

Diretórios

Neste passo devem ser instalados e configurados os servidores e estações de trabalhoEm cada máquina, devem ser instalados os softwares necessários, de acordo com o perfil de quem a estará utilizandoA estrutura de diretórios da máquina deve obedecer ao que foi definido na atividade anteriorÁreas de backup, repositórios e áreas para a disponibilização de builds são criados neste passo

Page 162: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 162

Passo 2 – Disseminar Política de Utilização do

Ambiente

O objetivo deste passo é apresentar a política de uso do ambiente à equipe do projetoDevem ser ressaltados os benefícios e desvantagens que o uso dessa política traráReforçar o seguimento da políticaAbrir espaço para feedbacks e sugestões

Page 163: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 163

Passo 3 – Gerenciar e Avaliar Ambiente

Acompanhamento da utilização do ambiente pela equipe do projeto;Manutenção do ambiente;Atualização de versões de softwares;Avaliação do ambiente ao fim de cada iteração. Busca de melhorias na produtividade;Re-avaliação das políticas de gerência de configuração

Page 164: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 164

Relação com as Fases de Desenvolvimento e com as Outras

Disciplinas

Tem uma maior concentração na fase de concepçãoNas iterações das fases seguintes, o nível de esforço é mantido constanteAcontece em paralelo e com uma forte integração com a disciplina de planejamento e gerenciamentoAlgumas atividades relacionadas com a gerência da configuração ocorrem em outras disciplinas como a de implantação e a de implementação

Page 165: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Controle de Mudanças

Page 166: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 166

Contexto

Desenvolvimento iterativo/incrementalNovos conjuntos de requisitos, detalhados a cada iteraçãoMudanças em estratégias de negócio motivadas pelas mais diversas fontes: mercado, cultura, leis, etc

Page 167: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 167

Problemas

Controle do escopo do projeto Modificações podem ampliar o leque de

funcionalidades e aumentar significativamente o custo do projeto

Atrasos em entregas planejadas

Controle de consistência dos artefatos Uma mudança aparentemente localizada

pode causar muito mais impacto do que o previsto

Degradação da qualidade do software • ex: abandono dos testes automatizados devido à

inconsistência dos dados de teste

Retrabalho

Page 168: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 168

O que é Gerência de Mudanças?

Gerência de Mudanças é o processo de avaliar, coordenar e decidir sobre a realização de mudanças propostas a itens de configuração (ICs)Mudanças aprovadas são implementadas nos itens de configuração e nos dados e documentos relacionados

Page 169: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 169

Objetivos da Gerência de Mudanças

Garantir que os artefatos do sistema alcançam e mantém uma estrutura definida através do seu ciclo de vidaDefinir procedimentos e documentação necessários para realizar modificações a ICsProver os mecanismos necessários para conduzir mudanças de uma maneira controlada

Page 170: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 170

Benefícios

Controle sobre o escopo do projetoMais produtividade cada solicitação será tratada de forma

coordenada

Redução dos problemas de comunicação entre membros da equipe

Mais qualidade, uma vez que cada mudança, antes de ser realizada, tem seu impacto avaliadoGeração de dados para o acompanhamento (tracking) do projeto

Page 171: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Ciclo de vida de um artefato

Page 172: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 172

Ciclo de vida de um artefato

Draft Aceito Manutenção

Concepção doartefato

Mudanças feitas de forma informal

Revisão/aceitação(baseline)

Mudanças via controle formal (CCB)

Mudanças em manutenção

Release retir

ado

Page 173: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 173

Artefato Draft

Mudanças frequentes e rápidasDemanda por agilidadeControle formal dificulta a criação do artefatoArtefatos apenas gerenciados e controlados Uso de controle de versão (CVS, Clear Case,

entre outros)

Page 174: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 174

Artefato Aceito

Artefato seguiu um processo de revisão, testes (se aplicável) e aceitaçãoInserido dentro do processo de controle de mudanças, tornando-se de fato item de configuraçãoMudanças via solicitação formalPresença do grupo gestor de mudanças (CCB) para avaliar e priorizar mudanças

Page 175: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 175

Artefato em Manutenção

Após a entrega de uma versão do produto, os artefatos passam para a fase de manutençãoControle de mudanças permanece formal para os artefatos de um baselineNovas artefatos podem ser desenvolvidos usando o mesmo modelo de ciclo de vidaSistema pode ser descontinuado ou removido do ambiente de produção

Page 176: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Comitê gestor de mudanças

Change Control Board (CCB)

Page 177: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 177

Responsabilidades

Análise das solicitações de mudançaControlar o escopo do projetoReuniões com freqüência adequada ao ritmo das solicitações de mudançaEnvolver stakeholders no processo de priorização no processo de decisãoBalanço entre o nível de controle desejado e overhead suportado

Page 178: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 178

Características

Composição multidisciplinar SQA, gerente, cliente, arquiteto

Profissionais com grande capacidade de comunicação e negociaçãoPode apresentar uma estrutura hierarquica dependendo do tamanho e da quantidade de stakeholders e sistemas envolvidos (integrações)

Page 179: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 179

Defeitos x Solicitações de mudança

Defeitos não são normalmente processados pelo CCB, salvo se envolver algum questionamento relativo ao escopo do projetoQuestões menores devem ser resolvidas pelo líder do projeto junto à equipe, reduzindo o overhead do CCB

Page 180: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 180

Analisando o impacto

Mudanças de grande impacto devem ser comunicadas aos stakeholders envolvidosAnálises de custo x benefício produzidas pelos stakeholdersPriorização de mudançasMudança pode ser rejeitada se o CCB perceber que a análise de custo será mais cara que o benefício percebidoPor questões de eficiência, algumas solicitações de mudança podem ser agrupadas por tema, subsistema ou área de negócio

Page 181: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 181

Importância da análise de impacto

Requisitos

A&P

Componentes

Análise de impacto

intra-projeto

Dentro do projetoAnálises inter-sistemas devem ser consideradas Exemplo: frameworks, componentes ou bancos de

dados compartilhados

Page 182: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Processo de Gerência de Mudanças

Page 183: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 183

Sobre o Processo de Gerência de Mudanças

Deve ser definido um documento padrão para que mudanças possam ser solicitadasEsse documento normalmente se chama Solicitação de Mudança (SM)A um conjunto de pessoas, deve ser dada a autoridade para decidir se uma mudança será ou não implementadaO processo é necessário para garantir que apenas mudanças avaliadas e aprovadas são realizadas em ICs

Page 184: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 184

Solicitações de MudançaAlgumas informações que podem estar incluídas em uma SM: Identificação única

Solicitante

Sistema/Projeto

Item a ser modificado

Classificação (melhoria, correção de defeito, outra)

Prioridade

Descrição

Situação (nova, atribuída, finalizada, verificada, fechada)

Page 185: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 185

Etapas do ProcessoUm processo genérico pode ser dividido nas seguintes etapas:

1. Requisição da mudança

2. Classificação da mudança

3. Avaliaçãoda mudança

4.Negociação sobre a realização da

mudança

5. Implementaçãoda mudança

6. Verificação da mudança

7. Promoção dos itens modificados

para um novo baseline

(mudança aceita)

CCB

Page 186: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 186

Correções emergenciaisEm algumas situações, não há tempo para seguir os procedimentos padrão para a realização de mudançasMesmo nessas situações, porém, é muito importante que seja criada uma solicitação de mudançaO objetivo é garantir um mínimo de ordem, mesmo em uma situação caótica

Page 187: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 187

Correções emergenciaisMudanças realizadas nessas circunstâncias podem comprometer a arquitetura ou inserir bugsDecisão: Desfazer correção ou

Transformar a correção: refactoring, acréscimo de novos casos de teste

Page 188: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Geração de releases

Page 189: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 189

Baseline

Identificação e empacotamento de artefatos entregues ao cliente (interno ou externo)Um release implica no estabelecimento de um novo baseline, de produtoGarantia de que todos os itens de configuração foram devidamente testados, avalidos, aceitos e estão disponíveis no novo baseline

Page 190: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 190

Release notes

Id Descrição

1 Problema de performance na validação de pedido

2 Nova rotina de validação de crédito conforme normas de dezembro de 2002

… …

Relação de solicitações implementadas e testadasAutomação parcialComentários adicionais Limitações atuais, problemas não resolvidos

Page 191: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 191

Tipos de release

Normalmente, releases estão associados aos milestones do plano de projetoInternos Controle de qualidade, acompanhamento de

projeto, controle de riscos, aceitação, aquisição de conhecimento através da coleta de feedbacks, desenho da estratégia de implantação

Externos Implantado e utilizado pelo cliente

Page 192: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 192

Desafios

Cultura organizacional Agrupamento de solicitações em releases

bem definidos e estabelecidos deve ser negociado com os stakeholders do projeto

Releases internos utilizados de forma efetiva como ferramenta de gestão de projeto

Cultura fundamentada no pragmatismo e automação de atividades repetitivas

Integração entre sistemas de controle de versão e mudanças

Page 193: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Discussão

Page 194: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 194

Alguns FatosMudança é inevitávelMudar é fácil – controlar diversas mudanças simultâneas é difícilA gerência de mudanças introduz controle sobre as mudanças de maior relevância Todas as mudanças são analisadas

Apenas as aprovadas são realizadas

Sempre se sabe quem modificou o que, onde e quando

Page 195: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 195

Tradeoffs

Controle de mudanças Nível de controle x overhead com o CCB

Defeitos de magnitude menor podem ser tratados pelo líder de projeto diretamente

Uso de versões draft de forma de minimizar controle de mudanças

Automação do processo Custo x benefício

Aquisição de ferramentas comerciais

Uso de ferramentas open source

Page 196: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Sistemas de Controle de Versão

Page 197: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Controle de versão

Controle de versão “conjunto de práticas cujo objetivo principal

é manter controle sobre as modificações efetuadas em um determinado (conjunto) arquivo.”

Utilizadas no contexto de uma Gerência de Versões

Aplicados aos arquivos de um Projeto.

CONTROLE DE VERSÃO(PRÁTICAS)

Gerência Gerência de de

VersõesVersões ProjetoProjeto

Page 198: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Sistemas de Controle de Versão (SCV)

Ferramenta de apoio ao Gerenciamento de Versões De documentos, códigos fontes, etc.

Permitem Automatizar o processo de controle de versão.

Gerenciar o histórico, modificações e diferentes versões;

Que várias pessoas trabalhem simultâneamente em um mesmo documento;

Controlar as versões através de tags;

Visualizar diferenças entre as versões;

merging entre versões conflituosas;

Page 199: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

O que não um SCV é?

Mecanismo para backupFerramenta para a construção de buildsSubstituto para comunicação entre desenvolvedores Conflitos não são resolvidos automaticamente

Ferramenta de solicitação de mudanças Não controla requisições de mudança

CVS não é a solução para todos os CVS não é a solução para todos os problemas!problemas!SCVs são utilizados dentro de um contexto maior, e possuem um papel específico.Veremos outras ferramentas, com outros papeis, ainda neste curso!

Page 200: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Arquitetura Cliente/Servidor

Servidor mantêm Repositório centralizado

arquivos a serem controlados,

histórico de suas mudanças, log, etc.

Obs.: A maioria dos servidores armazenam apenas as diferenças (deltas) entre versões sucessivas de um determinado arquivo (as somas das diferenças é capaz de produzir a versão mais nova).

Clientes mantêm Área de trabalho (Workspace)

cópia dos arquivos do repositório

Page 201: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Principais SCV OpenSource

Concurrent Versions System (CVS) padrão de facto

• Referência para todas as outras ferramentas subseqüentes.

Porém...• tem perdido espaço para outras ferramentas com novas

(e largamente requisitadas) funcionalidades.

Subversion (SVN) Intenção: Substituto melhorado do CVS.

Novas funcionalidades:• Versionamento de diretórios;• Commits atômicos;• Suporte a diversas camadas de rede;• Uso eficiente de rede.

Page 202: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

TendênciasGrande procura pelo SVN porém ...

CVS é amplamente utilizado empresas de todos os portes.

Ferramentas comerciais ClearCase

Visual Studio Team System

continuam a ser adotadas apenas em empresas de Grande Porte.

| 202

Volume de buscas por clientes CVS e SVN

Volume de ofertas de emprego por CVS e SVN

Page 203: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Comparação entre alguns SCVs

CVS SVN ClearCase VSTS

LicençaOpen Source

Open Source

Comercial

Formato Repositório

Arquivos RCS [1] Relational DataBase [1]

Atomic Commit Não Sim Sim Sim

Copiar e Renomear Arquivos e Diretórios

Não Sim Sim Sim

Merge Tracking Não Sim Sim Sim

Tags Sim Sim[2]

Conjunto de Comandos

Simples Excelente Excelente Excelente

Deployment Bom Médio [3] Fraco [3] Médio

Velocidade Médio[4] Muito Bom Fraco [5] Bom

Portabilidade Bom Excelente Médio Fraco

[1] Arquivos RCS podem ser alterados manualmente quando corrompidos, porém não suportam transações.[2] Suportado através de copias.[3] O ClearCase tem uma instalação difícil. O SVN tem uma instalação fácil, porém trabalhosa.[4] Para suportar segurança, o CVS precisa ser tunelado dentro de outros protocolos.[5] Servidor e clientes precisam estar na mesma rede para se obter uma performace aceitável.

*Principais Fontes: Wikipedia Comparison e Better SCM Comparison

Page 204: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Fluxo de Trabalho com SVC

Page 205: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Modelos de “Versionamento”

Lock-Modify-Unlock

Falsa noção de segurança.

• Mais problemas do que parece.

Você só consegue alterar um arquivo se conseguir destravá-lo.

• Desenvolvedores esquecem arquivos travados freqüentemente!

Dificulta uso off-line.

Copy-Modify-Merge Método recomendado

Mais simples e prático.• menos problemático do

que você imagina

Desenvolvedores podem trabalhar

• simultaneamente no mesmo arquivo.

• Livremente em seu workspace

Facilita o uso off-line.

Page 206: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

checkoutupdatecheckinDesenvolvimento

Desenvolvimento ideal

Repositório

Desenvolvedor A

Desenvolvedor B

Page 207: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

checkin

X

Desenvolvimento real

Repositório

Desenvolvedor A

Desenvolvedor B

updateResolução de conflitocheckin

conflito

Page 208: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Fluxo de Trabalho

Comece sem nada. Selecione um projeto em uma codeline (branch ou

raiz) e selecione Checkout; • ou update com a versão mais atual do repositório se o

projeto já existe localmente.

Faça as mudanças. Trabalhe localmente com o projeto, salvando as

mudanças apenas na sua máquina;

Sincronize, quando você estiver pronto Update;

Examine as mudanças, faça as alterações necessárias;

Rode os Testes;

Commit;

Page 209: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Concurrent Versions System(CVS)

Rodrigo Teixeira

Page 210: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Vantagens

Concurrent Versions System (CVS) padrão de facto

Projeto Open Source (GNU);

Boa portabilidade

Armazenamento inteligente de arquivos (Delta)

Integração com várias ferramentas de desenvolvimento;

Ferramentas utilizadas em sala

Servidor Clientes

Page 211: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Ferramentas CVS

CVSNT Server

Servidor CVS para windows

Site: www.cvsnt.org

WinCVS

Interface gráfica standalone

Site: www.wincvs.org

TortoiseCVS

Integração do CVS ao Windows Explorer

Site: www.tortoisecvs.org

Eclipse

Ambiente de Desenvolvimento

Site: www.eclipse.org

CLIENTES

SERVIDOR

Demonstração

Page 212: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exemplo de um servidor CVS

CVS tem suporte nativo em sistemas unix/linuxUm servidor gratuito windows: CVSNT

Disponível em: http://www.cvsnt.org

Exemplo para criar um novo repositório no CVSNT

Page 213: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

WinCVS – Tela Principal

arquivos

status

módulos

Íco

ne

de

esta

do

mer

o d

a re

visã

o

Tip

o d

o a

rqu

ivo

no

me

do

tag

Page 214: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

TortoiseCVS

arquivos

Ícone de estado

arquivosoperações

Page 215: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Eclipse[Perspectiva Repository

Explorer]

du

los e A

rqu

ivos

dig

o

Histórico e Tags

Page 216: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Usando WinCVS

Configurações Iniciais Admin > Preferences...

• CVSROOT – Localização do repositório– :pserver:{login}@{servidor}:{caminho do

repositório}

• Authentication (autenticação)– “passwd” file on the cvs server

Admin > Login...• Colocar a senha...

Page 217: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 217

Comandos comuns

cvs [opções do cvs] comando [opções do comando] [arquivos]

Granularidade: projeto

checkout module• Copia arquivos do repositório para o workspace.

Import module• Copia arquivos locais para o repositório;• Mecanismo de detecção se arquivo é binário ou texto.

Granularidade: arquivo

commit selection• submete arquivos para o repositório.

update selection• atualiza a cópia de trabalho com o repositório.

add e remove selection• Adiciona e remove um arquivo ao repositório, respectivamente;• Necessita posteriormente de um commit.

Page 218: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Comandos Comuns

Rótulos e linhas de desenvolvimento

Create a Tag - Rotula arquivos• facilitar futuros updates e checkouts• Comum em términos de uma iteração/release• Atua diretamente no repositório

Create a Branch • Cria uma nova linha de desenvolvimento• Análogo a tags• Somente os arquivos selecionados e nas versões específicas do

workspace é que farão parte do branch

Consultas

status e log• Mostra o status e histórico de arquivos, respectivamente.

diff • Compara arquivos de trabalho com suas versões no repositório

ou versões dentro do repositório

Page 219: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exercício

Simular a trabalho colaborativo e simultâneo de uma equipe de desenvolvimento.1. Dividir a sala em equipes de 2 ou 3 participantes;

1. Eleger um participante como “líder”.

2. Criar um novo repositório para um grupo de equipes;3. Exercitar os principais comandos CVS no WinCVS:

1. Import de um módulo (líder);2. Checkout do modulo (demais participantes);3. Commit e Update;4. Adição de arquivos e Release de arquivos;5. Criar Tag e Branchs ;6. Merge entre codelines.

4. Utilizar flags de edição (edit, reserved edit, etc) [opcional]

Page 220: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Subversion (SVN)

Rodrigo Teixeira

Page 221: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Vantagens

Subversion (SVN) Sucessor natural do CVS

• “Subversion has expanded beyond its original goal of replacing CVS”

Novas funcionaldades:• “Versionamento” de diretórios• Commits atômicos• Acesso via HTTP

Open Source Boa portabilidade Integração com várias ferramentas de desenvolvimento; Site: http://subversion.tigris.org/

Ferramentas utilizadas em sala

Servidor Clientes

Page 222: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Ferramentas CVS

VisualSVN

Servidor CVS para windows

Site: www.visualsvn.com/server

RapidSVN

Interface gráfica standalone

Site: rapidsvn. tigris.org

TortoiseSVN

Integração do SVN ao Windows Explorer

Site: tortoisesvn.tigris.org

Eclipse

Ambiente de Desenvolvimento

Plugins : • subclipse.tigris.org• www.eclipse.org/subversive/

CLIENTES

SERVIDOR

Demonstração

Page 223: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exercício

Simular a trabalho colaborativo e simultâneo de uma equipe de desenvolvimento.1. Dividir a sala em equipes de 2 ou 3 participantes;

1. Eleger um participante como “líder”.

2. Criar um novo repositório para um grupo de equipes;

3. Exercitar os principais comandos SVN no Eclipse:1. Import de um módulo (líder);2. Checkout do modulo (demais participantes);3. Commit Atômico e Update de vários arquivos;4. Synchronize View;5. Adição, release e rename de arquivos;6. Criar Tag e Branchs ;7. Merge entre codelines.

Page 224: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Referências

Ferramentas CVS Windows Servidor - CVSNT (www.cvsnt.org)

Cliente - WinCVS (www.wincvs.org)

Cliente - Tortoise (www.tortoisecvs.org)

Diff/Merge - WinMerge (www.winmerge.org)

Ferramentas SVN SubVersion (http://subversion.tigris.org)

Livro - http://svnbook.red-bean.com/

Servidor - VisualSVN (http://www.visualsvn.com/server/)

Cliente - Tortoise (tortoisesvn.tigris.org)

Cliente - RapidSVN (rapidsvn. tigris.org)

Plugin Eclipse (subclipse.tigris.org)

Page 225: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Integração Continua

Page 226: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Projetos de TI continuam ineficientes e imprevisíveis ...

| 226

Qual é o motivo destes problemas?

Page 227: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Imaturidade no Desenvolvimento

Por várias razoes, e em sua maioria, …

Desenvolvimento de software continua imaturo. Ele atribui mais responsabilidades ao indivíduo

• para que ele tenha maior liberdade para exercer sua criatividade.

Porem …

Os desafios atuais exigem o desenvolvimento seja balanceado com uma abordagem mais automatizada e estruturada que otimize a produção e suporte a melhoria continua do produto e do processo."

| 227

Page 228: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 228

Atividades de integração

A integração de partes de um sistema normalmente é apenas perto de sua implantação

• Problemas são detectados tardiamente.

em geral, é feita em freqüência inversamente proporcional à complexidade do sistema

• Dificuldade em rastrear as causas dos problemas

É uma tarefa trabalhosa e sujeita a erros• Quanto maior o sistema, mais difícil

"Integração é uma das tarefas de desenvolvimento que pode se beneficiar, e muito, de um processo

automatizado e estruturado."

Page 229: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 229

Integração ContínuaGeração freqüente (pelo menos diária) de builds do sistema partes do sistema integradas

constantemente

problemas de integração encontrados logo que introduzidos, na maioria dos casos

Considerada uma das "melhores práticas" no desenvolvimento de software

Há alguns problemas, porém...

Page 230: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Builds

| 230

construçãocomplexa

Page 231: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 231

Os Problemas na Geração de Builds

Fazer builds do sistema manualmente pode ser muito demorado;

é difícil de manter;

não provê reuso entre equipes

Gerências de builds builds não são disponíveis para toda a equipe.

problemas em builds anteriores são ignorados;

Dependências dos builds Pode ser difícil saber quais as versões "corretas" dos arquivos

utilizados no build;

Os pedaços do sistema podem estar em diversos locais diferentes;

Alguns arquivos podem ser esquecidos

Page 232: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 232

As Soluções

Manter todos os arquivos em um repositório centralControlar o acesso a esse repositório, de modo a garantir a consistência dos artefatos

Automatizar o processo degeração de builds

Gerenciar a execução dos builds e distribuir seus resultados.

Sistema de Controle de Versões (CVS, por exemplo)

Build Script

executa observa

Sistema de Integração Contínua

Page 233: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

ferramentas de build [Evolução]

| 233

Obs.: Cronologicamente o maven foi criado anteriormente ao Ivy. Porém o primeiro release do Ivy e do maven2 foram lançados na mesma época.

tendência

Gerência de configuração de projetos

Gerência de dependências de projetos

Page 234: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Comparação Maven vs Ant + Ivy

| 234

Critério Ant + Ivy Maven

Instalação Muito fácil Muito fácil

Iniciar um novo projeto

5 min 15 min

Nova funcionalidade 10 min para cada novo alvo

2 min para cada nova meta

Aprendizado para um novo desenvolvedor

30 min. Facilidade para se entender e ferramental

2 horas. Pode ser confuso no início.

Layout padrão? Não (pode ser bom, pois pode alterá-lo como quiser)

Sim (pode ser bom, pois padroniza todos os projetos)

Suporte a múltiplos projetos?

Sim, mas você tem que criar toda a lógica p/ tratá-los.

Sim, nativo com o Maven Reactor.

Geração de documentação

Nativamente, não, mas existem plug-ins.

Sim

Integração com IDEs? Sim e muito boa Sim, mas básica

Gerência de dependências?

Sim, através do plug-in Ivy

Sim, nativo

pro

duti

vid

ade

sup

ort

e

Page 235: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Ant

| 235

Page 236: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 236

AntFerramenta para construção automática de buildsCaracterísticas: Open source/Java

Facilmente extensível

Build scripts escritos em XML

Integração com diversas ferramentas de desenvolvimento e gerência de configuração

Aumento sensível de produtividade

Page 237: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 237

O que o Ant pode fazer por você...

Copiar, apagar, mover arquivos e diretóriosAcessar o CVSCompilar os arquivos fontesGerar um JARExecutar uma bateria de testesEnviar um e-mail com os resultados dos testesFazer um upload do build via FTP para o servidor de produção

Page 238: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 238

Buildfiles

Buildfiles são scripts a partir dos quais o Ant gera buildsEscritos em XML

build.xmlbuild.xml AntAnt

Arquivos

ExecutáveisExecutáveis

Page 239: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 239

Estrutura de um buildfile<project>

<property 1/>

<property n/>

<target 1><task 1/>

</target>

<target n><task 1/><task n/>

</target></project>

O buildfile é composto de um projeto

O projeto pode possuir propriedades

O projeto possui um conjunto de alvos

Cada alvo é formado por tarefas

. . .. . .

Page 240: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 240

Projetos (projects)

Elemento mais externo de um buildfileCada projeto contém um conjunto de alvosUm projeto tem os seguintes atributos:

Atributo Obrigatório

name Não

default Sim

basedir Não

Page 241: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 241

Projetos - Exemplo

<project name="Projeto1" default="dist" basedir=".">

(tarefas agrupadas em alvos...)

</project>

Page 242: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Olá Mundo

| 242

<?xml version="1.0" encoding="UTF-8" ?>

<project name="ProjOla" default=“ola" basedir=".">

<target name=“OlaMundo" ><echo message=“Ola, Ant trabalhando!" />

</target>

</project>

Page 243: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 243

Propriedades (properties)Um projeto pode ter um conjunto de propriedadesEssas propriedades podem ser criadas através da tarefa propertyproperty ou fora do AntPropriedades podem ser usadas como valores para atributos de tarefasIsso é feito colocando-se o nome da propriedade entre "${" e "}" no valor do atributo

Page 244: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 244

Propriedades - Exemplos<property file="build.properties"/>

<property name="src" value="."/>

<property name="dist" value="distribuicao"/>

<property name="build" value="build"/>

<javac srcdir="${src}" destdir="${build}"/>

<mkdir dir="${dist}/lib"/>

<jar jarfile="${dist}/lib/build.jar" basedir="${build}"/>

Definição

Uso

Page 245: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 245

Propriedades Pré-Definidas

Ant permite acesso às propriedades do sistema operacional Funciona como se as propriedades tivessem

sido definidas com uma tarefa property

As propriedades disponíveis estão listadas no javadoc de System.getProperties

Além dessas, Ant possui algumas propriedades pré-definidas:

•basedir•ant.file•ant.version

•ant.project.name•ant.java.versio

n

Page 246: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 246

Alvos (targets)

Um alvo é um conjunto de tarefas que se quer executarRepresenta um objetivo a ser alcançadoExemplos: Criação dos diretórios usados no processo

de geração do build

Compilação dos arquivos-fonte

Empacotamento dos arquivos compilados

Page 247: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 247

Dependências entre AlvosUm alvo pode depender de outros alvosSe um alvo B depende de outro alvo, A, A será processado antes de BUma dependência é indicada através do atributo depends de um alvoExemplo:

<target name="A"/>

<target name="B" depends="A"/>

<target name="C" depends="B"/>

<target name="D" depends="C,B,A"/>

Cada alvo é executado apenas uma vez!

Page 248: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 248

Exemplo

Check-out no CVS

Criar estrutura de pastas

Compilar arquivos fonte

Fazer a instalação

Executar bateria de testes

Enviar e-mails com resultados dos testes

Registrar resultado dos testes

Page 249: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 249

Execução Condicional de Alvos

É possível especificar que um alvo só será executado se: Uma propriedade estiver setada

Uma propriedade não estiver setada

Exemplos:

<target name="construa_o_modulo_A" if="modulo_A_presente>

<target name="construa_o_modulo_A_falso" unless="modulo_A_presente>

Page 250: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 250

Atributos de um Alvo

Um alvo tem os seguintes atributos:

Atributo Obrigatório

name Sim

depends Não

if Não

unless Não

description Não

Page 251: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 251

Tarefas (tasks)

Um pedaço de código que pode ser executadoUnidades básicas de um buildfileUma tarefa pode ter diversos atributos A distribuição do Ant já inclui um conjunto básico de tarefas Um pacote com tarefas adicionais também está disponível

Page 252: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 252

Tarefas - Exemplos

copy – Copia um arquivo ou conjunto de arquivos

jar – Empacota um conjunto de arquivos em um arquivo .jar

cvs – Executa comandos do CVS

javac – Compila um conjunto de arquivos fontes Java

mkdir – Cria um novo diretório

Page 253: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 253

Tarefa tstampGuarda informação temporal referente a quando a tarefa foi executadaDSTAMP – Formato aaaammdd

TSTAMP – Formato hhmm

TODAY – Formato mês dia ano

Permite formatação da data

Exemplo

<tstamp/>

Page 254: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 254

Tarefa copy

Copia arquivos e diretóriosUm arquivo é copiado apenas se o arquivo fonte é mais novo que o destino (caso este último exista) Sobre-escrita pode ser explicitada

Page 255: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 255

Tarefa copy (exemplos)1. <copy file="meuArq.txt" tofile="minhaCopia.txt"/>

2. <copy file="meuArq.txt" todir="../algum/dir"/>

3. <copy todir="../novo/dir"> <fileset dir="dir_fonte"/> </copy>

4. <copy todir="../novo/dir"> <fileset dir="${dist}" casesensitive="yes"> <patternset> <include name = "**/*.java" /> <exclude name = "**/*Test*" /> </patternset> </fileset> </copy>

Page 256: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 256

Tarefa deleteApaga arquivos e diretóriosExemplos:

1. <delete file="/lib/ant.jar"/>

2. <delete dir="lib"/>

3. <delete> <fileset dir="." includes="**/*.bak"/> </delete>

4. <delete includeEmptyDirs="true" > <fileset dir="build" /> </delete>

Page 257: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 257

Tarefa echoEscreve uma mensagem no console do usuário ou em um arquivoExemplos:

1. <echo message="Alo mundo!"/>

2. <echo> Essa mensagem é bem maior, ocupando mais de uma linha. </echo>

3. <echo file="build.log" append="true"> Esta mensagem será escrita em um arquivo! </echo>

Page 258: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 258

Tarefa cvsLida com módulos contidos em um repositório CVSExemplos:

1. <cvs cvsRoot=":local:/arquivos/cvspublico" package="qib" dest="${build}" />

2. <cvs dest="${dist}" command="update"/>

3. <cvs command="-q diff -u -N" output="difs.txt"/>

4. <cvs command="update -A -d"/>

Page 259: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 259

Tarefas mkdir e mail

mkdir - Cria uma árvore de diretórios

mail - Manda uma mensagem de e-mail via STMP sem anexos

<mkdir dir="${dist}/lib/temp"/>

<mail from="[email protected]" tolist="[email protected]" subject="Resultados do build noturno" files="build.log"/>

Page 260: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 260

Tarefa javacCompila uma árvore de arquivos fonte Java

É possível escolher um compilador diferente através da propriedade build.compiler

Filesets podem ser usados para definir os alvos da compilação

•classic•modern•jikes

•jvc•gcj•sj

Page 261: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 261

Tarefa javac (exemplos)1. <javac srcdir="${src}" destdir="${build}" classpath="bib.jar" />

2. <javac srcdir="${src}" destdir="${build}" includes="meupacote/p1/**, meupacote/p2/**" excludes="meupacote/p1/pacotetestes/**" classpath="bib.jar" />

3. <javac destdir="${build}" classpath="bib.jar"> <src path="${src}" /> <src path="${src2}" /> <include name="meupacote/p1/**" /> <include name="meupacote/p2/**" /> <exclude name="meupacote/p1/pacotetestes/**" /> </javac>

Page 262: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 262

Tarefa javaExecuta uma classe Java na máquina virtual atual ou inicia outra, se especificadoExemplos:

1. <java classname="teste.Principal" />

2. <java classname="teste.Principal" > <arg value="-h"/> <classpath> <pathelement location="\test.jar" /> <pathelement path="${java.class.path}" /> </classpath> </java>

Page 263: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 263

Tarefa jarCria um arquivo .jar contendo os arquivos especificados

1. <jar jarfile="${dist}/lib/app.jar" basedir="${build}/classes" />

2. <jar jarfile="${dist}/lib/app.jar" basedir="${build}/classes" excludes="**/Test.class" />

3. <jar jarfile="${dist}/lib/app.jar"> <fileset dir="${build}/classes" excludes="**/Test.class" /> <fileset dir="${src}/resources" /> </jar>

Page 264: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Tarefa <junit>

Permite a execução de testes JUnit; Opcionalmente, cria dados (xml) para a

geração posterior de relatórios

Exemplo:

Ant | 264

<junit printsummary="yes" haltonfailure="true"> <classpath refid="test.classpath"/>

<formatter type="xml"/> <test name="org….HtmlDocumentTest"/> <batchtest todir="${test.data.dir}"> <fileset dir="${test.dir}” includes="**/*Test.class” /> </batchtest> </junit>

Saída XML

Execução de vários test cases

Page 265: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Tarefa <junitreport>

Permite a geração de relatórios HTML de testes JUnit realizados anteriormente.Exemplo:

Ant | 265

<junitreport todir="${test.data.dir}">

<fileset dir="${test.data.dir}"> <include name="TEST-*.xml"/> </fileset>

<report format="frames” todir="${test.reports.dir}" /></junitreport>

EntradaXML

Page 266: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software ProcessesAnt |

266

Exemplo de relatório <junitreport>

Page 267: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 267

Um Exemplo de Buildfile<project name="MeuProjeto" default="dist" basedir=".">

<property name="src" value="."/> <property name="build" value="build"/> <property name="dist" value="dist"/>

<target name="init"> <tstamp/> <mkdir dir="${build}"/> </target>

<target name="compile" depends="init"> <javac srcdir="${src}" destdir="${build}"/> </target>

Page 268: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 268

Um Exemplo de Buildfile (continuação)

(...)

<target name="dist" depends="compile"> <mkdir dir="${dist}/lib"/> <jar jarfile="${dist}/lib/ MyProject-${DSTAMP}.jar" basedir="${build}"/> </target>

<target name="clean"> <delete dir="${build}"/> <delete dir="${dist}"/> </target> </project>

Page 269: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 269

-logfile arquivo-logger nomeClasse-listener nomeClasse-buildfile arquivo-find arquivo-Dpropriedade=valor

Executando o Ant

Sintaxe padrão:

Opções

ant [opções] [alvos]ant [opções] [alvos]

-help-projecthelp-version-quiet-verbose-debug-emacs

Page 270: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 270

Exemplos

Executa o Ant usando o buildfile build.xml no diretório atual, a partir do alvo padrão

Executa o Ant usando o arquivo test.xml no diretório atual, a partir do alvo padrão

antant

ant –buildfile test.xmlant –buildfile test.xml

Demonstração

Page 271: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 271

Exemplos (continuação)

Executa o Ant usando o arquivo test.xml no diretório atual, a partir do alvo dist, setando o valor da propriedade var para classes.

ant –buildfile test.xml –Dvar=classes distant –buildfile test.xml –Dvar=classes dist

Executa o Ant usando o arquivo test.xml no diretório atual, a partir do alvo dist

ant –buildfile test.xml distant –buildfile test.xml dist

Page 272: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exercício

Escrever um script build.xml de uma aplicação exemplo que: 1. Compile o código fonte java principal da aplicação 2. Gere Javadoc do projeto3. Compile o código fonte java de teste do aplicação4. Execute o código de teste 5. Empacote a aplicação em um arquivo jar

Page 273: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Boas Práticas

Projete seus scripts Padronize e simplifique scripts (Keep It Simple

Sir)

Aumentar produtividade e reuso Dentro e entre projetos

• <macrodef> permite que você defina "métodos privados" com parâmetros, chamados atributos

• <import> pode ser usado para realizar "herança" entre scripts (definir um script genérico para todos projetos)

Gerencie dependências com bibliotecas Gerenciar de dependências: Ivy

| 273

Page 274: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exemplo de reuso com <macrodef>

<target name="compile"><compilecode srcdir= "${source.java.dir}" classpath="classpath.main"/><compilecode srcdir= "${unit.test.source.dir}" classpath="classpath.test“

includeant="true" /></target>

<macrodef name="compilecode"> <attribute name="srcdir"/> <attribute name="includeant" default="false"/> <attribute name="classpath"/> <sequential> <javac srcdir="@{srcdir}" destdir="${compile.dir}" classpathref="@{classpath}" includeAntRuntime="@{includeant}" debug="${compile.debug}" debugLevel="${compile.debugLevel}" deprecation="${compile.deprecation}" optimize="${compile.optimize}" /></sequential></macrodef>

| 274Demonstração

Page 275: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exemplo de reuso com <element> e <macrodef>

<doTests fork=”no”> <whatToTest> <test fork="yes“ haltonerror="false" haltonfailure="false“ name="@{className}" todir="${junit.report.dir}"/> </whatToTest></doTests>

<macrodef name="doTests"> <attribute name=”fork” default=”no”/>

<element name="whatToTest" optional="no"/> <sequential> <junit printsummary="on" fork="@{fork}" showoutput="true" haltonfailure="false“ failureproperty="test.failed" errorproperty="test.failed"> <sysproperty key="app.root.dir" value="${app.root.dir}"/> <sysproperty key="fromant" value="yep"/> <classpath refid="runtest.classpath"/> <formatter type="xml"/> <formatter type="brief" usefile="false"/> <jvmarg value="-Demma.coverage.out.file=${coverage.dir}/metadata/coverage.emma"/> <jvmarg value="-Demma.coverage.out.merge=true"/>

<whatToTest/> </junit> </sequential></macrodef>

| 275

Uso do Macrodef

Definição do Macrodef

Qualquer coisa pode ser inserida no macrodef utilizando <element>

Page 276: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exemplo de reuso com <import>

| 276

<?xml version="1.0"?><project name="master" > <target name=“clean" > <echo >Limpa Geral</echo> </target> <target name="compile" depends="init"> <echo >Compila Geral</echo> </target></project>

<?xml version="1.0"?><project name="cr" basedir=".." ><import file="master-build.xml"/> <target name= "clean" > <echo> Limpa Especifico</echo></target> <target name="deploy" depends="compile"/> <target name="init" depends="clean" /></project>

generico-build.xml build.xml

ant deployBuildfile: build.xmlclean: [echo] Limpa Filhoinit:compile: [echo] Compila Geraldeploy:BUILD SUCCESSFUL

Saída

Observações:-Clean é sobreescrito em build.xml- Init não é definido em generico-build.xml- deploy utiliza compile em generico-build .xml

Demonstração

Page 277: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exercício

Refatore o build.xml da aplicação utilizando:1. A tarefa <macrodef> para promover reuso;2. Extrair tarefas comuns à vários projetos para um

build “genérico”3. Utilizar a tarefa <include>

Page 278: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 278

Onde encontrar o Ant

http://ant.apache.org/ Site oficial do projeto

Documentação extensiva

Diversas versões disponíveis

Pacotes com tarefas adicionais

http://ant-contrib.sourceforge.net/ Projeto Sourceforge com vários ant tasks úteis

Apresentação de boas práticas em scripts Ant Writing Better Ant Scripts: Techniques, Patterns and

Antipatterns, Douglas Bullard. www.pjug.org/docs/ant.pdf

Page 279: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Instalando o ANT

Download do Ant 1.7.1 ou superior

http://maven.apache.org/download.html

Baixar e descompactar o arquivo:

apache-ant-1.7.1-bin.zip

No diretório ${INSTALACAO}

Criar a variável ANT_HOME apontando para o diretório ${INSTALACAO}.Adicionar o diretório ${ANT_HOME}/bin à variável PATH.

Verificando instalação: $>ant -version

Apache Ant version 1.7.1 compiled on June 27 2008

| 279

Page 280: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Gerenciando Dependências com Ivy

| 280

Page 281: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

O que é mais descritivo?

Algo assim ...<fileset dir="${global.lib.dir}"> <include name="commons-beanutils.jar"/> <include name="commons-collections.jar"/> <include name="commons-digester.jar"/> <include name="commons-logging.jar"/> <include name="commons-validator.jar"/> <include name="commons-resources.jar"/> <include name="jakarta-oro.jar"/> <include name="struts.jar"/> <include name="struts-el.jar"/> <include name="commons-lang.jar"/> <include name="jstl.jar"/> <include name="standard.jar"/> <include name="commons-pool.jar"/> <include name="displaytag.jar"/></fileset>

| 281

Page 282: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

O que é mais descritivo? ...

Ou assim ...<dependencies> <dependency org="org.hibernate" name="hibernate" rev="3.2.0.ga" conf="dist-ear,source,javadoc"/> <dependency org="org.apache" name="log4j" rev="1.2.8" conf="dist-

ear"/> <dependency org="org.apache" name="struts" rev="1.3.8" conf="dist-

ear"/> <dependency org="org.apache" name="struts-el" rev="1.3.8"

conf="dist-ear"/> <dependency org="org.springframework" name="spring" rev="2.0"

conf="dist-ear"/></dependencies>

| 282

Page 283: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Por que um Gerenciador de Dependências?

1. Sistemas dependem cada vez mais e mais de componentes complexos

2. Precisamos gerenciar conflitos entre versões

3. Garantir a reproducibilidade dos builds4. Não reinvente a roda: reuse5. Sistemas modularizados e flexiveis são

fáceis de desenvolver e manter 6. Gerenciar Dependências: Metodologia Ágel

| 283

Page 284: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Ivy + Ant

Ivy projeto Apache |Site: http://ant.apache.org/ivy/

Gerência de dependências similar Maven2 (Ant + Ivy ~= Maven2)

Permite que controlemos quais versões estão disponíveis• Versões diferentes podem ser usadas em diferentes projetos

Suporta dependências transitivas [dependências das dependências, ..., etc]

• Download das dependências do projeto, e daquelas que elas dependem

Dependências são descritas em um arquivo específico

Funcionamento:

| 284

ibiblio

Maven2

Empresarepositórioempresa

repositório localdir. /lib do projeto

1. download

2. armazena

Page 285: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exemplos de repositórios: Local e Remoto

| 285

Page 286: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Instalando Ivy

O Ivy normalmente é utilizado como um plugin ANT Você colocar seu jar no diretório lib do ANT_HOME

Ou, criar um target para fazer o download sob demanda

| 286

<targetname="install-ivy"description="-->installivy"><mkdirdir="${ivy.jar.dir}"/><getsrc="${ivy.download.url}"usetimestamp="true" dest="${ivy.home}/${download.ivy.binaryfile}"/><untarsrc="${ivy.home}/${download.ivy.binaryfile}"dest="${ivy.home}"overwrite="false"compression="gzip" /><taskdefresource="org/apache/ivy/ant/antlib.xml"uri="antlib:org.apache.ivy.ant"classpath="${ivy.jar.file}"/></target>

Page 287: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Dependência Inline

Para recuperar dependencia com Ivy:basta adicionar uma tarefa Ivy (inline) no build

Managing your dependencies with Ivy - Apache Con EU 2007

<ivy:retrieveorganisation="org.apache.struts"

module="struts2-core"

revision="2.0.5"

inline="true"/>

build.xml

gera

Demonstração

Page 288: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Arquivos Ivy

Ajudam a separar declarações de dependências dos scripts de build

<ivy:retrieve

pattern="lib/[conf]/[artifact]-[revision].[ext]"/>

build.xml

ivy.xml

utiliza

gera

Demonstração

Page 289: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Arquivos Ivy

| 289

<ivy-moduleversion="1.5">

<infoorganisation="org.apache.ivy" module="ivy-demo-2" />

<configurations>

<confname="runtime"/>

<confname="test"/>

</configurations>

<dependencies>

<dependencyorg="org.apache.struts"

name="struts2-core"rev="2.0.5"

conf="runtime->default"/>

<dependencyorg="junit"name="junit"rev="3.8.1"

conf="test->*"/>

</dependencies>

</ivy-module>

Page 290: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 290

<ivy:reporttodir="report"/>

build.xml

Page 291: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Entendendo as dependências

| 291

Page 292: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Dependências entre projetos

Ivy pode ser usado para resolver:Dependências externas (com bibliotecas de terceiros)Dependências internas (entre projetos)

project A

project B

local repository

shared repository

publica

recupera

recupera

Demonstração

Page 293: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software ProcessesManaging

your dependencies with

Ivy - Apache Con EU

2007

Arquivo Ivy<ivy-moduleversion="1.5">

<infoorganisation="org.apache.ivy" module="ivy-demo-3-B"/>

<configurations>

<confname="runtime"/>

<confname="test"/>

</configurations>

<dependencies>

<dependencyorg="org.apache.struts"conf="runtime->default"

name="struts2-core"rev="2.0.5"/>

<dependencyname="ivy-demo-3-A"rev="latest.integration"/>

</dependencies>

</ivy-module>

Page 294: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exercício

Crie um arquivo ivy.xml para gerenciar as dependências da aplicação.

Page 295: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Onde Você pode encontrar o Ivy

http://incubator.apache.org/ivy

Site oficial do projeto

Documentação

Plugins Eclipse http://ant.apache.org/ivy/ivyde/

| 295

Page 296: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Maven2

| 296

Page 297: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Maven2

Assim como o Ant, o Maven também é uma ferramenta de build.

Mas não é só isso...

Maven2 reúne: novas idéias, padrões e software (suporte);

que: facilita a gerência de configuração e

facilita o trabalho colaborativo.

| 297

Page 298: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Principios Maven

Baseado em padrões e boas-práticas

"patterns help create a shared language for communicating insight and experience about problems and their solutions"

(Christopher Alexander)

| 298

Page 299: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Projeto Maven

A configuração do produto de software é descrita por modelo:

POM - Project Object Model (arquivo .pom)

Conceitos que interagem com esse modelo

Motor de build

Plugins

Repositório de artefatos

| 299

pom.xmlpom.xml ArtefatoArtefato

Plugins

Motor Motor Maven Maven

22

Page 300: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Princípios

Convenção sobre configuração (convention over configuration)Reutilização da lógica de buildCiclo de vida padronizado, mais flexívelExecução declarativaGerência coerente de dependências

| 300

Page 301: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Convenção sobre configuração

Estrutura de diretórios padronizadas Estrutura semenhante para todos os

projetos

Artefatos Maven Apenas um artefato principal por projeto

Padrão para nomes de artefatos

| 301

Page 302: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Artefatos

Artefatos geralmente são empacotados na forma de bibliotecas Java (JAR).Cada artefator possui um identificador único (coordenada) Group Id: Organização responsável pelo artefato

Artefact Id: Nome do artefato

Versão: número de versão para o artefato

| 302

com/minhacompanhia/ contabilidade / contabilidade -core/1.1/ contabilidade -core-1.1.jarcom/minhacompanhia/ contabilidade / contabilidade -core/1.1/ contabilidade -core-1.1.jar

<project...> ... <groupId>com.minhacompanhia.contabilidade</groupId> <artifactId>contabilidade-core</artifactId> <packaging>jar</packaging> <version>1.1</version> <name>Pacote básico de contabilidade</name>

<project...> ... <groupId>com.minhacompanhia.contabilidade</groupId> <artifactId>contabilidade-core</artifactId> <packaging>jar</packaging> <version>1.1</version> <name>Pacote básico de contabilidade</name>

Page 303: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Ciclo de vida padronizado

Generalização e padronização das fases da build

Não reinventa a roda !

O Maven 2 vem de fábrica com 3 ciclos de vida de build

default, clean e site

Exemplos de fases do ciclo default

| 303

Plugins agrupam tarefas

relacionadas

As tarefas do ciclo default dependem do

valor da tag <packaging> (ex.: jar,

war)

Page 304: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Plug-ins

A maior parte das tarefas executadas pelo Maven são feitas por meio de plug-ins. Um plug-in é formado por um ou mais mojos, que

são as menores unidades de execução do Maven.

Alguns plug-ins estão associados a fases do ciclo de vida e são executados automaticamente. Por exemplo, o plugin maven-compile é executado

para a fase compile

Uma meta (goal) são tarefas no Maven. Ao executar um mojo, estamos executando uma meta. Exemplo: mvn jar:jar

| 304

Page 305: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Gerência de Depêndencias declarativa

Abordagem declarativa

“just tell me what you need”

Cada projeto “declara” as bibliotecas que precisa

Artefatos “versionados” são armazenados em um repositório central Dependências transitivas são

resolvidas automaticamente

Depêndencias internas ou externas

Escopo das dependências

Convenções sobre as versões X.Y.Z-qualificador

SNAPSHOT - indica que projeto está em desenvolvimento.

| 305

Page 306: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

UTILIZAÇÃO DOS PRINCIPAIS RECURSOS MAVEN

| 306

Page 307: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Instalando o Maven 2

Download Maven 2.0.9 ou superior

http://maven.apache.org/download.html

Baixar e descompactar o arquivo:

apache-maven-2.0.9-bin.zip

No diretório ${INSTALACAO}

Criar a variável M2_HOME apontando para o diretório ${INSTALACAO}.

Adicionar o diretório ${M2_HOME}/bin à variável PATH.

Verificando instalação: $> mvn -version

Maven version: 2.0.9

Java version: 1.6.0_07

| 307

Page 308: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Criando um novo projeto Maven

Plugin: maven-archetype-plugin Exemplo:

mvn archetype:create -DgroupId=curso.maven -DartifactId=maven-01-base

Plugin: maven-eclipse-plugin Prepara o projeto para ser importado na IDE

Eclipse

Comando:mvn eclipse:eclipse

| 308

Page 309: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Suporte no Eclipse

Plugin m2eclipse provê um bom suporte para Maven criar projetos, gerenciar dependência, etc

| 309Demonstração

Page 310: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Plug-in Archetype

Permite criar a primeira versão do POM para o projeto Existem vários modelos de projetos

disponíveis

Para visualizar a lista, use o comando:mvn archetype:generate

Exemplo da criação de uma aplicação web:mvn archetype:create -DgroupId=curso.maven-DartifactId=exemploWeb -DarchetypeArtifactId=maven-archetype-webapp

| 310

Page 311: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Alterando POM

Alterar a forma de empacotamento Alterar o nome e a URL do projetoAdicionar dependênciasConfigurar plugins

| 311

<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency>

<plugin> <artifactId>maven-compiler-plugin </artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration></plugin>

name>Projeto Curso Maven</name>

packaging>jar</packaging>

Page 312: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Executando fases e mojos

Para compilar o projeto, execute a fase: mvn compile

Para testar, execute a fase test: mvn test

Para empacotar o projeto (no exemplo, um JAR): mvn package mvn jar:jar

para instalar a biblioteca no repositório local: mvn install

Para gerar a documentação: mvn javadoc:javadoc

Para resolver dependências: mvn dependency:resolve

| 312

Page 313: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Adicionando Plugins

Plugins podem ser úteis para prover informações adicionais sobre o projeto Cobertura

• Mostra a cobertura dos testes unitários

CheckStyle: • Verifica formatação e padrão de código

PMD : • Verifica más práticas e locais que podem

potencialmente gerar bugs.

FindBugs:• Similar ao PMD, porém com uma heurística

diferente que gera menos falsos-positivos.

| 313

Page 314: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exemplo: Adicionando plugins ao build

<build> <plugins> <plugin>

<groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.2</version>[*] <configuration> <instrumentation>

<excludes> <exclude>**/*Test.class</exclude>

</excludes> </instrumentation> </configuration>

</plugin> </plugins>

</build>

| 314

[Configuração opcional]Exclui os códigos de teste da verificação

Page 315: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exemplo:Adicionando Plugins de Relatórios

<reporting> <plugins>

<plugin> <groupId>org.codehaus.mojo</groupId>

<artifactId>cobertura-maven-plugin</artifactId> </plugin><plugin> <groupId>org.codehaus.mojo</groupId>

<artifactId>findbugs-maven-plugin</artifactId> </plugin> <plugin> <artifactId>maven-checkstyle-plugin</artifactId></plugin> <plugin> <groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-pmd-plugin</artifactId> </plugin>

</plugins> </reporting>

| 315

Page 316: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Criando um Repositorio na Intranet

Precisamos mudar o ~.m2/settings.xml para criar um mirror dos servidores externos

| 316| 316

ibiblio

Maven2

Empresarepositórioempresa

repositório localdir. /lib do projeto

1.download2. armazena

Demonstração

Nx

Page 317: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Deploy um Artefato no Maven

<project> ... <distributionManagement> <snapshotRepository> <id>snapshots</id> <name>Internal Snapshots</name>

<url>http://servidor:8081/nexus/content/repositories/snapshots</url>

</snapshotRepository> </distributionManagement> ... </project>

| 317

pom.xml

mvn deploy

Page 318: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Exercício

1. Criar um projeto Maven2 com suporte para Eclipse2. Incluir as seguintes dependências:

• commons-lang:commons-lang:jar:2.4:compile• commons-collections:commons-• collections:jar:2.0:compile• org.hibernate:hibernate:jar:3.2.6.ga:compile

– Excluir a dependência: javax.transaction:jta

3. Incluir os seguintes plugins na build:• Cobertura

4. Gerar o site do projeto:• mvn site

5. Incluir plugins nos relatórios do site• PMD, Checkstyle, FindBugs, Cobertura

6. Gerar novamente o site

Page 319: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Boas Práticas

Mantenha um projeto modularizado Herança

• herde propriedades e compontamento de projetos pais

• Opção <parent> Artefato </parent> do projeto

Agregação• Organize projetos em vários módulos

| 319

Page 320: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Onde Você pode encontrar o Maven2

http://maven.apache.org

Site oficial do projeto

Documentaçãohttp://www.sonatype.com/book/

Maven: The Definitive Guide

Open Source Book

Plugins Eclipse http://m2eclipse.codehaus.org/

| 320

Page 321: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Sistemas de Integração Contínua

| 321

Page 322: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Sistemas de Integração Continua

São executadas em uma maquina de integração,Utilizam build scripts, como o ANT e Maven.Possuem boa integração com repositórios CVS e SVNPossuem vários plugins como para análise de métricas de código

Exemplos de boas ferramentas gratuitas:

Hudson, Continuum, CruiseControl.

Repositório Central(CVS)

Observa Mudanças

1 - Realiza um build;2 - Executa testes;3 – Realiza Análises;4 - Publica resultados.

Dispara Procedimento

Script(ANT)

Máquina de Integração

Page 323: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Boas Práticas

Utilizar builds automáticos em integrações continuasRealizar Builds de Integração em todos os ambientesManter a consistência dos scripts de builds antes de publicá-los (evitar builds quebrados)Incluir testes automáticos e abrangentes nos builds Testes de integração, sistema, funcionalidaed, etc.

Garantir commit task no controle de versõesGerenciar e publicar os buildsGuardar os histórico dos builds para futuras análises e otimizações

| 323

Page 324: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Hudson

https://hudson.dev.java.net/

Site oficial do projeto

Documentação

Download

| 324Demonstração

Page 325: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Outras Leituras

The Top 10 Blunders In Integration And Testing ... And How To Avoid Them, borland white paper, Março/2007Automation for the people (Paul Duvall, developerWorks): http://www.ibm.com/developerworks/views/java/

libraryview.jsp?search_by=automation+people:

| 325

Page 326: Qualiti Software Processes Gerência de Configuração

Qualiti Software Processes

Bugzilla

Page 327: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 327

O que é Bugzilla?

Uma ferramenta para controle de defeitos (bugs) e melhorias em sistemas Pode ser usado como uma ferramenta para gerência de mudançasPode controlar os defeitos de vários sistemas ao mesmo tempo

Page 328: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 328

Vantagens

Simples de usar Poucos comandos

FreewareCódigo aberto (open source) Permite customizações

Uso pela WebFlexível no que concerne à realização de consultasSuportado por uma grande comunidade de usuários

Page 329: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 329

Desvantagens

Documentação pouco detalhadaSegurança Login apenas para controle do processso e

não controle de acesso

A senha dos usuários é visível para o administrador

Qualquer usuário pode criar um novo usuário

Uso de cookies

Limitado do ponto de vista de relatórios Queries na base MySQL

Page 330: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 330

Estrutura do bugzilla

Produto Software, sistema ou processo que estará

sujeito ao controle de mudanças

Pode ter diversas versões cadastradas

Componentes Representa módulos do produto

Fica sob a responsabilidade de um usuário

Page 331: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 331

Status dos DefeitosEstados Abertos

NEW Bug inserido por alguém (automático)

Aceito ASSIGNEDReatribuído NEWResolvido RESOLVED

ASSIGNED Atribuído à pessoa apropriada

Reatribuído NEWResolvido RESOLVED

REOPENED Reaberto: foi constatado que ainda não tinha sido resolvido

Aceito ASSIGNEDReatribuído NEWResolvido RESOLVED

UNCONFIRMED Não confirmado que existe

Confirmado NEWResolvido RESOLVED

Page 332: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 332

Mais Status dos Defeitos Estados Fechados

RESOLVED Foi resolvido (só está esperando a homologação)

Não foi resolvido REOPENEDEstá ok VERIFIEDEstá ok e pode ser fechado CLOSED

VERIFIED A correção foi homologada

Defeito é fechado CLOSED

CLOSED O bug é tido como resolvido

Não foi resolvido REOPENED

Page 333: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 333

ResoluçõesVálida apenas para estados fechadosFIXED Foi consertado e testado

INVALID O problema descrito não é bug

WONTFIX O problema descrito é um bug que nunca será corrigido

LATER O problema descrito é um bug que não será corrigido nessa versão do produto

DUPLICATE O problema é uma duplicação de um bug já existente (é preciso registrar o número do bug correspondente)

REMIND O problema descrito é um bug que provavelmente não vai ser consertado nessa versão do produto, mas pode ser que seja

WORKSFORME Não foi possível reproduzir o bug e verificando o código não há indícios de que o comportamento ocorra. Se aparecerem mais informações depois, será reaberto.

Page 334: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 334

Ciclo de Vida de um Bug

Page 335: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 335

Tipos de usuários

Não existe o conceito de tipos de usuários Os perfis dos usuários são definidos através

das permissões

Administrador Possui todas as permissões

Cadastra usuários, produtos, configura parâmetros, etc.

Desenvolvedor Permissão mínima

Edita bugs para os quais ele está qualificado (owner ou reporter)

Page 336: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 336

Bugzilla – Tela Inicial

Page 337: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 337

Bugzilla – Menu de Operações

Page 338: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes| 338

E agora vamos dar uma

olhada no Bugzilla...

Page 339: Qualiti Software Processes Gerência de Configuração

Cop

yri

gh

t ©

20

02

Qu

alit

i. T

od

os

os

dir

eit

os

rese

rvad

os.

Qualiti Software Processes

Comparação entre Sistemas de Controle de

Mudanças

O Bugzilla continua a ser amplamente utilizado, porém

Difícil instalação

Difícil integração com outros sistemas de controle de versão.

Uma alternativa é o Trac, que possui

Fácil integração com o CVS e o SVN

Fácil Administração

Criação de páginas Wiki

Outra alternativa é o Mantis Simples

Fácil de Instalar