SlideShare uma empresa Scribd logo
1 de 145
Qualidade
guilherme.silveira@caelum.com.br
       @guilhermecaelum
qualquer um desenvolve
qualquer um desenvolve
    com qualidade?
2002 guj.com.br
 2003 vraptor
2004 extreme programming
       2006 scrum
           ...
2009 restfulie




http://restfulie.caelumobjects.com/
2001 - hoje
2001 - hoje

ime.usp.br
2001 - hoje

ime.usp.br
2004 caelum




www.caelum.com.br
que diabos eu faço?
2 partes
2 partes
podemos melhorar
2 partes
podemos melhorar
podemos melhorar
sistema financeiro
eu: emite boleto
meu amigo gente boa:
emite nota fiscal eletrônica
1 mês depois
vamos juntar
notebook
roubado
malandro que é
malandro faz backup!
o pen-drive
estava na bolsa
1 mês depois
integramos
1 mês de código
super avançado
LEGAL
mas eu mudei a lógica
eu também!
integrar depois de tanto tempo, dói
integrar depois de tanto tempo, dói
integrar continuamente
todo instante que ok
parece, mas não dói
se doer

    faça mais
frequentemente
mas funciona?
na minha máquina
na máquina dele
no servidor top de linha
não funcionou
o mercado somos nozes
deploy =
deploy = script manual
abre ticket
aguarda 5 dias
aguarda 5 dias
aguarda 5 dias
deploy em 2 dias
deploy em 2 dias
deploy em 2 dias
depende de um ser
     humano
quem fará o deploy?
medo
não funciona!
PROBLEMA?
caca
não é ágil!
1 - fazer algo errado


        ........
2 - não funciona como
       no script
3 - tela inicial não
     funciona
3 - nem tudo é uma
      boa idéia
ligue djá!




4 - venda não funciona
algumas horas sem o
      sistema
deploy =
deploy = script manual
muito tempo depois
prejuízo
sugestões
automatizar testes
qualquer um pode
   executá-los!
teste unitário
teste
teste

end
teste

end

 to
teste

end

 to

end
ambiente de build
roda todos os testes
após cada commit
mais garantias
coloco em produção
teste humano
teste humano em produção?
homologação
1 dia para deploy
2 dias para testar
vários dias para corrigir
1 dia para deployar
reza braba
1 dia para testar
diversos dias no escuro
automatizar deploys
one click
one click homologa
deploy e ...
feedback
2 dias para deploy
ambiente de build
one click deploy




  eu aprovo!
one click deploy
feedback
deploy instantâneo
parte 2
casa
minha casa
comprei minha casa
AHN?
comprei casa,
 minha casa
comprei uma casa,
   minha casa
comprei uma casa,
  é minha casa
comprei uma casa,
que agora é minha casa
comprei uma casa,
que agora é minha casa
comprei uma casa,
que agora é minha
PASSOS
aprendi a programar
aprendi TDD
aprendi Scrum/Lean/
      Kanban
código curto
    ==>
    bom
não
código curto
    ==>
    bom
não
código curto
    ==>
    bom
      necessariamente
conciso
 ==>
 bom
!
conciso
 ==>
 bom
qualidade de código
        =>
       teste
qualidade de código
        =>
       teste
          necessariamente
não
qualidade de código
        =>
       teste
          necessariamente
teste
        =>
qualidade de código
não
       teste
        =>
qualidade de código
não
       teste
        =>
qualidade de código
          necessariamente
teste
       <==>
qualidade de código
não
       teste
       <==>
qualidade de código
estranho?
qualidade de código
conciso
qualidade de código
somente com as
palavras necessárias
falar tudo
  somente com as
 palavras necessárias
somente com as
palavras necessárias
deixar com as
   somente
           óbvio
  palavras necessárias
pensar no outro
que manterá o código
melhor do que 1 bom
melhor do que 1 bom
   são 200 bons
melhor do que 1 bom
   são 200 bons
ensino é fundamental
programar é fácil
só programar
      é
uma vergonha
ensinar e
aprender
 é difícil
www.caelum.com.br
guilherme.silveira@caelum.com.br

Mais conteúdo relacionado

Mais procurados

Mais procurados (17)

Coding dojo
Coding dojoCoding dojo
Coding dojo
 
