Python gil IV Encontro GITEC - 2011 Ramiro Batista da Luz 26 Outubro 2011 Ramiro Batista da Luz Python gil
Python Ágil - IV Encontro GITEC - 2011.© Ramiro Batista da Luz, 2011. Python Ágil - IV Encontro do GITEC - 2011 Ramiro Batista da Luz Python gil
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
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
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
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
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
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
A avestruz e o gato! Veloz X Ágil: Fonte: http://va.mu/JK27 Fonte: http://va.mu/JK3C Ramiro Batista da Luz Python gil
O que é agilidade? Capacidade de mudar de direção rapidamente. Ramiro Batista da Luz Python gil
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
O que é linguagem de programação? Sequencia de instruções “transformadas” em programas, software aplicativo, sistemas operacionais. Ramiro Batista da Luz Python gil
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
O que é Python? Linguagem de programação dinâmica, orientada a objetos, simples e prática. Ramiro Batista da Luz Python gil
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
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
O que são metodologias ágeis? Metodologia de desenvolvimento. Ramiro Batista da Luz Python gil
O que são metodologias ágeis? Metodologia de desenvolvimento. Alta participação do(s) cliente(s). Ramiro Batista da Luz Python gil
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
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
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
Por que Python Ágil? Python é fácil para integrar(Bindings C). Ramiro Batista da Luz Python gil
Por que Python Ágil? Python é fácil para integrar(Bindings C). Possui muitas bibliotecas fáceis de aprender. Ramiro Batista da Luz Python gil
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
Segurança Para mudar, para evoluir. Ramiro Batista da Luz Python gil
Segurança Para mudar, para evoluir. Confiabilidade(Testes de integração). Ramiro Batista da Luz Python gil
Segurança Para mudar, para evoluir. Confiabilidade(Testes de integração). Aceitação de funcionalidades(Testes funcionais). Ramiro Batista da Luz Python gil
A metodologia XGH - eXtreme Go Horse http://va.mu/BcW Ramiro Batista da Luz Python gil
A metodologia XGH - eXtreme Go Horse http://va.mu/BcW 1 Pensou, não é XGH. Ramiro Batista da Luz Python gil
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
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
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
TDD - Test Driven Development http://va.mu/JjxN Ramiro Batista da Luz Python gil
TDD - Test Driven Development http://va.mu/JjxN Adicione um teste Ramiro Batista da Luz Python gil
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
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
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
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
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
BDD - Behavior Driven Development http://va.mu/Jjxa Ramiro Batista da Luz Python gil
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
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
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
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
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
Padrões de projeto(Design Pattern) Decorators: decoradores.py Ramiro Batista da Luz Python gil
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
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
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
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
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
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
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
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
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
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
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
Ferramentas PyUnit: http://va.mu/oMf Ramiro Batista da Luz Python gil
Ferramentas PyUnit: http://va.mu/oMf DocTest: http://va.mu/Jjyb Ramiro Batista da Luz Python gil
Ferramentas PyUnit: http://va.mu/oMf DocTest: http://va.mu/Jjyb Nose+TDaemon: Ramiro Batista da Luz Python gil
Ferramentas PyUnit: http://va.mu/oMf DocTest: http://va.mu/Jjyb Nose+TDaemon: http://va.mu/Jjyh Ramiro Batista da Luz Python gil
Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Ramiro Batista da Luz Python gil
Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Martin Fowler, continuos integration: http://va.mu/Jjy2 Ramiro Batista da Luz Python gil
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
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
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
Demonstração Testes Unitários: testes_unitarios.py Ramiro Batista da Luz Python gil
Demonstração Testes Unitários: testes_unitarios.py Testes e Documentação(DocTests): doctests.py Ramiro Batista da Luz Python gil
Demonstração Testes Unitários: testes_unitarios.py Testes e Documentação(DocTests): doctests.py Testes com Django: Ramiro Batista da Luz Python gil
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
Conclusão Mais referências: Ramiro Batista da Luz Python gil
Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Ramiro Batista da Luz Python gil
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
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
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
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
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
Agradecimentos Bruce Eckel Ramiro Batista da Luz Python gil
Agradecimentos Bruce Eckel Adriano Petrich Ramiro Batista da Luz Python gil
Agradecimentos Bruce Eckel Adriano Petrich Rodrigo Bernardo Pimentel Ramiro Batista da Luz Python gil
Agradecimentos Bruce Eckel Adriano Petrich Rodrigo Bernardo Pimentel Davi Lima Ramiro Batista da Luz Python gil
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
Contato e perguntas e-mail e gtalk: ramiroluz@gmail.com Ramiro Batista da Luz Python gil
Contato e perguntas e-mail e gtalk: ramiroluz@gmail.com twitter: @ramiroluz Ramiro Batista da Luz Python gil
Encerramento http://www.python.org.br Ramiro Batista da Luz Python gil
Encerramento http://www.python.org.br http://associacao.python.org.br Ramiro Batista da Luz Python gil
Encerramento http://www.python.org.br http://associacao.python.org.br http://groups.google.com/group/grupy-pr Ramiro Batista da Luz Python gil

