A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Qualiti Software Processes Gerência de Configuração."— Transcrição da apresentação:

1

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

3 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 2 Módulos 4. Controle de Mudanças 4. Controle de Mudanças 4. Controle de Mudanças 4. Controle de Mudanças 1. Introdução 1. Introdução 1. Introdução 1. Introdução 2. Padrões GC 2. Padrões GC 2. Padrões GC 2. Padrões GC 5. Sistemas de Controle de Versão 5. Sistemas de Controle de Versão 5. Sistemas de Controle de Versão 5. Sistemas de Controle de Versão 4. Integração Contínua 4. Integração Contínua 4. Integração Contínua 4. Integração Contínua 6. Sistemas de Controle de Mudanças 6. Sistemas de Controle de Mudanças 6. Sistemas de Controle de Mudanças 6. Sistemas de Controle de Mudanças 3. Disciplina de GC e Ambiente 3. Disciplina de GC e Ambiente 3. Disciplina de GC e Ambiente 3. Disciplina de GC e Ambiente

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

5 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 4 Objetivos Fornecer os principais conceitos relacionados a GC Criar uma visão geral de como GC pode ser aplicada ao seu projeto

6 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 5 Pré-requisitos Noções de Engenharia de Software

7 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 funcionar Estes são problemas frustrantes provenientes da falta de gerência de configuração

8 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 sistema Erros que ocorrem em produção não podem ser reproduzidos em desenvolvimento Problemas de coordenação do trabalho concorrente dos desenvolvedores

9 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Problema da Quebra de Comunicação | 8 Desenvolvedor ADesenvolvedor B Desenvolvedor C

10 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

11 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 10 Problema dos Dados Compartilhados Componente Compartilhado Desenvolvedor ADesenvolvedor B A1A2A3 Programa de A Programa de B B1B2B3

12 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 11 Problema dos Dados Compartilhados - Cenário O desenvolvedor A modifica o componente compartilhado Mais tarde, o desenvolvedor B realiza algumas alterações no mesmo Ao tentar compilar o componente, erros são apontados pelo compilador, mas nenhum deles ocorre na parte que B alterou O desenvolvedor B não tem a menor idéia sobre a causa do problema

13 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

14 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 13 Problema da Manutenção Múltipla Componente Compartilhado Desenvolvedor ADesenvolvedor B A1A2A3B1B2B3 Programa de A Programa de B Componente Compartilhado Versão de A do Componente Compartilhado Componente Compartilhado Componente Compartilhado Versão de B do Componente Compartilhado

15 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 componente Dificuldade 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...

16 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 15 Problema da Atualização Simultânea Versão de A do Componente Compartilhado Desenvolvedor ADesenvolvedor B A1A2A3B1B2B3 Programa de A Programa de B Versão de B do Componente Compartilhado Biblioteca Central de Recursos Compartilhados Componente Compartilhado

17 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

18 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

19 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 central Algum mecanismo de controle é necessário para gerenciar a entrada e saída dos componentes

20 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

21 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

22 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 21 Objetivos de GC Definir o ambiente de desenvolvimento Políticas para controle de versões garantindo a consistência dos artefatos produzidos Definir procedimentos para solicitações de mudanças Administrar o ambiente e auditar mudanças Facilitar a integração das partes do sistema

23 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 22 Benefícios Aumento de produtividade no desenvolvimento Menores Custos de Manutenção Redução de defeitos Maior rapidez na identificação e correção de problemas

24 Qualiti Software Processes Conceitos Básicos

25 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

26 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

27 Copyright © 2002 Qualiti. Todos os direitos reservados. 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ção Um item de configuração está sujeito a mudanças e essas devem obedecer às políticas estabelecidas Normalmente, um item de configuração é estabelecido para cada pedaço de software que pode ser projetado, implementado e testado de forma independente

28 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 27 Configuração de Software item tempo fluxo

29 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 R1 V1 V2 V3

30 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 tempo Só 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

31 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 30 Baseline e Codelines item tempo fluxo codeline baseline

32 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

33 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 32 Baselines importantes Baselines são considerados marcos no processo de desenvolvimento: ­ Funcional : requisitos ­ De Produto : releases, iterações

34 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 33 Repositório Local (físico e lógico) onde os itens de um sistema são guardados Pode conter diversas versões do sistema Utiliza mecanismos de controle de acesso Repositório Desenvolvedor

35 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 arquivo Problema: serializa o trabalho dos desenvolvedores

36 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 35 Check-Out Check-out Repositóriocliente

37 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

38 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 37 Check-In Check-in Repositóriocliente

39 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

40 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 39 Tags Rótulos que são associados a conjuntos de arquivos Um 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

41 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 40 Tags release_1 tag Histórico de um arquivo release_2

42 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 41 Branch Criação de um fluxo alternativo para atualização de versões de itens de configuração Recurso muito poderoso Regras bem definidas para criação de branches ­ Por que e quando devem ser criados? ­ Quais os passos? ­ Quando retornar ao fluxo principal?

43 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 42 Branch (continuação) Uso de lock inviabiliza a criação de branches Branches normalmente se originam de correções em versões anteriores

44 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 43 Branch (exemplo) j.13.j.23.j.3 2.j.12.j.2 3.m.1 3.m.2 3.m.3 2.m.1 1 hello.c 23 1 hello.h 2 hello.c hello.h José Maria hello.c hello.h 2.m.2

