software configuration management problemas e soluções

39
Software Configuration Management Problemas e Soluções Ryan Leite Albuquerque

Upload: elliando-dias

Post on 14-Apr-2017

1.732 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Software Configuration Management Problemas e Soluções

Software Configuration Management

Problemas e Soluções

Ryan Leite Albuquerque

Page 2: Software Configuration Management Problemas e Soluções

slide 2 de 39 SCM

ROTEIROROTEIRO1. O Que é Gerência de Configuração (GC);

2. Problemas Clássicos;

3. Soluções Clássicas;

4. Problemas não tão Clássicos;

5. Processos;

6. Ferramentas;

Page 3: Software Configuration Management Problemas e Soluções

slide 3 de 39 SCM

O que é GC ?O que é GC ?• ES não é uma ciência exata;

• Não se sabe a priori:

– Quanto vai custar o software;

– Quando o desenvolvimento vai terminar;

– Qual o tamanho final do sistema;

• Problemas:

– Tecnologias demais;

– Gente demais (equipes grandes e/ou distribuídas);

– Domínios demais;

Page 4: Software Configuration Management Problemas e Soluções

slide 4 de 39 SCM

O que é GC ?O que é GC ?On any team project, a certain degree of confusion is inevitable. The goal is

to minimize this confusion so that more work can get done. The art of coordinating software development to minimize this particular type of

confusion is called configuration management.

Configuration management is the art of identifying, organizing, and controlling modifications to the software being built by a programming team. The goal is to maximize productivity by minimizing mistakes.

--

Wayne Babich

Software Configuration Management: Coordination for Team Productivity

Addison-Wesley, 1986.

Page 5: Software Configuration Management Problemas e Soluções

slide 5 de 39 SCM

Problemas ClássicosProblemas Clássicos

• Você já ouviu algo parecido?

– O erro q eu corrigi ontem apareceu de novo hj!

– O cliente recebeu a versão errada do sistema!

– Isso q vc está fazendo já foi feito por Fulano...

– Não estou vendo sua correção!

– O que foi introduzido desde a última entrega?

– Quem corrigiu o problema relatado pelo cliente na semana passada?

– (Cliente) Mas não foi isso q pedi pra implementar!

Page 6: Software Configuration Management Problemas e Soluções

slide 6 de 39 SCM

Problemas ClássicosProblemas Clássicos

• Falha na Comunicação

– Qto mais gente, mas canais de comunicação e mais problemas:

• De interpretação;

• De expressão;

– Causas:

• Culturas diferentes (idiomas e costumes);

• Vocabulários incompatíveis (termos não adequados);

• Distância física (conversa via telefone é cruel);

• Conhecimento (background técnico);

• Personalidade (e.g. timidez, verborreia);

Page 7: Software Configuration Management Problemas e Soluções

slide 7 de 39 SCM

Problemas ClássicosProblemas Clássicos

• Dados Compartilhados

– Qdo parte do sistema é compartilhado e alterado inadvertidamente

• Imagine desenvolver em equipe usando um drive de rede;

• Surgimento de efeitos colaterais;

– Solução é manter cópias locais para evitar conflitos

• Surgimento de várias versões do mesmo componente que deveria ser único;

Page 8: Software Configuration Management Problemas e Soluções

slide 8 de 39 SCM

Problemas ClássicosProblemas Clássicos

• Manutenção Múltipla

– Para resolver o problema dos dados compartilhados, cria-se uma biblioteca central de componentes;

• Uma cópia do componente é copiada localmente;

• As versões são copiadas de volta para a base central qdo alteradas;

– Problema:

• Sobreposição de alterações;

• Duplicação de trabalho;

Page 9: Software Configuration Management Problemas e Soluções

slide 9 de 39 SCM

Soluções ClássicasSoluções Clássicas

• Falha na Comunicação

– Criação de padrões para uniformizar a linguagem;

• Streamed Lines;

– Software Configuration Management Patterns: Effective

Teamwork, Practical Integration by Steve Berczuk with Brad Appleton.