Você não faz qualidade em Software - TDC Florianópolis 2020
Você não faz qualidade em Software - TDC Florianópolis 2020Você não faz qualidade em Software - TDC Florianópolis 2020
Você não faz qualidade em Software - TDC Florianópolis 2020
 
Lógica De Programação - Apresentação
Lógica De Programação - ApresentaçãoLógica De Programação - Apresentação
Lógica De Programação - Apresentação
 
Dojo abril
Dojo abrilDojo abril
Dojo abril
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
 
Zf campus party_2011
Zf campus party_2011Zf campus party_2011
Zf campus party_2011
 
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
 
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com JasmineJavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
 
Falando sobre testes automatizados
Falando sobre testes automatizadosFalando sobre testes automatizados
Falando sobre testes automatizados
 
Apresentação WTM
Apresentação WTMApresentação WTM
Apresentação WTM
 
Palestra Sobre o que é um Front-End
Palestra Sobre o que é um Front-EndPalestra Sobre o que é um Front-End
Palestra Sobre o que é um Front-End
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
Gerenciando seus Crushs com Power BI e Node JS
Gerenciando seus Crushs com Power BI e Node JSGerenciando seus Crushs com Power BI e Node JS
Gerenciando seus Crushs com Power BI e Node JS
 
Introdução ao kotlin
Introdução ao kotlinIntrodução ao kotlin
Introdução ao kotlin
 
Designer vs programador
Designer vs programadorDesigner vs programador
Designer vs programador
 
DevOps - Por onde começar
DevOps - Por onde começarDevOps - Por onde começar
DevOps - Por onde começar
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no Nubank
 

Destaque

Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeans
Sliedesharessbarbosa
 

Destaque (20)

Java pra web mais fácil com MVC
Java pra web mais fácil com MVCJava pra web mais fácil com MVC
Java pra web mais fácil com MVC
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)
 
Java Web, o Tutorial
Java Web, o TutorialJava Web, o Tutorial
Java Web, o Tutorial
 
Requisitos de Software
Requisitos de SoftwareRequisitos de Software
Requisitos de Software
 
Apresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+HibernateApresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+Hibernate
 
servlet-introducao
servlet-introducaoservlet-introducao
servlet-introducao
 
Use a cabeça jsp & servlets
Use a cabeça   jsp & servletsUse a cabeça   jsp & servlets
Use a cabeça jsp & servlets
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Desenvolvimento Web/Java com Framework Demoiselle
Desenvolvimento Web/Java com Framework DemoiselleDesenvolvimento Web/Java com Framework Demoiselle
Desenvolvimento Web/Java com Framework Demoiselle
 
X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de Software
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Material CMMI
Material CMMIMaterial CMMI
Material CMMI
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSP
 
3way curso-formacao-java-web-completo
3way curso-formacao-java-web-completo3way curso-formacao-java-web-completo
3way curso-formacao-java-web-completo
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeans
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
Java web
Java webJava web
Java web
 

Semelhante a Software de qualidade e qualidade de código

SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosSCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
Paulo César M Jeveaux
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação
Icaro Camelo
 
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-diaCase Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Paulo César M Jeveaux
 

Semelhante a Software de qualidade e qualidade de código (20)

Deploy continuo, integraçao continua não basta
Deploy continuo, integraçao continua não bastaDeploy continuo, integraçao continua não basta
Deploy continuo, integraçao continua não basta
 
Testes de Unidade, por que você deve começar a fazer? - Javaneiros
Testes de Unidade, por que você deve começar a fazer? - JavaneirosTestes de Unidade, por que você deve começar a fazer? - Javaneiros
Testes de Unidade, por que você deve começar a fazer? - Javaneiros
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
Apostila - Curso Lógica de Programação.pdf
Apostila - Curso Lógica de Programação.pdfApostila - Curso Lógica de Programação.pdf
Apostila - Curso Lógica de Programação.pdf
 
O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
 
O mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria terO mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria ter
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?
 
Clean Code
Clean CodeClean Code
Clean Code
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
Clean Code - Conceitos e filosofia
Clean Code - Conceitos e filosofiaClean Code - Conceitos e filosofia
Clean Code - Conceitos e filosofia
 
Refatoração 1/3 webinar
Refatoração 1/3   webinarRefatoração 1/3   webinar
Refatoração 1/3 webinar
 
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
 