45 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 44 Merge Unificação de diferentes versões de um mesmo item de configuração Integração itens de configuração de um branch com os itens de configuração do fluxo principal Check-out atualizando a área local Algumas 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

46 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 45 Merge (exemplo) 3 hello.c 4 2 hello.h j.1 hello.c 3.j.23.j.3 2.j.1 hello.h 2.j.2 José Maria 3.m.1 hello.c 3.m.2 3.m.3 2.m.1 hello.h 2.m.2 3.j.4 2.j.3

47 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes 1.4 release_2 | 46 Branching e Merging rel_1_fix Tronco principal de desenvolvimento Branch release_1 tag patch tag Merge

48 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 47 Build Representa uma versão ainda incompleta do sistema em desenvolvimento, mas com certa estabilidade Costumam apresentar limitações conhecidas Espaço para integração de funcionalidades

49 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 ambiente A geração de builds deve ser automatizada e realizada com freqüência adequada

50 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 49 Release Versão do sistema validada após os diversos tipos de teste Produto de software Supostamente sem erros Entregue ao cliente ou ao mercado Processo iterativo/incremental produz, em geral, mais de um release

51 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 50 Mais sobre release Implantado no cliente Deve ser devidamente mantido ­ Enquanto a linha principal evolui ­ Uso de branches e merges

52 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

53 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 52 Conclusões GC é um fluxo de apoio ao projeto como um todo Passos iniciais para a adoção de um processo de software Requer uma certa disciplina na manipulação de itens de configuração Apoio de ferramentas sempre que possível

54 Qualiti Software Processes Padrões em Gerência de Configuração Reuso de soluções

55 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

56 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 55 O que são padrões? Padrões são formas de representação de conhecimento, organizado de forma estruturada Objetiva a rápida assimilação e aplicação em um novo contexto Construído a partir da destilação de anos de experiência

57 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 56 Estrutura de um padrão Nome Contexto Problema a ser solucionado Solução Diagrama representando a solução (opcional)

58 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 57 Padrões em GC Catálogo com 15 padrões Classificação dos padrões: CodelineWorkspace

59 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 58 Mainline Simplifique seu modelo Classificação: Codeline Você quer simplificar sua estrutura de codelines Como manter várias codelines (e minimizar merging)?

60 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

61 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

62 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 Correções t1 t22.0 Rel 1.1 Rel 2.0

63 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 codeline 3. 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

64 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 63 Active Development Line Defina suas metas Classificação: Codeline Você está desenvolven- do em uma mainline Como manter a evolução rápida de uma codeline de maneira estável para que seja útil?

65 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

66 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 Testes fracos

67 Copyright © 2002 Qualiti. Todos os direitos reservados. 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.

68 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 WorkspaceSmoke Test Task Branch Release Prep Codeline

69 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 68 Private WorkspaceIsole 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?

70 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

71 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 Servidor central atualiza commit desenvolvedor

72 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

73 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 Integration Build Private sys build Repository

74 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 73 RepositoryUm único lugar para compras Classificação: Workspace Private workspaces e Integration Builds precisam de componentes Como obter a versão correta de um determinado componente em um ambiente de trabalho?

75 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

76 Copyright © 2002 Qualiti. Todos os direitos reservados. 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ódigo fonte Repository Biblioteca de terceiros Scripts de build Workspace

77 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

78 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 77 Private System BuildPense globalmente e construa localmente Classificação: Workspace Você precisa construir e testar o que está em seu Private Workspace Como verificar que suas mudanças não interropem o sistema antes de realizar um commit no Repositório?

79 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

80 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

81 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 sys build Smoke Test

82 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 81 Integration BuildRealize um build centralizado Classificação: Workspace O que é realizado em um Workspace precisa ser compartilhado Como garantir que o codebase sempre é construído consistentemente?

83 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 funciona Private System Build é uma forma de testar o sistema ­ Porém, construir sempre todo os sistema pode levar muito tempo

84 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 83 Integration Build ( Solução ) Execute um build centralizado para todo o sistema em um ambiente isolado

85 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 ( ) para sanar problemas rapidamente

86 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 85 Integration Build Identifique builds com uma tag (Repositório) Repita para todas as plataformas suportadas Se um build falhar continuamente, adicione mais verificações antes dos commits. Se possível, use o Integration Build como base para install kits.

87 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 Integration Build Repository Task level commit Smoke Test Regression test

88 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 87 Task Level CommitRealize um commit por cada pequena tarefa Classificação: Workspace Você precisa associar mudanças com um build de integração Quanto você deve trabalhar antes de realizar um commit no Repositório?

89 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

90 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

91 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 codeline Utilize testes (Unit Test) para assegurar mudanças consistentes

92 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 91 Codeline PolicyDefina 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?

93 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 92 Codeline Policy ( Contexto ) Diferentes codelines têm diferentes requisitos de estabilidade Como explicar uma política? ­ Qual o nível de documentação que você precisa? ­ Como motivar as pessoas a utilizá-la? Política de release line Política de Mainline Release Main

94 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

95 Copyright © 2002 Qualiti. Todos os direitos reservados. 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íticas Divulgação efetiva das políticas no grupo Utilize ferramentas automáticas que facilitem o uso de sua política (ex.: ANT)