python-agil-IVEnGitec

  • 1.
    Python gil IVEncontro GITEC - 2011 Ramiro Batista da Luz 26 Outubro 2011 Ramiro Batista da Luz Python gil
  • 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.
    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.
    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.
    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.
    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.
    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.
    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.
    A avestruz eo gato! Veloz X Ágil: Fonte: http://va.mu/JK27 Fonte: http://va.mu/JK3C Ramiro Batista da Luz Python gil
  • 10.
    O que éagilidade? Capacidade de mudar de direção rapidamente. Ramiro Batista da Luz Python gil
  • 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.
    O que élinguagem de programação? Sequencia de instruções “transformadas” em programas, software aplicativo, sistemas operacionais. Ramiro Batista da Luz Python gil
  • 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.
    O que éPython? Linguagem de programação dinâmica, orientada a objetos, simples e prática. Ramiro Batista da Luz Python gil
  • 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.
    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.
    O que sãometodologias ágeis? Metodologia de desenvolvimento. Ramiro Batista da Luz Python gil
  • 18.
    O que sãometodologias ágeis? Metodologia de desenvolvimento. Alta participação do(s) cliente(s). Ramiro Batista da Luz Python gil
  • 19.
    O que sãometodologias ágeis? Metodologia de desenvolvimento. Alta participação do(s) cliente(s). Adaptação rápida à mudanças. Ramiro Batista da Luz Python gil
  • 20.
    O que sãometodologias á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.
    O que sãometodologias á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.
    Por que PythonÁgil? Python é fácil para integrar(Bindings C). Ramiro Batista da Luz Python gil
  • 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.
    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.
    Segurança Para mudar, para evoluir. Ramiro Batista da Luz Python gil
  • 26.
    Segurança Para mudar, para evoluir. Confiabilidade(Testes de integração). Ramiro Batista da Luz Python gil
  • 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.
    A metodologia XGH- eXtreme Go Horse http://va.mu/BcW Ramiro Batista da Luz Python gil
  • 29.
    A metodologia XGH- eXtreme Go Horse http://va.mu/BcW 1 Pensou, não é XGH. Ramiro Batista da Luz Python gil
  • 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.
    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.
    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.
    TDD - TestDriven Development http://va.mu/JjxN Ramiro Batista da Luz Python gil
  • 34.
    TDD - TestDriven Development http://va.mu/JjxN Adicione um teste Ramiro Batista da Luz Python gil
  • 35.
    TDD - TestDriven 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.
    TDD - TestDriven 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.
    TDD - TestDriven 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.
    TDD - TestDriven 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.
    TDD - TestDriven 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.
    BDD - BehaviorDriven Development http://va.mu/Jjxa Ramiro Batista da Luz Python gil
  • 41.
    BDD - BehaviorDriven 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.
    BDD - BehaviorDriven 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.
    BDD - BehaviorDriven 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.
    BDD - BehaviorDriven 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.
    BDD - BehaviorDriven 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.
    Padrões de projeto(DesignPattern) Decorators: decoradores.py Ramiro Batista da Luz Python gil
  • 47.
    Padrões de projeto(DesignPattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py Ramiro Batista da Luz Python gil
  • 48.
    Padrões de projeto(DesignPattern) Decorators: decoradores.py python-3-patterns- idioms/code/PythonDecorators/entry_exit_class.py http://va.mu/Jjxq Ramiro Batista da Luz Python gil
  • 49.
    Padrões de projeto(DesignPattern) 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.
    Padrões de projeto(DesignPattern) 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.
    Padrões de projeto(DesignPattern) 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.
    Padrões de projeto(DesignPattern) 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.
    Padrões de projeto(DesignPattern) 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.
    Padrões de projeto(DesignPattern) 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.
    Padrões de projeto(DesignPattern) 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.
    Padrões de projeto(DesignPattern) 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.
    Padrões de projeto(DesignPattern) 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.
    Ferramentas PyUnit: http://va.mu/oMf Ramiro Batista da Luz Python gil
  • 59.
    Ferramentas PyUnit: http://va.mu/oMf DocTest: http://va.mu/Jjyb Ramiro Batista da Luz Python gil
  • 60.
    Ferramentas PyUnit: http://va.mu/oMf DocTest: http://va.mu/Jjyb Nose+TDaemon: Ramiro Batista da Luz Python gil
  • 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.
    Integração Continua(Continuos Integration) GetWindmill: http://va.mu/Jjyy Ramiro Batista da Luz Python gil
  • 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.
    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.
    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.
    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.
    Demonstração Testes Unitários: testes_unitarios.py Ramiro Batista da Luz Python gil
  • 68.
    Demonstração Testes Unitários: testes_unitarios.py Testes e Documentação(DocTests): doctests.py Ramiro Batista da Luz Python gil
  • 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.
    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.
    Conclusão Mais referências: Ramiro Batista da Luz Python gil
  • 72.
    Conclusão Mais referências: Osvaldo Santana, TDD com Python: http://va.mu/Jj0f Ramiro Batista da Luz Python gil
  • 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.
    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.
    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.
    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.
    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.
    Agradecimentos Bruce Eckel Ramiro Batista da Luz Python gil
  • 79.
    Agradecimentos Bruce Eckel Adriano Petrich Ramiro Batista da Luz Python gil
  • 80.
    Agradecimentos Bruce Eckel Adriano Petrich Rodrigo Bernardo Pimentel Ramiro Batista da Luz Python gil
  • 81.
    Agradecimentos Bruce Eckel Adriano Petrich Rodrigo Bernardo Pimentel Davi Lima Ramiro Batista da Luz Python gil
  • 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.
    Contato e perguntas e-mail e gtalk: ramiroluz@gmail.com Ramiro Batista da Luz Python gil
  • 84.
    Contato e perguntas e-mail e gtalk: ramiroluz@gmail.com twitter: @ramiroluz Ramiro Batista da Luz Python gil
  • 85.
    Encerramento http://www.python.org.br Ramiro Batista da Luz Python gil
  • 86.
    Encerramento http://www.python.org.br http://associacao.python.org.br Ramiro Batista da Luz Python gil
  • 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