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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Python Ágil - Campus Party - 2011.




Agradecimentos
  Bruce Eckel
  Adriano Petrich
  Rodrigo Bernardo Pimentel




                     © Ramiro Batista da Luz, 2010.
Python Ágil - Campus Party - 2011.




Contato e perguntas
  e-mail e gtalk: ramiroluz@gmail.com
  twitter: @ramiroluz




                        © Ramiro Batista da Luz, 2010.
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.

Cp2011 python agil-ramiroluz

  • 1.
    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.