96 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 95 Smoke TestVerifique 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?

97 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 96 Smoke Test ( Contexto ) Testes exaustivos são bons para garantir a qualidade Quanto 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

98 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

99 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 development Line Integration Build Private sys build Smoke Test Unit Test Regression test

100 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 99 Unit TestVerifique 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?

101 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 100 Unit Test ( Contexto ) Integração identifica problemas, mas é dificil para isolar problemas Necessidade 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

102 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

103 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

104 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 103 Regression TestTeste as mudanças Classificação: Workspace Smoke Tests são bons mas não abrangem todos os casos Como garantir que um código não deteriora ao longo do tempo?

105 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 104 Regression Test ( Contexto ) Abranger todos os casos leva tempo É uma boa estratégia adicionar testes à medida que erros são encontrados Quando um antigo erro reaparece: você quer estar apto a identificar quando isto acontece ­ provar que o software não apresenta problemas dos passado

106 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

107 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 106 Private VersionsHistó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?

108 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

109 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

110 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 109 Task BranchLidando com tarefas de longa duração Classificação: Codeline Algumas tarefas possuem passos intermediaários que prejudicariam o ritmo de uma Active Development Line Como um time pode realizar múltiplas tarefas de longa duração em uma codeline sem comprometer sua integridade?

111 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

112 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

113 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 112 Release LineDesenvolvimento 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?

114 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

115 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 bugs Branch cada release line de sua mainline.

116 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 115 Release-Prep CodelineEvite 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?

117 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 line antecipada

118 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

119 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 118 A relação entre os padrões Mainline Active dev. line Private Workspace Integration Build Private sys build Repository Task level commit Smoke Test Unit Test Regression test Private Versions Task Branch CodeLine Policy Release Line Release-Prep Code Line

120 Qualiti Software Processes Disciplina de Gerência de Configuração e Ambiente

121 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

122 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

123 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 122 Artefatos Documento de Definição de Ambiente Plano de Gerência de Configuração de Software

124 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 123 Artefatos – Documento de Definição de Ambiente 1. INTRODUÇÃO 2. INFRA-ESTRUTURA 2.1. FERRAMENTAS 2.2. EQUIPAMENTOS 3. ORGANIZAÇÃO FÍSICA

125 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 124 Artefatos – Documento de Definição de Ambiente 4. PADRÃO DE NOMENCLATURA DE ARTEFATOS 5. AMBIENTE LOCAL 5.1. ESTRUTURA DE DIRETÓRIOS 5.2. INFORMAÇÕES ADICIONAIS 6. AMBIENTE DE HOMOLOGAÇÃO E TESTES 6.1. ESTRUTURA DE DIRETÓRIOS 6.2. INFORMAÇÕES ADICIONAIS 7. AMBIENTE DE PRODUÇÃO 7.1. ESTRUTURA DE DIRETÓRIOS 7.2. INFORMAÇÕES ADICIONAIS 8. ARQUIVOS DE CONFIGURAÇÂO

126 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 125 Artefatos – Documento de Definição de Ambiente 9. PROMOÇÂO ENTRE AMBIENTES E BACKUPS 9.1. AMBIENTE LOCAL AMBIENTE DE HOMOLOGAÇÃO E TESTES 10. POLÍTICA DE BACKUP 11. AVALIAÇÃO E REVISÃO DO AMBIENTE 12. REFERÊNCIAS

127 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 126 Artefatos – Plano de Gerência de Configuração de Software 1. INTRODUÇÃO 2. GERENCIAMENTO DA GERÊNCIA DE CONFIGURAÇÃO DE SOFTWARE 2.1. ORGANIZAÇÃO 2.2. RESPONSABILIDADES 2.3. RELAÇÃO COM AS FASES DO DESENVOLVIMENTO E OUTROS FLUXOS DE ATIVIDADES

128 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 127 Artefatos – Plano de Gerência de Configuração de Software 3. ATIVIDADES DA GERÊNCIA DE CONFIGURAÇÃO DE SOFTWARE 3.1. IDENTIFICAÇÃO DA CONFIGURAÇÃO Identificação de itens de configuração Nomeação dos itens de configuração Aquisição e armazenamento de itens de configuração Gerenciamento de baselines 3.2. CONTROLE DA CONFIGURAÇÃO

129 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 128 Artefatos – Plano de Gerência de Configuração de Software 3.3. REGISTRO DO STATUS DA CONFIGURAÇÃO Identificação das necessidades de informação Mecanismos de coleta de informações Relatórios, seus conteúdos e frequências Acesso a dados de registro de status 3.4. AUDITORIA DA CONFIGURAÇÃO Auditorias que devem ser realizadas Procedimentos de auditoria

130 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 129 Artefatos – Plano de Gerência de Configuração de Software 4. AGENDA DA GERÊNCIA DE CONFIGURAÇÃO 5. RECURSOS DE GERÊNCIA DE CONFIGURAÇÃO 6. MANUTENÇÃO DO PLANO DE GERÊNCIA DE CONFIGURAÇÃO DE SOFTWARE

131 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 130 O Fluxo de Atividades Gerente de Configuração e Ambiente Definir ferramentas e equipamentos Implantar e administrar ambiente Estruturar ambiente Planejar gerência de configuração

