integração contínua

29
 Integração Contínua Integração Contínua As possibilidades da automatização As possibilidades da automatização Victor Hugo Germano Victor Hugo Germano

Upload: guesta433a8

Post on 18-Dec-2014

1.963 views

Category:

Technology


1 download

DESCRIPTION

Os beneficios da automatização. Victor Hugo Germano apresenta sua visão do processo IC para projetos em java. Na apresentação são listados inúmeras ferramentas que se integram, garantindo uma melhor qualidade de software.

TRANSCRIPT

Page 1: Integração Contínua

   

Integração ContínuaIntegração ContínuaAs possibilidades da automatizaçãoAs possibilidades da automatização

Victor Hugo GermanoVictor Hugo Germano

Page 2: Integração Contínua

   

Eu? Quem?Eu? Quem?

Victor Hugo GermanoVictor Hugo Germano

● Ciência da Computação – UFSCCiência da Computação – UFSC● Gestão Estratégica de TI – UNIVALIGestão Estratégica de TI – UNIVALI● Audaces Automação IndustrialAudaces Automação Industrial● Colunista da Revista Visão ÁgilColunista da Revista Visão Ágil● Autor: A Maldita ComédiaAutor: A Maldita Comédia● Coding Dojo FloripaCoding Dojo Floripa

http://malditacomedia.blogspot.com

Page 3: Integração Contínua

   

AgendaAgenda

●  MitosMitos●  PrincípiosPrincípios●  O Processo de ICO Processo de IC●  Controle de VersãoControle de Versão●  TestesTestes●  InspeçãoInspeção●  ServidoresServidores●  FeedbackFeedback●  DesafioDesafio

http://malditacomedia.blogspot.com

Page 4: Integração Contínua

   

Def

iniç

ão d

e re

quis

itos

Aná

lise 

e D

esig

n

Des

envo

lvim

ento

Tes

te/C

orre

ção

Tempo

Page 5: Integração Contínua

   

Integração de SoftwareIntegração de Software

““No final é só juntar tudo e liberar No final é só juntar tudo e liberar uma versão”uma versão”

Subestimado por:Subestimado por:

●  GerentesGerentes

●  Desenvolvedores Desenvolvedores 

●  ClientesClientes

E a realidade?E a realidade?

http://malditacomedia.blogspot.com

Page 6: Integração Contínua

   

Integração de SoftwareIntegração de Software

●  Riscos são subestimadosRiscos são subestimados

●  Dependências de subsistemasDependências de subsistemas

●  Interpretação errada de requisitos Interpretação errada de requisitos 

●  Incompatibilidade entre interfacesIncompatibilidade entre interfaces

●  Testes demoram demaisTestes demoram demais

●  Correções demoram mais aindaCorreções demoram mais ainda

●  Atrasos tornam­se comunsAtrasos tornam­se comuns

●  O caos está instaladoO caos está instalado

http://malditacomedia.blogspot.com

Page 7: Integração Contínua

   

ComunicaçãoComunicação

http://malditacomedia.blogspot.com

Page 8: Integração Contínua

   

Velocidade + Qualidade + Feedback = Valor de NegócioVelocidade + Qualidade + Feedback = Valor de Negócio

Para o Cliente:Para o Cliente:

●  Resultados rápidosResultados rápidos

●  Aderência a regras de negócioAderência a regras de negócio

●  Funcionamento correto da aplicaçãoFuncionamento correto da aplicação

●  Satisfação Satisfação 

http://malditacomedia.blogspot.com

Page 9: Integração Contínua

   

Princípios ÁgeisPrincípios Ágeis

Agile Manifesto Principles

●  Satisfação do ClienteSatisfação do Cliente como prioridade máxima, através da  como prioridade máxima, através da 

entrega contínua de valor agregadoentrega contínua de valor agregado

●  A principal medida de progresso é A principal medida de progresso é software funcionandosoftware funcionando

●  Grupos interdisciplinares trabalham em conjunto com o cliente Grupos interdisciplinares trabalham em conjunto com o cliente 

para o sucesso do projetopara o sucesso do projeto

●  Equipes autogerenciáveis, indivíduos motivados, comunicação Equipes autogerenciáveis, indivíduos motivados, comunicação 

e simplicidade são valores importantese simplicidade são valores importantes

●  Melhoria Contínua para maximizar a produtividade e Melhoria Contínua para maximizar a produtividade e 

excelência da equipeexcelência da equipe

http://malditacomedia.blogspot.com

Page 10: Integração Contínua

   

Integração Contínua?Integração Contínua?

●   Desenvolvedores sincronizam códigos produzidos ao menos Desenvolvedores sincronizam códigos produzidos ao menos 

uma vez ao diauma vez ao dia

●   Testes garantem a consistência da base de código unificadaTestes garantem a consistência da base de código unificada

●   Métricas são aferidasMétricas são aferidas

●   Relatórios geradosRelatórios gerados

●   Uma versão compilada, testada e pronta para uso é criadaUma versão compilada, testada e pronta para uso é criada

●   Qualquer problema na construção da versão possuí Qualquer problema na construção da versão possuí 

prioridade máximaprioridade máxima

