Qualiti Software Processes Gerência de Configuração.
Transcript of Qualiti Software Processes Gerência de Configuração.
Qualiti Software Processes
Gerência de 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
Qualiti Software Processes
Gerência de Configuração
Introduçã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
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
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
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
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
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
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
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
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
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
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...
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
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
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
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
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
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
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
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
Qualiti Software Processes
Conceitos Básicos
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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?
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
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
•
•
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
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
•
•
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
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
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
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
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
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
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
Qualiti Software Processes
Padrões em Gerência de ConfiguraçãoReuso de soluções
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
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
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)
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
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)?
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
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
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
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
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?
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
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
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.
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
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?
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
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
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
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
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?
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
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
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
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?
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
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
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
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?
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
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
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
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.
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
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?
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
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
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
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?
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
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
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)
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?
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
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
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
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?
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
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
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
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?
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
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
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?
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
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
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?
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
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
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?
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
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.
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?
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
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
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
Qualiti Software Processes
Disciplina de Gerência de Configuração e
Ambiente
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
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
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
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>
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>
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
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.>
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.>
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
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.>
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
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
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
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
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
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
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á
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
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
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
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
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)
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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.
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
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
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)
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
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
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
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
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
Qualiti Software Processes
Controle de Mudanças
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
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
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
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
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
Qualiti Software Processes
Ciclo de vida de um artefato
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
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)
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
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
Qualiti Software Processes
Comitê gestor de mudanças
Change Control Board (CCB)
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
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)
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
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
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
Qualiti Software Processes
Processo de Gerência de Mudanças
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
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)
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
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
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
Qualiti Software Processes
Geração de releases
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
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
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
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
Qualiti Software Processes
Discussã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
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
Qualiti Software Processes
Sistemas de Controle de Versã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
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;
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!
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
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.
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
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
Qualiti Software Processes
Fluxo de Trabalho com SVC
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.
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
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
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;
Qualiti Software Processes
Concurrent Versions System(CVS)
Rodrigo Teixeira
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
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
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
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
Nú
mer
o d
a re
visã
o
Tip
o d
o a
rqu
ivo
no
me
do
tag
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
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]
Mó
du
los e A
rqu
ivos
Có
dig
o
Histórico e Tags
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...
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.
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
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]
Qualiti Software Processes
Subversion (SVN)
Rodrigo Teixeira
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
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
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.
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)
Qualiti Software Processes
Integração Continua
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?
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
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."
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...
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
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
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
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
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
Qualiti Software Processes
Ant
| 235
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
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
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
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
. . .. . .
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
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>
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>
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
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
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
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
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!
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
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>
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
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
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
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/>
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
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>
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>
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>
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"/>
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"/>
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
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>
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>
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>
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
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
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>
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>
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>
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
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
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
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
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
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
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>
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
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>
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
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
Qualiti Software Processes
Gerenciando Dependências com Ivy
| 280
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
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
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
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
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
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>
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
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
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>
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
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
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
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>
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.
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
Qualiti Software Processes
Maven2
| 296
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
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
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
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
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
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>
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)
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
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
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
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
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
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
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
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>
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
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
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
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
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
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
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
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
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
Qualiti Software Processes
Sistemas de Integração Contínua
| 321
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
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
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
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
Qualiti Software Processes
Bugzilla
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
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
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
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
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
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
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.
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
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)
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
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
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...
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