132 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 131 Gerente de Configuração e Ambiente Definir ferramentas e equipamentos Implantar e administrar ambiente Estruturar ambiente Planejar gerência de configuração Definir Ferramentas e Equipamentos

133 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

134 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

135 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

136 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 135 Passos para Definir Ferramentas e Equipamentos Definir plataformas de desenvolvimento Definir ferramentas Definir equipamentos e suas configurações

137 Copyright © 2002 Qualiti. Todos os direitos reservados. 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á

138 Copyright © 2002 Qualiti. Todos os direitos reservados. 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, etc Devem ser fornecidas informações sobre cada ferramenta escolhida

139 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 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

140 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 139 Gerente de Configuração e Ambiente Definir ferramentas e equipamentos Implantar e administrar ambiente Estruturar ambiente Planejar gerência de configuração Estruturar Ambiente

141 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

142 Copyright © 2002 Qualiti. Todos os direitos reservados. 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)

143 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 142 Passos para Estruturar Ambiente Definir estrutura de diretórios, repositórios e áreas de backup Definir política para utilização do ambiente

144 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

145 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

146 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 145 Gerente de Configuração e Ambiente Definir ferramentas e equipamentos Implantar e administrar ambiente Estruturar ambiente Planejar gerência de configuração Planejar Gerência de Configuração

147 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

148 Copyright © 2002 Qualiti. Todos os direitos reservados. 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)

149 Copyright © 2002 Qualiti. Todos os direitos reservados. 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ção 5.Planejar auditorias 6.Definir baselines 7.Definir cronograma de gerência de configuração

150 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 GC A 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

151 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 coletadas Também são definidos os relatórios que serão emitidos a partir dessas informações

152 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 único Para tanto, deve ser definido um esquema de nomeação Esse esquema deve permitir diferenciar versões diferentes de um item de configuração

153 Copyright © 2002 Qualiti. Todos os direitos reservados. 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: - V Alguns exemplos: ­ QIB-HW00005V1.2 ­ QIB-SW00034V1.5 ­ AMAZONIA-SW00035V4.1 ­ QIB-DOC00002V5.0

154 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 desenvolvimento Cada item selecionado deve ser unicamente identificado de acordo com o esquema de nomeação definido As características físicas e funcionais de cada item devem ser registradas na base de dados de GC

155 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

156 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 155 Passo 6 – Definir Baselines O objetivo deste passo é definir os baselines que serão estabelecidos durante o processo de desenvolvimento Devem ser documentadas as características físicas e funcionais de cada um

157 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 projeto No 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.

158 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 157 Gerente de Configuração e Ambiente Definir ferramentas e equipamentos Implantar e administrar ambiente Estruturar ambiente Planejar gerência de configuração Implantar e Administrar Ambiente

159 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

160 Copyright © 2002 Qualiti. Todos os direitos reservados. 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)

161 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 160 Passos para Implantar e Administrar Ambiente Instalar máquinas e criar diretórios Disseminar política de utilização do ambiente Gerenciar e avaliar ambiente

162 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 trabalho Em cada máquina, devem ser instalados os softwares necessários, de acordo com o perfil de quem a estará utilizando A 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

163 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 projeto Devem ser ressaltados os benefícios e desvantagens que o uso dessa política trará Reforçar o seguimento da política Abrir espaço para feedbacks e sugestões

164 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

165 Copyright © 2002 Qualiti. Todos os direitos reservados. 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ção Nas iterações das fases seguintes, o nível de esforço é mantido constante Acontece em paralelo e com uma forte integração com a disciplina de planejamento e gerenciamento Algumas atividades relacionadas com a gerência da configuração ocorrem em outras disciplinas como a de implantação e a de implementação

166 Qualiti Software Processes Controle de Mudanças

167 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 166 Contexto Desenvolvimento iterativo/incremental Novos conjuntos de requisitos, detalhados a cada iteração Mudanças em estratégias de negócio motivadas pelas mais diversas fontes: mercado, cultura, leis, etc

168 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

169 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

170 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 vida Definir procedimentos e documentação necessários para realizar modificações a ICs Prover os mecanismos necessários para conduzir mudanças de uma maneira controlada

171 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 170 Benefícios Controle sobre o escopo do projeto Mais 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 avaliado Geração de dados para o acompanhamento (tracking) do projeto

172 Qualiti Software Processes Ciclo de vida de um artefato

173 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 172 Ciclo de vida de um artefato DraftAceitoManutenção Concepção do artefato Mudanças feitas de forma informal Revisão/aceitação (baseline) Mudanças via controle formal (CCB) Mudanças em manutenção Release retirado

174 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 173 Artefato Draft Mudanças frequentes e rápidas Demanda por agilidade Controle formal dificulta a criação do artefato Artefatos apenas gerenciados e controlados ­ Uso de controle de versão (CVS, Clear Case, entre outros)

175 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 174 Artefato Aceito Artefato seguiu um processo de revisão, testes (se aplicável) e aceitação Inserido dentro do processo de controle de mudanças, tornando-se de fato item de configuração Mudanças via solicitação formal Presença do grupo gestor de mudanças (CCB) para avaliar e priorizar mudanças

176 Copyright © 2002 Qualiti. Todos os direitos reservados. 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ção Controle de mudanças permanece formal para os artefatos de um baseline Novas artefatos podem ser desenvolvidos usando o mesmo modelo de ciclo de vida Sistema pode ser descontinuado ou removido do ambiente de produção