●   O código é constantemente revisado em busca de melhoriasO código é constantemente revisado em busca de melhorias

Paul Duval – Continuous Integration, 2007

Page 11: Integração Contínua

   

O ProcessoO Processo

http://malditacomedia.blogspot.com

Page 12: Integração Contínua

   

ObjetivosObjetivos

●  Redução de RiscosRedução de Riscos

●  Automatização de processos repetitivosAutomatização de processos repetitivos

●  Gerar Software funcionandoGerar Software funcionando

●  Ampliar a confiança no produtoAmpliar a confiança no produto

●  Ampliar a visibilidade do projetoAmpliar a visibilidade do projeto

http://malditacomedia.blogspot.com

Page 13: Integração Contínua

   

Elementos do ProcessoElementos do Processo

Page 14: Integração Contínua

   

Controle de VersãoControle de Versão

http://malditacomedia.blogspot.com

Ainda existem empresas sem controle de versão!!!Ainda existem empresas sem controle de versão!!!

●  CVSCVS●  SubversionSubversion●  SVKSVK●  MercurialMercurial●  BazaarBazaar●  MonotoneMonotone

Page 15: Integração Contínua

   

Testes AutomatizadosTestes Automatizados

““Desenvolver software sem testes automatizados é irresponsabilidade profissional”Desenvolver software sem testes automatizados é irresponsabilidade profissional”Bob Martin, 2008Bob Martin, 2008

http://malditacomedia.blogspot.com

Page 16: Integração Contínua

   

JunitJunit

 <junit fork="yes" printsummary="no" haltonfailure="no">   <batchtest fork="yes" todir="${reports.test}">        <fileset dir="${classesDir}">  

      <include name="**/*Test.class" />        </fileset>   </batchtest>   <formatter type="xml" />      <classpath refid="classpath.test" /> </junit> <junitreport todir="${reports.test}">      <fileset dir="${reports.test}"> 

<include name="TEST­*.xml" />      </fileset>      <report todir="${reports.test}" /> </junitreport>

Page 17: Integração Contínua

   

SeleniumSelenium

●Grava NavegaçãoGrava Navegação

●Simples de UsarSimples de Usar

●Integração com FirefoxIntegração com Firefox

Page 18: Integração Contínua

   

FitnesseFitnesse Wiki para Testes de AceitaçãoWiki para Testes de Aceitação

Page 19: Integração Contínua

   

Teste!! Teste!! Teste!!Teste!! Teste!! Teste!!

●  JMeterJMeter

●  HttpUnitHttpUnit

●  SQLUnitSQLUnit

●  Ejb3UnitEjb3Unit

●  DBUnitDBUnit

●  dbMonsterdbMonster

http://java­source.net/open­source/testing­toolshttp://java­source.net/open­source/testing­tools

Page 20: Integração Contínua

   

Auditoria de códigoAuditoria de código

Page 21: Integração Contínua

   

FindbugsFindbugs

Page 22: Integração Contínua

   

CheckstyleCheckstyle

Padronização:Padronização:

●  Convenções de nomenclaturaConvenções de nomenclatura

●  Tamanho de métodosTamanho de métodos

●  Notação Javadoc Notação Javadoc 

●  Duplicação de CódigoDuplicação de Código

●  Complexidade de branchesComplexidade de branches

Page 23: Integração Contínua

   

Quantas linhas de código são exercitadas por testes automatizados?Quantas linhas de código são exercitadas por testes automatizados?

Page 24: Integração Contínua

   

PMDPMD

●  Possíveis Bugs – blocos try/catch/finally/switch vaziosPossíveis Bugs – blocos try/catch/finally/switch vazios●  Dead code – variáveis, parametros e métodos não utilizadosDead code – variáveis, parametros e métodos não utilizados●  Expressões muito complexas – blocos if desnecessários para Expressões muito complexas – blocos if desnecessários para laços for que poderiam ser laços whilelaços for que poderiam ser laços while●  Customização de regras:Customização de regras:

Um grande número de métodos públicos e atributos declarados em uma Um grande número de métodos públicos e atributos declarados em uma classe pode significar que a classe precisa ser quebrada já que um esforço classe pode significar que a classe precisa ser quebrada já que um esforço mais será necessário para testá­la.mais será necessário para testá­la.

Page 25: Integração Contínua

   

E como juntar tudo isso??E como juntar tudo isso??

Page 26: Integração Contínua

   

Servidores de BuildServidores de Build

Page 27: Integração Contínua

   

Topa um desafio?Topa um desafio?

Reduza o tempo de criação de uma versão!Reduza o tempo de criação de uma versão!

●  Testes unitários realizados Testes unitários realizados 

●  Documentações geradasDocumentações geradas

●  Métricas de qualidade aferidasMétricas de qualidade aferidas

●  Script de banco de dados adequado Script de banco de dados adequado 

●  Testes de integração realizadosTestes de integração realizados

Page 28: Integração Contínua

   

Obrigado!Obrigado!

http://malditacomedia.blogspot.comhttp://[email protected]@gmail.com

Page 29: Integração Contínua

   

Dúvidas?Dúvidas?