SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
Software Configuration Management
        Problemas e Soluções
          Ryan Leite Albuquerque
ROTEIRO
1. 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;



                              SCM
slide 2 de 39
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;


                                            SCM
slide 3 de 39
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.




                                                 SCM
slide 4 de 39
Problemas 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!



                                               SCM
slide 5 de 39
Problemas 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);


                                                 SCM
slide 6 de 39
Problemas 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;




                                                 SCM
slide 7 de 39
Problemas 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;



                                               SCM
slide 8 de 39
Soluçõ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, ...;




                                                     SCM
slide 9 de 39
Soluçõ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;



                                                SCM
slide 10 de 39
Soluçõ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;



                                                  SCM
slide 11 de 39
Problemas 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!


                                             SCM
slide 12 de 39
Problemas 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;




                                               SCM
slide 13 de 39
Problemas 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...


                                                SCM
slide 14 de 39
Problemas 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;




                                                SCM
slide 15 de 39
Problemas 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;




                                               SCM
slide 16 de 39
Problemas 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?


                                               SCM
slide 17 de 39
Problemas não tão Clássicos
• Branches e Merges

                      As alterações não podem ser
                       incluídas ao mesmo tempo.




                        SCM
slide 18 de 39
Problemas não tão Clássicos
• Branches e Merges

                      As alterações precisam ser
                      incluídas ao mesmo tempo.




                       SCM
slide 19 de 39
Problemas 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;



                                             SCM
slide 20 de 39
Problemas 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;


                                                      SCM
slide 21 de 39
Problemas 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 Teste


                 Casos de Uso


                   Código


                                Revisões
                  Mudanças
                                                 SCM
slide 22 de 39
Problemas 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?




                                                SCM
slide 23 de 39
Problemas 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);


                                              SCM
slide 24 de 39
Problemas 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);




                                                 SCM
slide 25 de 39
Problemas 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;




                                             SCM
slide 26 de 39
Processos
• 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;



                                              SCM
slide 27 de 39
Processos
• 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);




                                               SCM
slide 28 de 39
Ferramentas
• 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;



                                                     SCM
slide 29 de 39
Ferramentas
• Controle de Versão
                                Sem controle de versão




                                                         Controle SVN like
                 Controle CVS like




                                                         SCM
slide 30 de 39
Ferramentas
• Controle de Versão




                       SCM
slide 31 de 39
Ferramentas
• 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;



                                                           SCM
slide 32 de 39
Ferramentas
• Controle de Versão (outras opções)
     – Open source:
           • GIT, Mercurial, Arch, Monotone, ...
     – Comerciais:
           • Rational Clearcase;
           • IBM Starteam;
           • Visual Source Safe;
           • Perforce;
           • ...


                                               SCM
slide 33 de 39
Ferramentas
• 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;




                                              SCM
slide 34 de 39
Ferramentas
• Controle de
  Mudanças




                 SCM
slide 35 de 39
Ferramentas
• 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;



                                                SCM
slide 36 de 39
Ferramentas
• 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;


                                                 SCM
slide 37 de 39
Outras 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;



                                                  SCM
slide 38 de 39
Ryan Leite Albuquerque
     [ ryan@cesar.org.br ]
            81 8727.4111

Mais conteúdo relacionado

Mais procurados

Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasKleitor Franklint Correa Araujo
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcpFrank Coelho
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Plano de Projeto de Software do​ Residents Control
Plano de Projeto de Software do​ Residents ControlPlano de Projeto de Software do​ Residents Control
Plano de Projeto de Software do​ Residents Controlazarael2607
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
 
Modelos de Processo de Software Parte 2
Modelos de Processo de Software Parte 2Modelos de Processo de Software Parte 2
Modelos de Processo de Software Parte 2Elaine Cecília Gatto
 
eXtreme Programming (xp)
eXtreme Programming (xp)eXtreme Programming (xp)
eXtreme Programming (xp)Renato Pina
 
