integração contínua
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
Integração ContínuaIntegração ContínuaAs possibilidades da automatizaçãoAs possibilidades da automatização
Victor Hugo GermanoVictor Hugo Germano
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
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
Def
iniç
ão d
e re
quis
itos
Aná
lise
e D
esig
n
Des
envo
lvim
ento
Tes
te/C
orre
ção
Tempo
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
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 tornamse comunsAtrasos tornamse comuns
● O caos está instaladoO caos está instalado
http://malditacomedia.blogspot.com
ComunicaçãoComunicação
http://malditacomedia.blogspot.com
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
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
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
O ProcessoO Processo
http://malditacomedia.blogspot.com
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
Elementos do ProcessoElementos do Processo
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
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
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>
SeleniumSelenium
●Grava NavegaçãoGrava Navegação
●Simples de UsarSimples de Usar
●Integração com FirefoxIntegração com Firefox
FitnesseFitnesse Wiki para Testes de AceitaçãoWiki para Testes de Aceitação
Teste!! Teste!! Teste!!Teste!! Teste!! Teste!!
● JMeterJMeter
● HttpUnitHttpUnit
● SQLUnitSQLUnit
● Ejb3UnitEjb3Unit
● DBUnitDBUnit
● dbMonsterdbMonster
http://javasource.net/opensource/testingtoolshttp://javasource.net/opensource/testingtools
Auditoria de códigoAuditoria de código
FindbugsFindbugs
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
Quantas linhas de código são exercitadas por testes automatizados?Quantas linhas de código são exercitadas por testes automatizados?
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.
E como juntar tudo isso??E como juntar tudo isso??
Servidores de BuildServidores de Build
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
Dúvidas?Dúvidas?