177 Qualiti Software Processes Comitê gestor de mudanças Change Control Board (CCB)

178 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 177 Responsabilidades Análise das solicitações de mudança Controlar o escopo do projeto Reuniões com freqüência adequada ao ritmo das solicitações de mudança Envolver stakeholders no processo de priorização no processo de decisão Balanço entre o nível de controle desejado e overhead suportado

179 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 178 Características Composição multidisciplinar ­ SQA, gerente, cliente, arquiteto Profissionais com grande capacidade de comunicação e negociação Pode apresentar uma estrutura hierarquica dependendo do tamanho e da quantidade de stakeholders e sistemas envolvidos (integrações)

180 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 projeto Questões menores devem ser resolvidas pelo líder do projeto junto à equipe, reduzindo o overhead do CCB

181 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 180 Analisando o impacto Mudanças de grande impacto devem ser comunicadas aos stakeholders envolvidos Análises de custo x benefício produzidas pelos stakeholders Priorização de mudanças Mudança pode ser rejeitada se o CCB perceber que a análise de custo será mais cara que o benefício percebido Por questões de eficiência, algumas solicitações de mudança podem ser agrupadas por tema, subsistema ou área de negócio

182 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 181 Importância da análise de impacto Requisitos A&P Componentes Análise de impacto intra-projeto Dentro do projeto Análises inter-sistemas devem ser consideradas ­ Exemplo: frameworks, componentes ou bancos de dados compartilhados

183 Qualiti Software Processes Processo de Gerência de Mudanças

184 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 solicitadas Esse 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 implementada O processo é necessário para garantir que apenas mudanças avaliadas e aprovadas são realizadas em ICs

185 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 184 Solicitações de Mudança Algumas 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)

186 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 185 Etapas do Processo Um processo genérico pode ser dividido nas seguintes etapas: 1. Requisição da mudança 2. Classificação da mudança 3. Avaliação da mudança 4.Negociação sobre a realização da mudança 5. Implementação da mudança 6. Verificação da mudança 7. Promoção dos itens modificados para um novo baseline (mudança aceita) CCB

187 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 186 Correções emergenciais Em algumas situações, não há tempo para seguir os procedimentos padrão para a realização de mudanças Mesmo nessas situações, porém, é muito importante que seja criada uma solicitação de mudança O objetivo é garantir um mínimo de ordem, mesmo em uma situação caótica

188 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 187 Correções emergenciais Mudanças realizadas nessas circunstâncias podem comprometer a arquitetura ou inserir bugs Decisão: ­ Desfazer correção ou ­ Transformar a correção: refactoring, acréscimo de novos casos de teste

189 Qualiti Software Processes Geração de releases

190 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 produto Garantia de que todos os itens de configuração foram devidamente testados, avalidos, aceitos e estão disponíveis no novo baseline

191 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 190 Release notes IdDescrição 1Problema de performance na validação de pedido 2Nova rotina de validação de crédito conforme normas de dezembro de 2002 …… Relação de solicitações implementadas e testadas Automação parcial Comentários adicionais ­ Limitações atuais, problemas não resolvidos

192 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 191 Tipos de release Normalmente, releases estão associados aos milestones do plano de projeto Internos ­ 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

193 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

194 Qualiti Software Processes Discussão

195 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 194 Alguns Fatos Mudança é inevitável Mudar é fácil – controlar diversas mudanças simultâneas é difícil A 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

196 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

197 Qualiti Software Processes Sistemas de Controle de Versão

198 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes 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 de Versões Projeto

199 Copyright © 2002 Qualiti. Todos os direitos reservados. 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;

200 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes O que não um SCV é? Mecanismo para backup Ferramenta para a construção de builds Substituto 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 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!

201 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

202 Copyright © 2002 Qualiti. Todos os direitos reservados. 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.

203 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Tendências Grande 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

204 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Comparação entre alguns SCVs CVSSVN ClearCaseVSTS Licença Open Source Comercial Formato Repositório Arquivos RCS [1] Relational DataBase [1] Atomic Commit NãoSim Copiar e Renomear Arquivos e Diretórios NãoSim Merge Tracking NãoSim Tags SimSim [2] Conjunto de Comandos SimplesExcelente Deployment BomMédio [3] Fraco [3] Médio Velocidade Médio [4] Muito BomFraco [5] Bom Portabilidade BomExcelenteMédioFraco [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

205 Qualiti Software Processes Fluxo de Trabalho com SVC

206 Copyright © 2002 Qualiti. Todos os direitos reservados. 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.

207 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes checkoutupdatecheckin Desenvolvimento Desenvolvimento ideal Repositório Desenvolvedor A Desenvolvedor B

208 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes checkin X Desenvolvimento real Repositório Desenvolvedor A Desenvolvedor B updateResolução de conflito checkin conflito

209 Copyright © 2002 Qualiti. Todos os direitos reservados. 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;

210 Qualiti Software Processes Concurrent Versions System (CVS) Rodrigo Teixeira

211 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

212 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Ferramentas CVS CVSNT Server ­ Servidor CVS para windows ­ Site: WinCVS ­ Interface gráfica standalone ­ Site: TortoiseCVS ­ Integração do CVS ao Windows Explorer ­ Site: Eclipse ­ Ambiente de Desenvolvimento ­ Site: C LIENTES S ERVIDOR Demonstração

213 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Exemplo de um servidor CVS CVS tem suporte nativo em sistemas unix/linux Um servidor gratuito windows: CVSNT ­ Disponível em: Exemplo para criar um novo repositório no CVSNT

214 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes WinCVS – Tela Principal arquivos status módulos Ícone de estado Número da revisão Tipo do arquivo nome do tag

215 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes TortoiseCVS arquivos Ícone de estado arquivos operações

216 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Eclipse [ Perspectiva Repository Explorer] Módulos e ArquivosCódigo Histórico e Tags

217 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Usando WinCVS Configurações Iniciais ­ Admin > Preferences... CVSROOT – Localização do repositório do repositório} Authentication (autenticação) –passwd file on the cvs server ­ Admin > Login... Colocar a senha...

