Mais conteúdo relacionado Semelhante a Cp2011 python agil-ramiroluz (20) Mais de Campus Party Brasil (20) Cp2011 python agil-ramiroluz1. Python Ágil - Campus Party - 2011.
Apresentação
• Python Ágil - Campus Party - 2011
• Ramiro Batista da Luz - ramiroluz@gmail.com
• Twitter: @ramiroluz
• http://www.slideshare.net/ramiroluz/python-agil
• Códigos exemplo: http://www.ramiroluz.eti.br/python-agil/ e
http://www.python.org.br/wiki/PythonAgil
© Ramiro Batista da Luz, 2010.
2. Python Ágil - Campus Party - 2011.
O que é agilidade?
Capacidade de mudar de direção rapidamente.
Habilidade de adaptar-se a mudanças com eficiência.
© Ramiro Batista da Luz, 2010.
3. Python Ágil - Campus Party - 2011.
O que é desenvolvimento ágil?
Metodologia de desenvolvimento.
Alta participação do(s) cliente(s).
Adaptação rápida à mudanças.
Software funcional entregue com grande freqüência.
© Ramiro Batista da Luz, 2010.
4. Python Ágil - Campus Party - 2011.
Por que Python ágil?
Fácil de adaptar.
Muitas bibliotecas fáceis de aprender.
Fácil de entender e aprender.
© Ramiro Batista da Luz, 2010.
5. Python Ágil - Campus Party - 2011.
XGH - eXtreme Go Horse
http://gohorseprocess.wordpress.com/extreme-go-horse-xgh/
1. Pensou, não é XGH.
2. Existem 3 formas de se resolver um problema, a correta, a errada e
a XGH, que é igual à errada, só que mais rápida.
3. Quanto mais XGH você faz, mais precisará fazer.
4. XGH é totalmente reativo.
© Ramiro Batista da Luz, 2010.
6. Python Ágil - Campus Party - 2011.
TDD - Test Driven Development(1)
http://pt.wikipedia.org/wiki/Test_Driven_Development
• Adicione um teste
• Execute todos os testes e veja se algum deles falha
• Escrever código
© Ramiro Batista da Luz, 2010.
7. Python Ágil - Campus Party - 2011.
TDD - Test Driven Development(2)
• Execute os testes automatizados e veja-os executarem com sucesso
• Refatorar código
• Repita tudo
© Ramiro Batista da Luz, 2010.
8. Python Ágil - Campus Party - 2011.
BDD - Behavior Driven Development(1)
http://pt.wikipedia.org/wiki/Behavior_Driven_Development
• Envolver as partes interessadas no processo através de Outside-in
Development (Desenvolvimento de Fora pra Dentro)
• Usar exemplos para descrever o comportamento de uma aplicação
ou unidades de código
• Automatizar os exemplos para prover um feedback rápido e testes
de regressão
© Ramiro Batista da Luz, 2010.
9. Python Ágil - Campus Party - 2011.
BDD - Behavior Driven Development(2)
• Usar deve (should em inglês) na hora de descrever o
comportamento de software para ajudar esclarecer
responsabilidades e permitir que funcionalidades do software sejam
questionadas
• Usar dublês de teste (mocks, stubs, fakes, dummies, spies) para
auxiliar na colaboração entre módulos e códigos que ainda não
foram escritos
© Ramiro Batista da Luz, 2010.
10. Python Ágil - Campus Party - 2011.
Padrões de projeto(Design Pattern)(1)
Decorators: decoradores.py
python-3-patterns-idioms/code/PythonDecorators/entry_exit_class.py
http://en.wikipedia.org/wiki/Python_syntax_and_semantics#Decorators
Iterators: iteradores.py
http://docs.python.org/tutorial/classes.html#iterators
© Ramiro Batista da Luz, 2010.
11. Python Ágil - Campus Party - 2011.
Padrões de projeto(Design Pattern)(2)
Generators: generators.py
http://docs.python.org/tutorial/classes.html#generators
Compreensão de listas: compreensao_listas.py
Singleton: python-3-patterns-idioms/code/Singleton/SingletonPattern.py
Factory:
python-3-patterns-idioms/code/Factory/shapefact1/ShapeFactory1.py
© Ramiro Batista da Luz, 2010.
12. Python Ágil - Campus Party - 2011.
Ferramentas
PyUnit: http://docs.python.org/library/unittest.html
DocTest: http://docs.python.org/library/doctest.html
Nose+TDaemon:
http://isnomore.net/2010/08/01/automated-python-testing-nose-and-tdaemon/
© Ramiro Batista da Luz, 2010.
13. Python Ágil - Campus Party - 2011.
Integração Continua(Continuos
Integration)
http://www.getwindmill.com/
http://martinfowler.com/articles/continuousIntegration.html
http://www.jetbrains.com/teamcity/
https://github.com/heynemann/skink
http://hudson-ci.org/
© Ramiro Batista da Luz, 2010.
14. Python Ágil - Campus Party - 2011.
Demonstração
Testes Unitários: testes_unitarios.py
Testes e Documentação(DocTests): doctests.py
Testes com Django:
http://www.slideshare.net/fractalk/tdd-em-django-sem-desculpas
© Ramiro Batista da Luz, 2010.
15. Python Ágil - Campus Party - 2011.
Conclusão
Outros exemplos:
Plone: http://plone.org/documentation/kb/richdocument/unit-testing
web2py:
http://www.web2py.com/examples/default/examples#testing_examples
http://web2py.com/AlterEgo/default/show/260
pylons: http://wiki.pylonshq.com/display/pylonsdocs/Unit+Testing
© Ramiro Batista da Luz, 2010.
16. Python Ágil - Campus Party - 2011.
Agradecimentos
Bruce Eckel
Adriano Petrich
Rodrigo Bernardo Pimentel
© Ramiro Batista da Luz, 2010.
17. Python Ágil - Campus Party - 2011.
Contato e perguntas
e-mail e gtalk: ramiroluz@gmail.com
twitter: @ramiroluz
© Ramiro Batista da Luz, 2010.
18. Python Ágil - Campus Party - 2011.
Encerramento
http://www.python.org.br
http://associacao.python.org.br
http://groups.google.com/group/grupy-pr
© Ramiro Batista da Luz, 2010.