If you can't read please download the document
Upload
igo-coelho
View
354
Download
0
Embed Size (px)
DESCRIPTION
Slides da parte onde falei um pouco de algumas práticas no curso ágil na prática ministrado em Salvador no ano de 2009.
Citation preview
GIL na PRTICA
Igo Coelho www.igocoelho.com.br
Uma pesquisa do Departamento de Comrcio dos EUA, publicada em 2002, revelou que falhas de software so to comuns e to danosas que se estima que causem um prejuzo anual de mais de 60 bilhes de dlares para a economia americana. O estudo tambm alega que, embora no seja possvel remover todos os erros, mais de um tero destes custos poderia ser eliminado caso se utilizasse uma infra-estrutura de testes melhor, que permitisse identificar e remover defeitos mais cedo e de forma mais eficaz. Atualmente, calcula-se que cerca de 50% dos defeitos so encontrados apenas nas fases finais dos projetos, ou aps os sistemas comearem a ser utilizados em produo.
Testes
Igo Coelho www.igocoelho.com.br
Escreva o teste da implementao ANTES de escrev-la
Escreva somente cdigo suficiente para o teste passar e nada alm disso
Escreva testes pequenos: teste a menor quantidade possvel de cdigo de cada vez
Escreva testes muito rpidos: no devem demorar mais do que alguns segundos para serem executados
TDD
Regras fundamentais do TDD
Igo Coelho www.igocoelho.com.br
Criar um teste
Executar todos os testes da aplicao para ver o teste falhar
Escrever a implementao testada
Executar os testes para ver se todos esto OK
Refactoring
Executar os testes novamente para ver se eles continuam passando
TDD
Etapas da programao com TDD
Igo Coelho www.igocoelho.com.br
TDD
Design
Implementao
Teste
Igo Coelho www.igocoelho.com.br
TDD
Design
Implementao
Teste
Igo Coelho www.igocoelho.com.br
TDD
Design
Implementao
Teste
Teste
Igo Coelho www.igocoelho.com.br
TDD
Design
Implementao
Teste
Teste
Igo Coelho www.igocoelho.com.br
TDD
Igo Coelho www.igocoelho.com.br
TDD
Igo Coelho www.igocoelho.com.br
TDD
Igo Coelho www.igocoelho.com.br
TDD
Igo Coelho www.igocoelho.com.br
TDD
Igo Coelho www.igocoelho.com.br
TDD
Igo Coelho www.igocoelho.com.br
TDD
Igo Coelho www.igocoelho.com.br
TDD
Igo Coelho www.igocoelho.com.br
TDD
Igo Coelho www.igocoelho.com.br
Cdigo mais testvelEstimula um design melhor
Fora que os designs antigos que so pouco testveis sejam refatorados
Facilita o refactoring
Evita o overdesignS se escreve cdigo suficiente para o teste passar
Evita que o desenvolvedor tente advinhar o futuo
Colabora com a documentao
TDD
Consequncias:
Igo Coelho www.igocoelho.com.br
Colabora para o aumento da qualidade dos sistemas
Desenvolvedores ficam mais corajosos e confiantes ao programar!
Software cresce de forma ordenada e com qualidade de design
Software se adapta com mais facilidade a mudanas
TDD
Concluses:
No incio, trabalhar com TDD pode parecer um pouco doloroso, pois temos que fazer o inverso do que estamos acostumados. Mas, como em todo aprendizado, a dificuldade vem apenas no comeo e nos tornamos melhores medida que praticamos. Pelos problemas que foram descritos no incio e o impacto negativo que eles trazem para ns, para nossa indstria e nossos clientes, o esforo certamente vlido!
Igo Coelho www.igocoelho.com.br
Assegure que seja possvel executar o build e todos os testes automatizados do projeto em at dez minutos. Builds automatizados so importantes porque fazem a equipe ganhar tempo e garantem que os passos sejam consistentemente seguidos sempre que so executados.
Build de 10 minutos
Igo Coelho www.igocoelho.com.br
Se o build demora demais...
Build de 10 minutos
A equipe deixar de execut-lo frequentemente
Menos feedback
Erros tendem a se acumular
Aumento do stress da equipe
Igo Coelho www.igocoelho.com.br
Mantenha o build rpido para...
Build de 10 minutos
Garantir a consistncia dos passos
Testes ajudam a detectar falhas mais cedo
Diminuir o stress da equipe
Igo Coelho www.igocoelho.com.br
Para algumas equipes o build de dez minutos pode parecer algo distante da realidade. Nesses casos, dez minutos devem ser vistos como um ideal.
Quando a equipe possui uma boa base de testes automatizados, um dos maiores desafios assegurar que eles executem de forma suficientemente rpida para que o ideal de um build de dez minutos seja alcanado.
Build de 10 minutos
Igo Coelho www.igocoelho.com.br
o processo de alterao de um sistema de software de modo que o comportamento observvel do cdigo no mude, mas que sua estrutura interna seja melhorada. uma maneira disciplinada de aperfeioar o cdigo que minimiza a chance de introduo de falhas. Em essncia, refatorar melhorar o projeto do cdigo aps este ter sido escrito. [Fowler, Refatoraco]
Refatorao
Igo Coelho www.igocoelho.com.br
Refatorao
Igo Coelho www.igocoelho.com.br
Refatorao
/** Salva o produto no banco de dados. */public void save() {// Verifica propriedadesif (this.getName() == null) {throw new Exception("Falta nome");} else if (this.getDescription() == null) {throw new Exception("Falta a descrio");}
this.getDatabase().save(this);}
/** Salva o produto no banco de dados. */public void save() {this.checkProperties();this.getDatabase().save(this);}
/** Verifica as propriedades do produto. */public void checkProperties() {if (this.getName() == null) {throw new Exception("Falta nome do produto.");} else if (this.getDescription() == null) {throw new Exception("Falta a descrio do produto.");}}
Igo Coelho www.igocoelho.com.br
Refatorao
Kent Beck, um dos criadores da Programao Extrema, afirma que refatorao deve ser utilizada quando o "cdigo cheirar mal" (do ingls bad smells in code). Este conselho bem humorado indica uma confiana na experincia de programadores e tambm ressalta o valor esttico do cdigo, que deve valorizar a clareza e comunicao.
Igo Coelho www.igocoelho.com.br
Refatorao
Alguns indcios j possuem uma aceitao ampla para promover refatorao:
Cdigo duplicado (duplicated code)
Mtodo longo (long method)
Classe grande (large class)
Lista de parmetros longa (long parameter list)
M indentao(Bad Indentation)
Igo Coelho www.igocoelho.com.br
Design Incremental
O objetivo criar a soluo mais simples possvel que seja suficiente para implementar as funcionalidades de cada iterao. Qualquer caracterstica que possa ser implementada para dar apoio a funcionalidades futuras, s so codificadas de fato se e quando tais funcionalidades forem priorizadas para uma iterao futura.
Igo Coelho www.igocoelho.com.br
Design Incremental
Devemos buscar concentrar os esforos da equipe naquilo que se tem certeza absoluta de que ser necessrio hoje, por j ter sido priorizado pelo cliente para a iterao corrente. Aquilo que poderia ser til no futuro, deixamos para resolver no futuro, quando houver certeza da necessidade.
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Definio de requisitos
Anlise / Design
Codificao
Testes
Integrao
Tempo
Entrega
Igo Coelho www.igocoelho.com.br
Integrao Contnua
ltimo estgio do desenvolvimento
Testar apenas com o software pronto
Funcionou na minha mquina!
Qualidade um asset dispensvel
Qualidade responsabilidade do QA Team
O Mercado pode esperar
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Riscos so subestimados
Interpretao errada de requisitos
Incompatibilidade entre interfaces
Muitos bugs na fase de integrao
Qualidade responsabilidade do QA Team
Testes demoram demais
Atraso na entrega
A realidade...
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Como?Reduzir riscos
Responder rpido as mudanas
Reduzir custos
E se ns pudssemos reunir...Velocidade
Qualidade
Informaes para tomada de decises
Desafios para competir no mercado:
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Definio de requisitos
Anlise / Design
Codificao / Teste
Integrao
Ciclos de desenvolvimento
Entrega
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Integrao Contnua uma prtica de desenvolvimento de software em que membros de um time integram seu trabalho frequentemente, normalmente cada membro faz integraesdiariamente, conduzindo a multiplas integraes dirias. Cada integrao verificada por um build automtico (incluindo testes) para detectar erros o mais rpido possvel.
Martin Fowler
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Sincronizao do cdigo produzido ao menos uma vez ao dia
Testes garantem a consistncia da base de cdigo unificada
Relatrios de qualidade gerados automaticamente
Problemas na construo do software tem prioridade mxima
Facilmente possvel saber a sade do projeto
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Construo
Teste
Inspeo
Feedback
Elementos do processo:
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Automao:Ant
NAnt
Maven
Rake
Make
...
Controle de verso:CVS
Subversion
GIT
Mercurial
...
Construo:
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Testes:
JUnit
PHPUnit
DUnit
Test Unit para Rails
Selenium
WebTest
Fit / Fitnesse
...
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Inspeo:
Anlise Esttica:PMD
FindBugs
...
Complexidade / Dependncias:SourceMonitor
JDepend
JavaNCSS
...
Duplicao de Cdigo:CPD
Simian
...
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Feedback:
Igo Coelho www.igocoelho.com.br
Integrao Contnua
Alguns servidores:
Hudson
CruiseControl
AntHill
Continuum
TeamCity
Bamboo
Luntbuild
...