1) O documento discute integração contínua, incluindo testes, controle de versão e processos de integração.
2) A integração contínua consiste em integrar o trabalho diversas vezes ao dia para manter a base de código consistente.
3) Ferramentas como Hudson, Cruise Control e Jenkins podem automatizar o processo de integração contínua.
2. Quem sou eu
• Jefferson Moreira - www.jeffmor.com
• Ciência da Computação / Engenharia de
Software OO
• Desenvolvedor e Coordenador Qualidade de
Software da Agence Consultoria.
• Desenvolvedor desde 2002 (PHP, Delphi, C++)
• Com Java desde 2003
• Instrutor do SENAC
• Coordenador do JUG-MS
3. Objetivo
Gerar Software funcionando :D
•
Confiança no produto
•
Diagnosticar problemas
•
Verificar a qualidade do Software.
•
Redução de Riscos
•
Automatização de processos repetitivos
•
Prática dos conceitos.
•
4. Agenda
• Histórico
Mitos
•
Testes
•
Controle de Versão
•
Processo de Integração Contínua
•
Servidores
•
Inspeção e Práticas
•
Feedback
•
6. Histórico – 80
• Anos 80 - década da “caverna”
• Ausência de metodologias de
desenvolvimento[9]
• Programação procedural e estruturada. [9]
• Dificuldade de simular relações entre
entidades em processos de negócios. [9]
8. Histórico – 90[9]
Linguagem UML.
•
Processos Unificados (UP).
•
Metodologias Orientadas a Objetos.
•
Fases bem definidas e controladas.
•
“Igual” a Engenharia Civil.
•
Concepção, Elaboração, Construção e
•
Transição.
9. Processo Unificado[9]
Código complexo.
•
Manutenção difícil.
•
Baixa produtividade.
•
Cronograma sempre atrasado.
•
Insatisfação de todos.
•
Documentação defasada, excessiva e
•
ilegível.
• Fracasso no projeto.
10. Metodologia Ágil [1]
• Satisfação do Cliente como prioridade máxima,
através da entrega contínua de valor agregado
• A principal medida de progresso é software
funcionando
• Equipes auto-gerenciáveis, indivíduos motivados,
comunicação e simplicidade são valores
importantes
• Melhoria Contínua para maximizar a
produtividade e excelência da equipe
11. Agenda
• Histórico
• Mitos
Testes
•
Controle de Versão
•
Integração Contínua
•
Servidores
•
Inspeção e Práticas
•
Feedback
•
13. Bombeiros?
• Será que desenvolvedores tem que ficar
sempre apagando incêndios?
• Será que não estamos desrespeitando os
nossos sistemas com essa atitute?
14.
15. Sistemas Doentes
• Já viu algum sistema “doente”?
• Alguns sistemas são muito dodóis
• Já viu algum sistema ser infectado por
algum vírus (Desenvolvedor)?
24. A verdade!
Repleto de Best Practices
•
Muito se fala
•
Raramente se faz
•
Casos de teste sempre são deixados para
•
depois
• Quanto mais pressão você sofre, menos
testes você escreve.
25. Agenda
• Histórico
• Mitos
• Testes
Controle de Versão
•
Integração Contínua
•
Servidores
•
Inspeção e Práticas
•
Feedback
•
26. Testes
• Essencial para análise de desempenho
• Aumento de produtividade dos
desenvolvedores
• Essencial para refactoring
27. Ferramentas de teste
• JUnit
• Selenium, httpUnit, WebDriver (aplicações
web)
• Cactus (aplicações EJB)
• jemmy e Abbot (aplicações Desktop)
28. Agenda
• Histórico
• Mitos
• Testes
• Controle de Versão
Integração Contínua
•
Servidores
•
Inspeção e Práticas
•
Feedback
•
29. Controle de Versão
CVS
•
Subversion
•
ClearCase
•
Perforce
•
StarTeam
•
Git
•
PVCS, VSS e MKS e etc...
•
30. Agenda
Histórico
•
Mitos
•
Testes
•
Controle de Versão
•
• Integração Contínua
• Servidores
• Inspeção e Práticas
• Feedback
31. Integração Contínua
• Integração contínua consiste em
integrar o trabalho diversas vezes ao dia,
assegurando que a base de código
permaneça consistente ao final de cada
integração.
35. Servidores
Hudson
•
Cruise Control
•
Continuum
•
Luntbuild
•
Anthill
•
Pulse
•
Build Forge
•
Damage Control
•
Team City
•
Gump
•
36. [5 ]
• Disponibilizado como Open Source pela
ThoughtWorks
• Implementado em Java
• Administração Desktop
• Interface um pouco confusa.
• Suporte a Java apenas, mas com uma
versão dedicada a .NET
37. [5 ]
• Open Source desenvolvido pela Apache
Fundation
• Desenvolvido em Java
• Administração via WEB
• Suporte nativo a ANT, Maven 1 e 2 e Shell Script
para outras linguagens
38. • Disponibilizado como Open Source pela
Sun.
• Facilidade de instalação e utilização.
• Muitos plugins.
• Suporte 8 idiomas inclusive o Português.
39. Agenda
Histórico
•
Mitos
•
Testes
•
Controle de Versão
•
Integração Contínua
•
Servidores
•
• Inspeção e Prática
• Feedback
43. Feedback
• Difícil enxergar se você é o único
desenvolvedor da equipe.
• Fundamental para testar.
• A grande maioria dos bugs se manifestam
já no mesmo dia em que são comitados.
• Aumento de produtividade.
• Métricas de qualidade aferidas.
• Paciente tratado!
44. Referências
[1]http://w w w .m a rtinfo w ler.c om /a rtic les /c ontinuous I nteg ra tio
n.htm l
[2]http://w w w .im pro veit.c om .br/x p/pra tic a s /integ ra c a o
[3]http://w w w .ja m es s hore.c o m /B lo g /C ontinuous -I nteg ra tion-
on-a -D olla r-a -D a y.htm l
[4]http://ja yflow ers .c o m /jo om la /index .php? optio n=c om _c onten
t& ta s k =view & id=26
[5]http://blog .uruba ta n.c om .br
[6]http://rfium e.blog s pot.c om /2007/03/tes tes -de-a c eita o -em -
a plic a es -s w ing .htm l
[7] J a va M a g a zine – C ons truç ã o e T es tes A uto m a tiza dos . A no
4 E diç ã o 62
[8]http://w w w -
128.ibm .c om /developerw ork s /ra tiona l/libra ry/s ep05/lee/
[9]http://w w w .m ilfont.org
[10]http://m a ldita c o m edia .blog s po t.c om
47. Licença
Este material está licenciado sob a Licença Creative-Commons
•
Atribuição-Uso Não-Comercial-Compartilhamento pela
mesma Licença 2.5 Brasil
Você pode:
•
– Copiar, distribuir, exibir e executar a obra
– Criar obras derivadas
Sob as seguintes condições:
•
– Atribuição. Você deve dar crédito ao autor original, da forma especificada
pelo autor ou licenciante.
– Uso Não-Comercial. Você não pode utilizar esta obra com finalidades
comerciais.
– Compartilhamento pela mesma Licença. Se você alterar, transformar,
ou criar outra obra com base nesta, você somente poderá distribuir a obra
resultante sob uma licença idêntica a esta.