– Mainline, Release line, Line policies, Branch per Task, ...

• Vocabulário específico: versão, branches, tags, merge, CR, CCB, baseline, release, ...;

Page 10: Software Configuration Management Problemas e Soluções

slide 10 de 39 SCM

Soluções ClássicasSoluções Clássicas

• Dados Compartilhados

– Utilização de sistemas de controle de versão

• Ex. CVS, Subversion, Clearcase, Starteam, ...;

– Repositório central para o trabalho concorrente;

– Tagging

• Cada desenvolvedor trabalha num ponto em comum e estável;

– Branching

• Trabalho pode ser realizado isoladamente e concorrentemente;

Page 11: Software Configuration Management Problemas e Soluções

slide 11 de 39 SCM

Soluções ClássicasSoluções Clássicas

• Manutenção Múltipla

– Utilização de um sistema para controle de mudanças

• Ex. Bugzilla, Mantis, GNats, Jira, ...

• O gerenciamento das mudanças vai minimizar os problemas de trabalho repetido e/ou perdido;

• Aumento da visibilidade das mudanças;

– Utilização de processos

• Definição dos padrões e procedimentos adequados aos projetos;

Page 12: Software Configuration Management Problemas e Soluções

slide 12 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Lidar com o pre- conceito (mitos)

– GC é uma atividade só do engenheiro de configuração;

– GC é uma atividade só de desenvolvedores;

– GC só serve para obter certificações (e.g. CMMI);

– As ferramentas de GC fazem todo o trabalho sujo;

– O desenvolvimento sempre sobrevive sem GC;

– Eu faço GC só com o CVS!

– Só preciso de GC para o código!

– Solução:

• Treinamentos!

Page 13: Software Configuration Management Problemas e Soluções

slide 13 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Linhas instáveis

– Tá! Eu tenho um CVS. E daí?

• Utilizar CVS só como software de backup não resolve os problemas;

– Se nenhuma política de branches é definida, temos o risco de ter linhas sempre instáveis

• Todo mundo commita no HEAD/Trunk;

• O desenvolvimento pode tornar-se frustrante em alguns casos;

Page 14: Software Configuration Management Problemas e Soluções

slide 14 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Linhas instáveis (cont.)

– Soluções:

• Definir política de branches e seus acessos:

– Mainline;

– Branch per Developer;

– Branch per Task;

– Branch per Component;

– ...

• Se uma política de branches não for possível, usar integração contínua...

Page 15: Software Configuration Management Problemas e Soluções

slide 15 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos• Integração Contínua

– Combinação de técnicas oriundas de XP para agilizar os releases com a diminuição dos tempos de integração

• Código (latest) é recuperado, compilado e testado em tempos regulares sem a intervenção humana;

• Dependendo do resultado da compilação, há uma notificação para o time;

• Pode ocorrer o deploy no final do processo;

• ...e a linha torna-se estável mais rapidamente;

Page 16: Software Configuration Management Problemas e Soluções

slide 16 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos• Integração Contínua

– Premissas:

• Ter código em um repositório de versões;

• Ter o processo de build 100% automatizado e razoavelmente rápido;

• Ter um processo de teste (pelo menos unitário) automatizado;

• Commits diários e compiláveis;

Page 17: Software Configuration Management Problemas e Soluções

slide 17 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Branches e Merges

– O desenvolvimento com branches parece ser mais complicado no entanto é o mais seguro;

• As mudanças ficam isoladas proporcionando o trabalho concorrente e uma boa rastreabilidade;

– Quem controla um mainline pode não conhecer do código

• Caso do CESAR. Temos um engenheiro de configuração que controla as mainlines;

• O merge de branches as vezes não é trivial;

• Como se precaver?

Page 18: Software Configuration Management Problemas e Soluções

slide 18 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Branches e Merges

As alterações não podem ser

incluídas ao mesmo tempo.

Page 19: Software Configuration Management Problemas e Soluções

slide 19 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Branches e Merges

As alterações precisam ser

incluídas ao mesmo tempo.