218 Copyright © 2002 Qualiti. Todos os direitos reservados. 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.

219 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

220 Copyright © 2002 Qualiti. Todos os direitos reservados. 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]

221 Qualiti Software Processes Subversion (SVN) Rodrigo Teixeira

222 Copyright © 2002 Qualiti. Todos os direitos reservados. 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: Ferramentas utilizadas em sala Servidor Clientes

223 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Ferramentas CVS VisualSVN ­ Servidor CVS para windows ­ Site: 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 C LIENTES S ERVIDOR Demonstração

224 Copyright © 2002 Qualiti. Todos os direitos reservados. 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.

225 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 - ­ Servidor - VisualSVN (http://www.visualsvn.com/server/) ­ Cliente - Tortoise (tortoisesvn.tigris.org) ­ Cliente - RapidSVN (rapidsvn. tigris.org) ­ Plugin Eclipse (subclipse.tigris.org)

226 Qualiti Software Processes Integração Continua

227 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Projetos de TI continuam ineficientes e imprevisíveis... | 226 Qual é o motivo destes problemas?

228 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 … O s 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

229 Copyright © 2002 Qualiti. Todos os direitos reservados. 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."

230 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 229 Integração Contínua Geraçã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...

231 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Builds | 230 construção complexa

232 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

233 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 232 As Soluções Manter todos os arquivos em um repositório central Controlar o acesso a esse repositório, de modo a garantir a consistência dos artefatos Automatizar o processo de geração de builds Gerenciar a execução dos builds e distribuir seus resultados. Sistema de Controle de Versões (CVS, por exemplo) Build Script executaobserva Sistema de Integração Contínua

234 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

235 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Comparação Maven vs Ant + Ivy | 234 CritérioAnt + IvyMaven Instalação Muito fácil Iniciar um novo projeto 5 min15 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 boaSim, mas básica Gerência de dependências? Sim, através do plug-in Ivy Sim, nativo produtividade suporte

236 Qualiti Software Processes Ant | 235

237 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 236 Ant Ferramenta para construção automática de builds Caracterí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

238 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 237 O que o Ant pode fazer por você... Copiar, apagar, mover arquivos e diretórios Acessar o CVS Compilar os arquivos fontes Gerar um JAR Executar uma bateria de testes Enviar um com os resultados dos testes Fazer um upload do build via FTP para o servidor de produção

239 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 238 Buildfiles Buildfiles são scripts a partir dos quais o Ant gera builds Escritos em XML build.xml Ant Arquivos Executáveis

240 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 239 Estrutura de um buildfile O buildfile é composto de um projeto O projeto pode possuir propriedades O projeto possui um conjunto de alvos Cada alvo é formado por tarefas...

241 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 240 Projetos (projects) Elemento mais externo de um buildfile Cada projeto contém um conjunto de alvos Um projeto tem os seguintes atributos: AtributoObrigatório name Não default Sim basedir Não

242 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 241 Projetos - Exemplo (tarefas agrupadas em alvos...)

243 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Olá Mundo | 242

244 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 243 Propriedades (properties) Um projeto pode ter um conjunto de propriedades property Essas propriedades podem ser criadas através da tarefa property ou fora do Ant Propriedades podem ser usadas como valores para atributos de tarefas Isso é feito colocando-se o nome da propriedade entre " ${ " e " } " no valor do atributo

245 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 244 Propriedades - Exemplos Definição Uso

246 Copyright © 2002 Qualiti. Todos os direitos reservados. 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.version

247 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 246 Alvos (targets) Um alvo é um conjunto de tarefas que se quer executar Representa um objetivo a ser alcançado Exemplos: ­ Criação dos diretórios usados no processo de geração do build ­ Compilação dos arquivos-fonte ­ Empacotamento dos arquivos compilados

248 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 247 Dependências entre Alvos Um alvo pode depender de outros alvos Se um alvo B depende de outro alvo, A, A será processado antes de B Uma dependência é indicada através do atributo depends de um alvo Exemplo: Cada alvo é executado apenas uma vez!

249 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 s com resultados dos testes Registrar resultado dos testes

250 Copyright © 2002 Qualiti. Todos os direitos reservados. 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:

251 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 250 Atributos de um Alvo Um alvo tem os seguintes atributos: AtributoObrigatório name Sim depends Não if Não unless Não description Não

252 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 251 Tarefas (tasks) Um pedaço de código que pode ser executado Unidades básicas de um buildfile Uma 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

253 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

254 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 253 Tarefa tstamp Guarda informação temporal referente a quando a tarefa foi executada ­ DSTAMP – Formato aaaammdd ­ TSTAMP – Formato hhmm ­ TODAY – Formato mês dia ano ­ Permite formatação da data Exemplo

255 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 254 Tarefa copy Copia arquivos e diretórios Um arquivo é copiado apenas se o arquivo fonte é mais novo que o destino (caso este último exista) ­ Sobre-escrita pode ser explicitada

256 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 255 Tarefa copy (exemplos)

257 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 256 Tarefa delete Apaga arquivos e diretórios Exemplos:

258 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 257 Tarefa echo Escreve uma mensagem no console do usuário ou em um arquivo Exemplos: Essa mensagem é bem maior, ocupando mais de uma linha. 3. Esta mensagem será escrita em um arquivo!

259 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 258 Tarefa cvs Lida com módulos contidos em um repositório CVS Exemplos: 1.

260 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 259 Tarefas mkdir e mail mkdir - Cria uma árvore de diretórios mail - Manda uma mensagem de via STMP sem anexos

261 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 260 Tarefa javac Compila 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

262 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 261 Tarefa javac (exemplos) 1. 2. 3.

263 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 262 Tarefa java Executa uma classe Java na máquina virtual atual ou inicia outra, se especificado Exemplos: 1. 2.

264 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 263 Tarefa jar Cria um arquivo.jar contendo os arquivos especificados 1. 2. 3.

265 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Tarefa Permite a execução de testes JUnit; ­ Opcionalmente, cria dados (xml) para a geração posterior de relatórios Exemplo: Ant | 264 Saída XML Execução de vários test cases

266 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Tarefa Permite a geração de relatórios HTML de testes JUnit realizados anteriormente. Exemplo: Ant | 265 Entrada XML

267 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Ant | 266 Exemplo de relatório

268 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 267 Um Exemplo de Buildfile

269 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 268 Um Exemplo de Buildfile (continuação) (...)

270 Copyright © 2002 Qualiti. Todos os direitos reservados. 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] -help -projecthelp -version -quiet -verbose -debug -emacs