Extreme programming (xp) - Resumo
Extreme programming (xp) - ResumoExtreme programming (xp) - Resumo
Extreme programming (xp) - ResumoDaniel Brandão
 

Mais procurados (20)

Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
 
Modelagem com historias bem além dos requisitos
Modelagem com historias bem além dos requisitosModelagem com historias bem além dos requisitos
Modelagem com historias bem além dos requisitos
 
Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
 
Papeis Ágeis - uma proposta operacional Scrum
Papeis Ágeis - uma proposta operacional ScrumPapeis Ágeis - uma proposta operacional Scrum
Papeis Ágeis - uma proposta operacional Scrum
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcp
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Plano de Projeto de Software do​ Residents Control
Plano de Projeto de Software do​ Residents ControlPlano de Projeto de Software do​ Residents Control
Plano de Projeto de Software do​ Residents Control
 
Aula03 04 agile_scrum_xp
Aula03 04 agile_scrum_xpAula03 04 agile_scrum_xp
Aula03 04 agile_scrum_xp
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Fundamentos Gestão de Escopo e Qualidade
Fundamentos Gestão de Escopo e QualidadeFundamentos Gestão de Escopo e Qualidade
Fundamentos Gestão de Escopo e Qualidade
 
Modelos de Processo de Software Parte 2
Modelos de Processo de Software Parte 2Modelos de Processo de Software Parte 2
Modelos de Processo de Software Parte 2
 
eXtreme Programming (xp)
eXtreme Programming (xp)eXtreme Programming (xp)
eXtreme Programming (xp)
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
 
eXtreme Programming (XP)
eXtreme Programming (XP)eXtreme Programming (XP)
eXtreme Programming (XP)
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Introdução ao Scrum
Introdução ao ScrumIntrodução ao Scrum
Introdução ao Scrum
 
Gestao de Projeto com gráfico burndown
Gestao de Projeto com gráfico burndownGestao de Projeto com gráfico burndown
Gestao de Projeto com gráfico burndown
 
Desenvolvimento ágil
Desenvolvimento ágilDesenvolvimento ágil
Desenvolvimento ágil
 
Extreme programming (xp) - Resumo
Extreme programming (xp) - ResumoExtreme programming (xp) - Resumo
Extreme programming (xp) - Resumo
 

Semelhante a Software Configuration Management Problemas e Soluções

Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)elliando dias
 
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Daniel Wildt
 
IC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesIC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesJefferson Moreira
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Giovanni Bassi
 
Prototipagem Em Papel
Prototipagem Em PapelPrototipagem Em Papel
Prototipagem Em Papelelliando dias
 
Resumo Do Inter 2008 2
Resumo Do Inter 2008 2Resumo Do Inter 2008 2
Resumo Do Inter 2008 2Raul Libório
 
Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento carlos Alberto
 
Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Rodrigo Kono
 
Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizadoselliando dias
 
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1GeneXus
 
(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programação(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programaçãoCarlos Santos
 
Software Rastreador de Movimentos
Software Rastreador de MovimentosSoftware Rastreador de Movimentos
Software Rastreador de MovimentosFreedom DayMS
 
Camada de Negócios de Verdade com Spring
Camada de Negócios de Verdade com SpringCamada de Negócios de Verdade com Spring
Camada de Negócios de Verdade com Springelliando dias
 
Qualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual StudioQualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual StudioAdriano Bertucci
 
SonarQube
SonarQubeSonarQube
SonarQubeCDS
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Leandro Silva
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkGiuseppe Lopes
 

Semelhante a Software Configuration Management Problemas e Soluções (20)

Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)
 
Cs 1
Cs 1Cs 1
Cs 1
 
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
 
IC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesIC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas Doentes
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)
 
Prototipagem Em Papel
Prototipagem Em PapelPrototipagem Em Papel
Prototipagem Em Papel
 
Scrum
ScrumScrum
Scrum
 