Construindo bons relacionamentos entre desenvolvedores e testadores
Construindo bons relacionamentos entre desenvolvedores e testadoresConstruindo bons relacionamentos entre desenvolvedores e testadores
Construindo bons relacionamentos entre desenvolvedores e testadores
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosSCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação
 
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-diaCase Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
 

Mais de Guilherme Silveira

Equipes ágeis em 2012 - Lições aprendidas
Equipes ágeis em 2012 - Lições aprendidasEquipes ágeis em 2012 - Lições aprendidas
Equipes ágeis em 2012 - Lições aprendidas
Guilherme Silveira
 
Introducao a machine learning na educacao
Introducao a machine learning na educacaoIntroducao a machine learning na educacao
Introducao a machine learning na educacao
Guilherme Silveira
 

Mais de Guilherme Silveira (20)

Equipes ágeis em 2012 - Lições aprendidas
Equipes ágeis em 2012 - Lições aprendidasEquipes ágeis em 2012 - Lições aprendidas
Equipes ágeis em 2012 - Lições aprendidas
 
Introducao a machine learning na educacao
Introducao a machine learning na educacaoIntroducao a machine learning na educacao
Introducao a machine learning na educacao
 
Depois de Scrum e XP: não pare de aprender, não pare de inovar
Depois de Scrum e XP: não pare de aprender, não pare de inovarDepois de Scrum e XP: não pare de aprender, não pare de inovar
Depois de Scrum e XP: não pare de aprender, não pare de inovar
 
O grandiosismo dos loucos - Agile Brazil 2011, Cecilia Fernandes e Guilherme ...
O grandiosismo dos loucos - Agile Brazil 2011, Cecilia Fernandes e Guilherme ...O grandiosismo dos loucos - Agile Brazil 2011, Cecilia Fernandes e Guilherme ...
O grandiosismo dos loucos - Agile Brazil 2011, Cecilia Fernandes e Guilherme ...
 
REST: Hypermidia e Cache - DNAD 2011
REST: Hypermidia e Cache - DNAD 2011REST: Hypermidia e Cache - DNAD 2011
REST: Hypermidia e Cache - DNAD 2011
 
Crie seu sistema REST com JAX-RS e o futuro
Crie seu sistema REST com JAX-RS e o futuroCrie seu sistema REST com JAX-RS e o futuro
Crie seu sistema REST com JAX-RS e o futuro
 
Using the web for real
Using the web for realUsing the web for real
Using the web for real
 
Arquitetura: chega de mesmice
Arquitetura: chega de mesmiceArquitetura: chega de mesmice
Arquitetura: chega de mesmice
 
Arquitetura: chega de mesmice
Arquitetura: chega de mesmiceArquitetura: chega de mesmice
Arquitetura: chega de mesmice
 
Arquitetura chega de mesmice
Arquitetura  chega de mesmiceArquitetura  chega de mesmice
Arquitetura chega de mesmice
 
Arquitetura: chega de mesmice
Arquitetura: chega de mesmiceArquitetura: chega de mesmice
Arquitetura: chega de mesmice
 
Put your client and server to rest - Javaone
Put your client and server to rest - JavaonePut your client and server to rest - Javaone
Put your client and server to rest - Javaone
 
Rest @ Qcon 2010
Rest @ Qcon 2010Rest @ Qcon 2010
Rest @ Qcon 2010
 
Rest clients
Rest clientsRest clients
Rest clients
 
Rest clients
Rest clientsRest clients
Rest clients
 
Rest clients
Rest clientsRest clients
Rest clients
 
Um produto por semana
Um produto por semanaUm produto por semana
Um produto por semana
 
noSql + rest: Arquitetura Contemporanea
noSql + rest: Arquitetura ContemporaneanoSql + rest: Arquitetura Contemporanea
noSql + rest: Arquitetura Contemporanea
 
Rest workflows
Rest workflowsRest workflows
Rest workflows
 
Caelum 2010 - Rest Arquitetura Irreponsavel?
Caelum 2010 - Rest Arquitetura Irreponsavel?Caelum 2010 - Rest Arquitetura Irreponsavel?
Caelum 2010 - Rest Arquitetura Irreponsavel?
 

Último

Último (6)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Software de qualidade e qualidade de código

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n