Page 20: Software Configuration Management Problemas e Soluções

slide 20 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos• Manutenção em Produção

– É muito comum ter que fazer manutenção em sistemas que já foram entregues enquanto uma nova versão está sendo preparada;

– Fato: a correção não pode ser realizada no mainline;

• Mas ela tem q voltar para o mainline algum dia;

– Solução: usar branch por release;

Page 21: Software Configuration Management Problemas e Soluções

slide 21 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Rastreabilidade

– Manter rastreabilidade não é trivial;

– Não é pequena a quantidade de projetos q têm problemas com rastreabilidade entre requisitos, código, testes e mudanças;

– Solução: utilizar suites de desenvolvimento com funcionalidades integradas;

• No C.E.S.A.R estamos desenvolvendo a nossa;

– Sistema de controle de requisitos e use cases;

– Sistema de controle de revisões;

– Sistema de controle de casos de testes e execuções;

– Sistema de controle de mudanças;

Page 22: Software Configuration Management Problemas e Soluções

slide 22 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Rastreabilidade (cont.)

– Quais casos de testes cobrem cada requisito?

– Quais casos de testes vão ser impactados com minha mudança?

– Quais os use cases impactados com minha mudança?

Requisitos

Casos de Uso

Código

Casos de Teste

Mudanças Revisões

Page 23: Software Configuration Management Problemas e Soluções

slide 23 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Rastreabilidade entre Mudanças e Código

– Qdo um esquema simples de branches é escolhido, não se tem muita noção do mapeamento entre as solicitações de mudança e o código alterado

• Que solicitação de mudança ocasionou esse commit?

• Quais os artefatos alterados em virtude dessa solicitação de mudança?

Page 24: Software Configuration Management Problemas e Soluções

slide 24 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Rastreabilidade entre Mudanças e Commits

(cont.)

– Solução: triggers no sistema de controle de versão;

• Antes de cada commit, o trigger solicita um comentário informando o identificador da mudança;

• O commit é aceito ou não de acordo com a política estabelecida (estado da CR, nomes dos arquivos, permissões de usuários, ...);

• Se aceito, as informações do commit são postadas na solicitação de mudança (geralmente uma aplicação web);

Page 25: Software Configuration Management Problemas e Soluções

slide 25 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Rastreabilidade entre Mudanças e Commits

(cont.)

– Ferramentas:

• SCMBug (CVS/Subversion � Mantis/Bugzilla);

• Garfio (Subversion � Mantis);

• CVSZilla (CVS � Bugzilla);

• C.E.S.A.R CVSGuardian (CVS � Mantis);

Page 26: Software Configuration Management Problemas e Soluções

slide 26 de 39 SCM

Problemas não tão ClássicosProblemas não tão Clássicos

• Banco de Dados

– O controle de versões de uma base de dados não é tão trivial;

– Em algum ponto alguém terá que atualizar um banco em produção sem destruir os dados;

– A idéia aqui é manter scripts de atualização da base, um para cada versão do sistema. Os script deverão ser aplicados em ordem para atualização do banco. Sugestões:

• Dbdeploy;

• DB Ghost;

Page 27: Software Configuration Management Problemas e Soluções

slide 27 de 39 SCM

ProcessosProcessos

• Planejamento

– Identificação (ambientes, itens de configuração, baselines e CCB);

– Padronização (nomes, ferramentas, estrutura de diretórios, projetos e componentes);

• Controle

– Controle das mudanças (ação do CCB);

– Estabelecimento de marcos (baselines e releases);

– Versionamento;

Page 28: Software Configuration Management Problemas e Soluções

slide 28 de 39 SCM

ProcessosProcessos

• Status Accounting

– Geração de relatórios (em geral automáticos);

• Logs de commits e meta-dados;

• Histórico de mudanças;

• Atuação do CCB (análise e decisões);

– Métricas (coleta e análise);

• Auditorias

– Verificações de integridade (física e funcional);

Page 29: Software Configuration Management Problemas e Soluções

slide 29 de 39 SCM