271 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 ant ant –buildfile test.xml Demonstração

272 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 dist Executa o Ant usando o arquivo test.xml no diretório atual, a partir do alvo dist ant –buildfile test.xml dist

273 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 projeto 3. Compile o código fonte java de teste do aplicação 4. Execute o código de teste 5. Empacote a aplicação em um arquivo jar

274 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 permite que você defina "métodos privados" com parâmetros, chamados atributos 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

275 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Exemplo de reuso com | 274 Demonstração

276 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Exemplo de reuso com e | 275 Uso do Macrodef Definição do Macrodef Qualquer coisa pode ser inserida no macrodef utilizando

277 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Exemplo de reuso com | 276 Limpa Geral Compila Geral Limpa Especifico generico-build.xmlbuild.xml ant deploy Buildfile: build.xml clean: [echo] Limpa Filho init: compile: [echo] Compila Geral deploy: 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

278 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Exercício Refatore o build.xml da aplicação utilizando: 1. A tarefa para promover reuso; 2. Extrair tarefas comuns à vários projetos para um build genérico 3. Utilizar a tarefa

279 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 278 Onde encontrar o Ant ­ Site oficial do projeto ­ Documentação extensiva ­ Diversas versões disponíveis ­ Pacotes com tarefas adicionais ­ 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.

280 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Instalando o ANT Download do Ant ou superior ­ Baixar e descompactar o arquivo: ­ apache-ant 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 compiled on June | 279

281 Qualiti Software Processes Gerenciando Dependências com Ivy | 280

282 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes O que é mais descritivo? Algo assim... | 281

283 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes O que é mais descritivo?... Ou assim... | 282

284 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 builds 4. Não reinvente a roda: reuse 5. Sistemas modularizados e flexiveis são fáceis de desenvolver e manter 6. Gerenciar Dependências: Metodologia Ágel | 283

285 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Ivy + Ant Ivy projeto Apache |Site: ­ 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 Empresa repositório empresa repositório local dir. /lib do projeto 1. download 2. armazena

286 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Exemplos de repositórios: Local e Remoto | 285

287 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 install ivy">

288 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 build.xml gera Demonstração

289 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Arquivos Ivy Ajudam a separar declarações de dependências dos scripts de build build.xml ivy.xml utiliza gera Demonstração

290 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Arquivos Ivy | 289

291 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 290 build.xml

292 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Entendendo as dependências | 291

293 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 Demonstração

294 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Managing your dependen cies with Ivy - Apache Con EU 2007 Arquivo Ivy default" name="struts2-core" rev="2.0.5" />

295 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Exercício Crie um arquivo ivy.xml para gerenciar as dependências da aplicação.

296 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Onde Você pode encontrar o Ivy ­ Site oficial do projeto ­ Documentação Plugins Eclipse ­ | 295

297 Qualiti Software Processes Maven2 | 296

298 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

299 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

300 Copyright © 2002 Qualiti. Todos os direitos reservados. 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.xml Artefato Plugins Motor Maven 2

301 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Princípios Convenção sobre configuração (convention over configuration) Reutilização da lógica de build Ciclo de vida padronizado, mais flexível Execução declarativa Gerência coerente de dependências | 300

