python-agil-IVEnGitec

766 views

Published on

Palestra Python Ágil do IV-Encontro do GITEC, Grupo Interlegis de Tecnologia.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
766
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

python-agil-IVEnGitec

  1. 1. Python gil IV Encontro GITEC - 2011 Ramiro Batista da Luz 26 Outubro 2011Ramiro Batista da Luz Python gil
  2. 2. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz Python gil
  3. 3. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Ramiro Batista da Luz Python gil
  4. 4. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Twitter: @ramiroluz Ramiro Batista da Luz Python gil
  5. 5. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Twitter: @ramiroluz http://www.slideshare.net/ramiroluz/ pythonagilivengitec Ramiro Batista da Luz Python gil
  6. 6. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Twitter: @ramiroluz http://www.slideshare.net/ramiroluz/ pythonagilivengitec Códigos exemplo: Ramiro Batista da Luz Python gil
  7. 7. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Twitter: @ramiroluz http://www.slideshare.net/ramiroluz/ pythonagilivengitec Códigos exemplo: http://www.ramiroluz.eti.br/python-agil/ Ramiro Batista da Luz Python gil
  8. 8. Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz,2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz - ramiroluz@gmail.com Twitter: @ramiroluz http://www.slideshare.net/ramiroluz/ pythonagilivengitec Códigos exemplo: http://www.ramiroluz.eti.br/python-agil/ http://www.python.org.br/wiki/PythonAgil Ramiro Batista da Luz Python gil
  9. 9. A avestruz e o gato! Veloz X Ágil: Fonte: http://va.mu/JK27 Fonte: http://va.mu/JK3C Ramiro Batista da Luz Python gil
  10. 10. O que é agilidade? Capacidade de mudar de direção rapidamente. Ramiro Batista da Luz Python gil
  11. 11. O que é agilidade? Capacidade de mudar de direção rapidamente. Habilidade de adaptar-se a mudanças com eficiência. Ramiro Batista da Luz Python gil
  12. 12. O que é linguagem de programação? Sequencia de instruções “transformadas” em programas, software aplicativo, sistemas operacionais. Ramiro Batista da Luz Python gil
  13. 13. O que é linguagem de programação? Sequencia de instruções “transformadas” em programas, software aplicativo, sistemas operacionais. Algumas linguagens: C, C++, Visual Basic, Smalltalk, Haskell, Lua e Python. Ramiro Batista da Luz Python gil
  14. 14. O que é Python? Linguagem de programação dinâmica, orientada a objetos, simples e prática. Ramiro Batista da Luz Python gil
  15. 15. O que é Python? Linguagem de programação dinâmica, orientada a objetos, simples e prática. Usada para criar os sistemas do Interlegis. Ramiro Batista da Luz Python gil
  16. 16. O que é Python? Linguagem de programação dinâmica, orientada a objetos, simples e prática. Usada para criar os sistemas do Interlegis. Usada desde a infraestrutura de servidores até a web, passando por pesquisas científicas e desenvolvimento de jogos bem como linguagem de extenso. Ramiro Batista da Luz Python gil
  17. 17. O que são metodologias ágeis? Metodologia de desenvolvimento. Ramiro Batista da Luz Python gil
  18. 18. O que são metodologias ágeis? Metodologia de desenvolvimento. Alta participação do(s) cliente(s). Ramiro Batista da Luz Python gil
  19. 19. O que são metodologias ágeis? Metodologia de desenvolvimento. Alta participação do(s) cliente(s). Adaptação rápida à mudanças. Ramiro Batista da Luz Python gil
  20. 20. O que são metodologias ágeis? Metodologia de desenvolvimento. Alta participação do(s) cliente(s). Adaptação rápida à mudanças. Software funcionando entregue com grande frequência. Ramiro Batista da Luz Python gil
  21. 21. O que são metodologias ágeis? Metodologia de desenvolvimento. Alta participação do(s) cliente(s). Adaptação rápida à mudanças. Software funcionando entregue com grande frequência. Exemplos: Extreme Programming (XP), Scrum, Crystal, Lean, Feature Driven Development (FDD), Agile Unified Process (Agile UP or AUP), Dynamic Systems Development Method (DSDM). Ramiro Batista da Luz Python gil
  22. 22. Por que Python Ágil? Python é fácil para integrar(Bindings C). Ramiro Batista da Luz Python gil
  23. 23. Por que Python Ágil? Python é fácil para integrar(Bindings C). Possui muitas bibliotecas fáceis de aprender. Ramiro Batista da Luz Python gil
  24. 24. Por que Python Ágil? Python é fácil para integrar(Bindings C). Possui muitas bibliotecas fáceis de aprender. Flexível, se adapta ao ambiente(IronPython, Jython, PyPy). Ramiro Batista da Luz Python gil
  25. 25. Segurança Para mudar, para evoluir. Ramiro Batista da Luz Python gil
  26. 26. Segurança Para mudar, para evoluir. Confiabilidade(Testes de integração). Ramiro Batista da Luz Python gil
  27. 27. Segurança Para mudar, para evoluir. Confiabilidade(Testes de integração). Aceitação de funcionalidades(Testes funcionais). Ramiro Batista da Luz Python gil
  28. 28. A metodologia XGH - eXtreme Go Horse http://va.mu/BcW Ramiro Batista da Luz Python gil
  29. 29. A metodologia XGH - eXtreme Go Horse http://va.mu/BcW 1 Pensou, não é XGH. Ramiro Batista da Luz Python gil
  30. 30. A metodologia XGH - eXtreme Go Horse http://va.mu/BcW 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. Ramiro Batista da Luz Python gil
  31. 31. A metodologia XGH - eXtreme Go Horse http://va.mu/BcW 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 vai precisar fazer. Ramiro Batista da Luz Python gil
  32. 32. A metodologia XGH - eXtreme Go Horse http://va.mu/BcW 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 vai precisar fazer. 4 XGH é totalmente reativo. Ramiro Batista da Luz Python gil
  33. 33. TDD - Test Driven Development http://va.mu/JjxN Ramiro Batista da Luz Python gil
  34. 34. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Ramiro Batista da Luz Python gil
  35. 35. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Execute todos os testes e veja se algum deles falha Ramiro Batista da Luz Python gil
  36. 36. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Execute todos os testes e veja se algum deles falha Escrever código Ramiro Batista da Luz Python gil
  37. 37. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Execute todos os testes e veja se algum deles falha Escrever código Execute os testes automatizados e veja-os executarem com sucesso Ramiro Batista da Luz Python gil
  38. 38. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Execute todos os testes e veja se algum deles falha Escrever código Execute os testes automatizados e veja-os executarem com sucesso Refatorar código Ramiro Batista da Luz Python gil
  39. 39. TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Execute todos os testes e veja se algum deles falha Escrever código Execute os testes automatizados e veja-os executarem com sucesso Refatorar código Repita tudo Ramiro Batista da Luz Python gil
  40. 40. BDD - Behavior Driven Development http://va.mu/Jjxa Ramiro Batista da Luz Python gil
  41. 41. BDD - Behavior Driven Development http://va.mu/Jjxa Envolver as partes interessadas no processo através de Outside-in Development (Desenvolvimento de Fora pra Dentro) Ramiro Batista da Luz Python gil
  42. 42. BDD - Behavior Driven Development http://va.mu/Jjxa 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 Ramiro Batista da Luz Python gil
  43. 43. BDD - Behavior Driven Development http://va.mu/Jjxa 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 regresso Ramiro Batista da Luz Python gil
  44. 44. BDD - Behavior Driven Development http://va.mu/Jjxa 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 regresso 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 Ramiro Batista da Luz Python gil
  45. 45. BDD - Behavior Driven Development http://va.mu/Jjxa 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 regresso 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 no foram escritos Ramiro Batista da Luz Python gil
  46. 46. Padrões de projeto(Design Pattern) Decorators: decoradores.py Ramiro Batista da Luz Python gil
  47. 47. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py Ramiro Batista da Luz Python gil
  48. 48. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Ramiro Batista da Luz Python gil
  49. 49. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py Ramiro Batista da Luz Python gil
  50. 50. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Ramiro Batista da Luz Python gil
  51. 51. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py Ramiro Batista da Luz Python gil
  52. 52. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ Ramiro Batista da Luz Python gil
  53. 53. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ Compreensão de listas: compreensao_listas.py Ramiro Batista da Luz Python gil
  54. 54. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ Compreensão de listas: compreensao_listas.py Singleton: Ramiro Batista da Luz Python gil
  55. 55. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ Compreensão de listas: compreensao_listas.py Singleton: python-3-patterns-idioms/code/Singleton/SingletonPattern.py Ramiro Batista da Luz Python gil
  56. 56. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ Compreensão de listas: compreensao_listas.py Singleton: python-3-patterns-idioms/code/Singleton/SingletonPattern.py Factory: Ramiro Batista da Luz Python gil
  57. 57. Padrões de projeto(Design Pattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Iterators: iteradores.py http://va.mu/Jjx6 Generators: generators.py http://va.mu/JjyJ 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 Python gil
  58. 58. Ferramentas PyUnit: http://va.mu/oMf Ramiro Batista da Luz Python gil
  59. 59. Ferramentas PyUnit: http://va.mu/oMf DocTest: http://va.mu/Jjyb Ramiro Batista da Luz Python gil
  60. 60. Ferramentas PyUnit: http://va.mu/oMf DocTest: http://va.mu/Jjyb Nose+TDaemon: Ramiro Batista da Luz Python gil
  61. 61. Ferramentas PyUnit: http://va.mu/oMf DocTest: http://va.mu/Jjyb Nose+TDaemon: http://va.mu/Jjyh Ramiro Batista da Luz Python gil
  62. 62. Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Ramiro Batista da Luz Python gil
  63. 63. Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Martin Fowler, continuos integration: http://va.mu/Jjy2 Ramiro Batista da Luz Python gil
  64. 64. Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Martin Fowler, continuos integration: http://va.mu/Jjy2 TeamCity: http://va.mu/JjzD Ramiro Batista da Luz Python gil
  65. 65. Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Martin Fowler, continuos integration: http://va.mu/Jjy2 TeamCity: http://va.mu/JjzD Skink: http://va.mu/Jjzx Ramiro Batista da Luz Python gil
  66. 66. Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Martin Fowler, continuos integration: http://va.mu/Jjy2 TeamCity: http://va.mu/JjzD Skink: http://va.mu/Jjzx Jenkins(Hudson): http://jenkins-ci.org/ Ramiro Batista da Luz Python gil
  67. 67. Demonstração Testes Unitários: testes_unitarios.py Ramiro Batista da Luz Python gil
  68. 68. Demonstração Testes Unitários: testes_unitarios.py Testes e Documentação(DocTests): doctests.py Ramiro Batista da Luz Python gil
  69. 69. Demonstração Testes Unitários: testes_unitarios.py Testes e Documentação(DocTests): doctests.py Testes com Django: Ramiro Batista da Luz Python gil
  70. 70. Demonstração Testes Unitários: testes_unitarios.py Testes e Documentação(DocTests): doctests.py Testes com Django: Django sem desculpas: http://va.mu/Jj0L Ramiro Batista da Luz Python gil
  71. 71. Conclusão Mais referências: Ramiro Batista da Luz Python gil
  72. 72. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Ramiro Batista da Luz Python gil
  73. 73. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Rodrigo Alves Vieira, http://va.mu/Jj0s Ramiro Batista da Luz Python gil
  74. 74. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Rodrigo Alves Vieira, http://va.mu/Jj0s Plone app testing: http://va.mu/Jj04 Ramiro Batista da Luz Python gil
  75. 75. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Rodrigo Alves Vieira, http://va.mu/Jj0s Plone app testing: http://va.mu/Jj04 Exemplos de testes com web2py: http://va.mu/Jj1F Ramiro Batista da Luz Python gil
  76. 76. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Rodrigo Alves Vieira, http://va.mu/Jj0s Plone app testing: http://va.mu/Jj04 Exemplos de testes com web2py: http://va.mu/Jj1F Test unitário com web2py: http://va.mu/Jj1T Ramiro Batista da Luz Python gil
  77. 77. Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Rodrigo Alves Vieira, http://va.mu/Jj0s Plone app testing: http://va.mu/Jj04 Exemplos de testes com web2py: http://va.mu/Jj1F Test unitário com web2py: http://va.mu/Jj1T Test unitário com pylons: http://va.mu/Jj1p Ramiro Batista da Luz Python gil
  78. 78. Agradecimentos Bruce Eckel Ramiro Batista da Luz Python gil
  79. 79. Agradecimentos Bruce Eckel Adriano Petrich Ramiro Batista da Luz Python gil
  80. 80. Agradecimentos Bruce Eckel Adriano Petrich Rodrigo Bernardo Pimentel Ramiro Batista da Luz Python gil
  81. 81. Agradecimentos Bruce Eckel Adriano Petrich Rodrigo Bernardo Pimentel Davi Lima Ramiro Batista da Luz Python gil
  82. 82. Agradecimentos Bruce Eckel Adriano Petrich Rodrigo Bernardo Pimentel Davi Lima Angelo Marcondes, Júnior(Ishida), Jean Ferri e comunidade Interlegis Ramiro Batista da Luz Python gil
  83. 83. Contato e perguntas e-mail e gtalk: ramiroluz@gmail.com Ramiro Batista da Luz Python gil
  84. 84. Contato e perguntas e-mail e gtalk: ramiroluz@gmail.com twitter: @ramiroluz Ramiro Batista da Luz Python gil
  85. 85. Encerramento http://www.python.org.br Ramiro Batista da Luz Python gil
  86. 86. Encerramento http://www.python.org.br http://associacao.python.org.br Ramiro Batista da Luz Python gil
  87. 87. Encerramento http://www.python.org.br http://associacao.python.org.br http://groups.google.com/group/grupy-pr Ramiro Batista da Luz Python gil

×