FerramentasFerramentas

• Controle de Versão

– Sistema para gerenciar as versões de arquivos (e diretórios);

– Propicia:

• Controle do histórico;

– Metadados e conteúdo;

• Trabalho concorrente e isolado (branches);

– Ramificação e junção de trabalhos afins;

• Marcação e recuperação de versões (tags);

• Status accounting;

Page 30: Software Configuration Management Problemas e Soluções

slide 30 de 39 SCM

FerramentasFerramentas

• Controle de Versão

Sem controle de versão

Controle CVS like Controle SVN like

Page 31: Software Configuration Management Problemas e Soluções

slide 31 de 39 SCM

FerramentasFerramentas

• Controle de Versão

Page 32: Software Configuration Management Problemas e Soluções

slide 32 de 39 SCM

FerramentasFerramentas• Controle de Versão (opções recomendadas)

– CVS x Subversion;

• Subversion corrige alguns problemas do CVS;

– Refactoring (renomeação de arquivos e diretórios);

– Meta-dados customizados (properties);

– Commits atômicos (revisão por repositório);

– Permissões de diretórios;

– Vários protocolos de authenticação:

» http(s) (webdav), file, svn, svn+ssh, ...

– Tag e branch com tempo constante (links);

– Diffs de arquivos binários;

Page 33: Software Configuration Management Problemas e Soluções

slide 33 de 39 SCM

FerramentasFerramentas

• Controle de Versão (outras opções)

– Open source:

• GIT, Mercurial, Arch, Monotone, ...

– Comerciais:

• Rational Clearcase;

• IBM Starteam;

• Visual Source Safe;

• Perforce;

• ...

Page 34: Software Configuration Management Problemas e Soluções

slide 34 de 39 SCM

FerramentasFerramentas

• Controle de Mudanças

– Sistema para registrar e gerenciar as mudanças aos softwares;

– Propicia:

• Acompanhamento dos estados de cada requisição;

• Controle de acesso;

• Histórico de alteração;

• Notificações por email do andamento das requisições;

• Status accounting;

Page 35: Software Configuration Management Problemas e Soluções

slide 35 de 39 SCM

FerramentasFerramentas

• Controle de

Mudanças

Page 36: Software Configuration Management Problemas e Soluções

slide 36 de 39 SCM

FerramentasFerramentas

• Controle de Mudanças (opções recomendadas)

– Bugzilla (perl) x Mantis (php)

• Embora o Bugzilla tenha evoluido bastante, o Mantis ainda tem uma melhor usabilidade;

• Customização da máquina de estados;

• Internacionalização;

• Web services (facilitando a extensão);

• Controle de acesso por projeto (níveis de acesso);

• Relatórios de métricas;

Page 37: Software Configuration Management Problemas e Soluções

slide 37 de 39 SCM

FerramentasFerramentas

• Controle de Mudanças (outras opções)

– Trac (python)

• Difícil instalação;

• Bug tracking, wiki, svn browser;

• Plugins (forum, blog, autenticação, relatórios, ...);

– Atlassian Jira (j2ee) (comercial)

• Mais completo e mais complexo;

• Excelente apresentação;

• Flexibilidade e extensibilidade;

• Free para projetos open-source;

Page 38: Software Configuration Management Problemas e Soluções

slide 38 de 39 SCM

Outras Ferramentas RelacionadasOutras Ferramentas Relacionadas• Automatização de Builds

– GNU Make, Ant, Maven, Shell/Batch Script, ...

• Integração Contínua

– Cruise Control, Luntbuild, Anthill, Continuum, Mojo, ...

• Gerenciamento de Testes

– Testlink, Salomè, Test Director, TestManager, ...

• Gerenciamento de Requisitos

– RTH, Requisite Pro, Caliber, ...

• Revisão

– Code Striker;

Page 39: Software Configuration Management Problemas e Soluções

Ryan Leite Albuquerque

[ [email protected] ]

81 8727.4111

Ryan Leite Albuquerque

[ [email protected] ]

81 8727.4111