302 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

303 Copyright © 2002 Qualiti. Todos os direitos reservados. 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.jar... com.minhacompanhia.contabilidade contabilidade-core jar 1.1 Pacote básico de contabilidade... com.minhacompanhia.contabilidade contabilidade-core jar 1.1 Pacote básico de contabilidade

304 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 (ex.: jar, war)

305 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

306 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

307 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes UTILIZAÇÃO DOS PRINCIPAIS RECURSOS MAVEN | 306

308 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Instalando o Maven 2 Download Maven ou superior ­ Baixar e descompactar o arquivo: ­ apache-maven 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: ­ Java version: 1.6.0_07 | 307

309 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

310 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Suporte no Eclipse Plugin m2eclipse provê um bom suporte para Maven ­ criar projetos, gerenciar dependência, etc | 309 Demonstração

311 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

312 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Alterando POM Alterar a forma de empacotamento Alterar o nome e a URL do projeto Adicionar dependências Configurar plugins | 311 junit test maven-compiler-plugin 1.5 name>Projeto Curso Maven packaging>jar

313 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

314 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

315 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Exemplo: Adicionando plugins ao build org.codehaus.mojo cobertura-maven-plugin 2.2 [*] [*] **/*Test.class | 314 [Configuração opcional] Exclui os códigos de teste da verificação

316 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Exemplo:Adicionando Plugins de Relatórios org.codehaus.mojo cobertura-maven-plugin org.codehaus.mojo findbugs-maven-plugin maven-checkstyle-plugin org.apache.maven.plugins maven-pmd-plugin | 315

317 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Criando um Repositorio na Intranet Precisamos mudar o ~.m2/settings.xml para criar um mirror dos servidores externos | 316 ibiblio Maven2 Empresa repositório empresa repositório local dir. /lib do projeto 1.download2. armazena Demonstração Nx

318 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Deploy um Artefato no Maven... snapshots Internal Snapshots | 317 pom.xml mvn deploy

319 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Exercício 1. Criar um projeto Maven2 com suporte para Eclipse 2. 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

320 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Boas Práticas Mantenha um projeto modularizado ­ Herança herde propriedades e compontamento de projetos pais Opção Artefato do projeto ­ Agregação Organize projetos em vários módulos | 319

321 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Onde Você pode encontrar o Maven2 ­ Site oficial do projeto ­ Documentação ­ Maven: The Definitive Guide ­ Open Source Book Plugins Eclipse ­ | 320

322 Qualiti Software Processes Sistemas de Integração Contínua | 321

323 Copyright © 2002 Qualiti. Todos os direitos reservados. 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 SVN Possuem 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

324 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Boas Práticas Utilizar builds automáticos em integrações continuas Realizar Builds de Integração em todos os ambientes Manter 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ões Gerenciar e publicar os builds Guardar os histórico dos builds para futuras análises e otimizações | 323

325 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Hudson https://hudson.dev.java.net/ ­ Site oficial do projeto ­ Documentação ­ Download | 324 Demonstração

326 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Outras Leituras The Top 10 Blunders In Integration And Testing... And How To Avoid Them, borland white paper, Março/2007 Automation for the people (Paul Duvall, developerWorks): ­ p?search_by=automation+people: | 325

327 Qualiti Software Processes Bugzilla

328 Copyright © 2002 Qualiti. Todos os direitos reservados. 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ças Pode controlar os defeitos de vários sistemas ao mesmo tempo

329 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 328 Vantagens Simples de usar ­ Poucos comandos Freeware Código aberto (open source) ­ Permite customizações Uso pela Web Flexível no que concerne à realização de consultas Suportado por uma grande comunidade de usuários

330 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 329 Desvantagens Documentação pouco detalhada Seguranç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

331 Copyright © 2002 Qualiti. Todos os direitos reservados. 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

332 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 331 Status dos Defeitos Estados Abertos NEWBug inserido por alguém (automático) Aceito ASSIGNED Reatribuído NEW Resolvido RESOLVED ASSIGNEDAtribuído à pessoa apropriada Reatribuído NEW Resolvido RESOLVED REOPENEDReaberto: foi constatado que ainda não tinha sido resolvido Aceito ASSIGNED Reatribuído NEW Resolvido RESOLVED UNCONFIRMEDNão confirmado que existe Confirmado NEW Resolvido RESOLVED

333 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 332 Mais Status dos Defeitos Estados Fechados RESOLVEDFoi resolvido (só está esperando a homologação) Não foi resolvido REOPENED Está ok VERIFIED Está ok e pode ser fechado CLOSED VERIFIEDA correção foi homologada Defeito é fechado CLOSED CLOSEDO bug é tido como resolvido Não foi resolvido REOPENED

334 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 333 Resoluções Válida apenas para estados fechados FIXED 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.

335 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 334 Ciclo de Vida de um Bug

336 Copyright © 2002 Qualiti. Todos os direitos reservados. 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)

337 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 336 Bugzilla – Tela Inicial

338 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 337 Bugzilla – Menu de Operações

339 Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes | 338 E agora vamos dar uma olhada no Bugzilla...

340 Copyright © 2002 Qualiti. Todos os direitos reservados. 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


Carregar ppt "Qualiti Software Processes Gerência de Configuração."

Apresentações semelhantes


Anúncios Google