Introdução ao TDD (Test-Driven Development) - #guma10anos
Métodos Ágeis para Desenvolvimento de Software Livre
1. Métodos Ágeis paraMétodos Ágeis para
Desenvolvimento deDesenvolvimento de
Software LivreSoftware Livre
Dionatan Moura
Jamile Alves
Porto Alegre, 09 de julho de 2015
5. Manifesto ÁgilManifesto Ágil
ValoresValores
● Indivíduos e interações
mais que processos e ferramentas
● Software em funcionamento
mais que documentação abrangente
● Colaboração com o cliente
mais que negociação de contratos
● Responder a mudanças
mais que seguir um plano
http://www.agilemanifesto.org
6. Manifesto ÁgilManifesto Ágil
PrincípiosPrincípios
● Nossa maior prioridade é satisfazer o cliente através
da entrega contínua e adiantada de software com
valor agregado.
● Mudanças nos requisitos são bem-vindas, mesmo
tardiamente no desenvolvimento. Processos ágeis tiram
vantagem das mudanças visando vantagem competitiva
para o cliente.
● Entregar frequentemente software funcionando, de
poucas semanas a poucos meses, com preferência à
menor escala de tempo.
http://www.agilemanifesto.org
7. Manifesto ÁgilManifesto Ágil
PrincípiosPrincípios
● Pessoas de negócio e desenvolvedores devem trabalhar
diariamente em conjunto por todo o projeto.
● Construa projetos em torno de indivíduos motivados.
Dê a eles o ambiente e o suporte necessário e confie
neles para fazer o trabalho.
● O método mais eficiente e eficaz de transmitir
informações para e entre uma equipe de
desenvolvimento é através de conversa face a face.
● Software funcionando é a medida primária de
progresso.
http://www.agilemanifesto.org
8. Manifesto ÁgilManifesto Ágil
PrincípiosPrincípios
● Os processos ágeis promovem desenvolvimento
sustentável. Os patrocinadores, desenvolvedores e
usuários devem ser capazes de manter um ritmo
constante indefinidamente.
● Contínua atenção à excelência técnica e bom design
aumenta a agilidade.
● Simplicidade--a arte de maximizar a quantidade de
trabalho não realizado--é essencial.
http://www.agilemanifesto.org
9. Manifesto ÁgilManifesto Ágil
PrincípiosPrincípios
● As melhores arquiteturas, requisitos e designs
emergem de equipes auto-organizáveis.
● Em intervalos regulares, a equipe reflete sobre como
se tornar mais eficaz e então refina e ajusta seu
comportamento de acordo.
http://www.agilemanifesto.org
13. Lean Software DevelopmentLean Software Development
Mas o que é valor em software livre?
http://www.fsf.org/working-together/gang
14. Trabalho x ValorTrabalho x Valor
Trabalho com
desperdício oculto
Trabalho com
valor agregado
Trabalho com
desperdício evidente
15. ● Sete Princípios
● Eliminar desperdícios
● Incluir a qualidade no processo
● Amplificar aprendizado
● Decidir tão tarde quanto possível
● Entregar rápido
● Empoderar o time
● Ver o todo
Lean Software DevelopmentLean Software Development
16. ● Desperdícios
● Trabalho incompleto (estoque)
● Funcionalidades extras (superprodução)
● Reaprendizado
● Processos extras (superprocessamento)
● Troca de Tarefas
● Espera
● Defeito
Lean Software DevelopmentLean Software Development
22. <Título>
Como um <papel de usuário>
Eu quero <objetivo>
Para que <razão de negócio>
Extreme ProgrammingExtreme Programming
Histórias de UsuárioHistórias de Usuário
23. Critério de Aceitação X
Dado que <pré-condição A>
E <pré-condição B>
Quando <ação>
Então <resultado>
Extreme ProgrammingExtreme Programming
Critérios de AceitaçãoCritérios de Aceitação
29. RegrasRegras
I. Escrever novo código somente se já existir um
teste automatizado falhando
II. Eliminar duplicação
Extreme ProgrammingExtreme Programming
TDD – Desenvolvimento Guiado por TestesTDD – Desenvolvimento Guiado por Testes
30. Escreva um teste
para o próximo
pedaço da
funcionalidade.
3 Passos
Escreva código
funcional até o
teste passar.
Refatore o código
novo (e antigo)
até ficar bem
estruturado.
http://www.pro-tools-expert.com
Extreme ProgrammingExtreme Programming
TDD – Desenvolvimento Guiado por TestesTDD – Desenvolvimento Guiado por Testes
33. http://www.in2it.be
Ferramenta de gerência
de configuração
Time de
desenvolvimento
Stakeholders
Integração
contínua
Ambiente de
homologação
Ambiente de
produção
Monitoramento
contínuo
Extreme ProgrammingExtreme Programming
Integração ContínuaIntegração Contínua
42. Métodos Ágeis paraMétodos Ágeis para
Desenvolvimento de Software LivreDesenvolvimento de Software Livre
Dionatan Moura
Jamile Alves
Porto Alegre, 09 de julho de 2015
Dionatan Moura
● @dionatanmoura
● www.dionatanmoura.com
Jamile Alves
● @jsmalves
Slides
http://www.slideshare.net/dionatanmoura