Resumo Do Inter 2008 2
Resumo Do Inter 2008 2Resumo Do Inter 2008 2
Resumo Do Inter 2008 2
 
Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento
 
Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3
 
Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizados
 
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1
 
(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programação(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programação
 
Software Rastreador de Movimentos
Software Rastreador de MovimentosSoftware Rastreador de Movimentos
Software Rastreador de Movimentos
 
Camada de Negócios de Verdade com Spring
Camada de Negócios de Verdade com SpringCamada de Negócios de Verdade com Spring
Camada de Negócios de Verdade com Spring
 
Qualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual StudioQualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual Studio
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012
 
Palestra Gerenciamento de Projetos com Scrum e MPS.Br
Palestra Gerenciamento de Projetos com Scrum e MPS.BrPalestra Gerenciamento de Projetos com Scrum e MPS.Br
Palestra Gerenciamento de Projetos com Scrum e MPS.Br
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do framework
 

Mais de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Mais de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Software Configuration Management Problemas e Soluções

  • 1. Software Configuration Management Problemas e Soluções Ryan Leite Albuquerque
  • 2. ROTEIRO 1. 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; SCM slide 2 de 39
  • 3. 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; SCM slide 3 de 39
  • 4. 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. SCM slide 4 de 39
  • 5. Problemas 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! SCM slide 5 de 39
  • 6. Problemas 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); SCM slide 6 de 39
  • 7. Problemas 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; SCM slide 7 de 39
  • 8. Problemas 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; SCM slide 8 de 39
  • 9. Soluçõ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, ...; SCM slide 9 de 39
  • 10. Soluçõ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; SCM slide 10 de 39
  • 11. Soluçõ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; SCM slide 11 de 39
  • 12. Problemas 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! SCM slide 12 de 39
  • 13. Problemas 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; SCM slide 13 de 39
  • 14. Problemas 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... SCM slide 14 de 39
  • 15. Problemas 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; SCM slide 15 de 39
  • 16. Problemas 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; SCM slide 16 de 39
  • 17. Problemas 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? SCM slide 17 de 39
  • 18. Problemas não tão Clássicos • Branches e Merges As alterações não podem ser incluídas ao mesmo tempo. SCM slide 18 de 39
  • 19. Problemas não tão Clássicos • Branches e Merges As alterações precisam ser incluídas ao mesmo tempo. SCM slide 19 de 39
  • 20. Problemas 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; SCM slide 20 de 39
  • 21. Problemas 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; SCM slide 21 de 39
  • 22. Problemas 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 Teste Casos de Uso Código Revisões Mudanças SCM slide 22 de 39
  • 23. Problemas 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? SCM slide 23 de 39
  • 24. Problemas 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); SCM slide 24 de 39
  • 25. Problemas 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); SCM slide 25 de 39
  • 26. Problemas 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; SCM slide 26 de 39
  • 27. Processos • 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; SCM slide 27 de 39
  • 28. Processos • 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); SCM slide 28 de 39
  • 29. Ferramentas • 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; SCM slide 29 de 39
  • 30. Ferramentas • Controle de Versão Sem controle de versão Controle SVN like Controle CVS like SCM slide 30 de 39
  • 31. Ferramentas • Controle de Versão SCM slide 31 de 39
  • 32. Ferramentas • 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; SCM slide 32 de 39
  • 33. Ferramentas • Controle de Versão (outras opções) – Open source: • GIT, Mercurial, Arch, Monotone, ... – Comerciais: • Rational Clearcase; • IBM Starteam; • Visual Source Safe; • Perforce; • ... SCM slide 33 de 39
  • 34. Ferramentas • 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; SCM slide 34 de 39
  • 35. Ferramentas • Controle de Mudanças SCM slide 35 de 39
  • 36. Ferramentas • 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; SCM slide 36 de 39
  • 37. Ferramentas • 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; SCM slide 37 de 39
  • 38. Outras 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; SCM slide 38 de 39
  • 39. Ryan Leite Albuquerque [ ryan@cesar.org.br ] 81 8727.4111