Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

O Pensamento Ágil

861 views

Published on

Agile não é substantivo, é adjetivo.

Published in: Technology

O Pensamento Ágil

  1. 1. O Pensamento Ágil
  2. 2. Insanidade é fazer as coisas sempre do mesmo jeito e esperar que o resultado mude. Rita Mae Brown
  3. 3. Qualidade
  4. 4. A qualidade de software é uma área de conhecimento da engenharia de software que objetiva garantir a qualidade do software através da definição e normatização de processos de desenvolvimento. "
  5. 5. Segundo a norma ISO 9000 (versão 2000), a qualidade é o grau em que um conjunto de características inerentes a um produto, processo ou sistema cumpre os requisitos inicialmente estipulados para estes.
  6. 6. No desenvolvimento de software, a qualidade do produto está diretamente relacionada à qualidade do processo de desenvolvimento
  7. 7. ! • CMMI • MPS.BR • ISO 9126 • ISO 15504 • ISO 12207 Modelos de qualidade:
  8. 8. qualidade de software = qualidade do processo no mundo tradicional…
  9. 9. Qualidade do Processo
  10. 10. repetitível
  11. 11. controlável
  12. 12. repetitível
  13. 13. controlável
  14. 14. infinitas variáveis
  15. 15. poucas regras
  16. 16. o mundo é complexo
  17. 17. o mundo é caótico pequenas variações no sistema podem causar consequências estrondosas
  18. 18. o mundo não é linear
  19. 19. qualidade de software = ROI no mundo moderno…
  20. 20. Our analysis suggests that 20% of features are used often and 50% of features are hardly ever or never used. http://versionone.com/assets/img/files/ChaosManifesto2013.pdf "
  21. 21. backlog
  22. 22. backlog
  23. 23. backlog
  24. 24. backlog
  25. 25. backlog
  26. 26. escopo custo prazo excelência
  27. 27. escopo custo prazo excelência
  28. 28. fazer mais fazer certo vs
  29. 29. escopo custo prazo excelência
  30. 30. escopo custo prazo excelência
  31. 31. escopo custo prazo excelência
  32. 32. 1 2 3 4 5 backlog
  33. 33. backlog
  34. 34. backlog
  35. 35. backlog
  36. 36. backlog
  37. 37. Lançamento
  38. 38. escopo custo prazo excelência
  39. 39. 1 2 3 4 5 backlog
  40. 40. backlog
  41. 41. backlog
  42. 42. backlog
  43. 43. backlog
  44. 44. Lançamento
  45. 45. http://en.wikipedia.org/wiki/Perpetual_beta
  46. 46. Simplicidade
  47. 47. 20% 80% 20% 80% esforço resultados
  48. 48. Menos é Mais
  49. 49. vs
  50. 50. Aprendizado
  51. 51. desenvolvimento de software = aprender
  52. 52. aprende-se constrói-se
  53. 53. análise de requisitos
  54. 54. R √ Q P D T
  55. 55. R √ Q P D T
  56. 56. R Q P D T C (
  57. 57. R Q P D T C Meses !!!
  58. 58. R Q P D T C Meses !!! !=(
  59. 59. waterfall
  60. 60. The first formal description of the waterfall model is often cited as a 1970 article by Winston W. Royce,[4] [5] although Royce did not use the term "waterfall" in this article. Royce presented this model as an example of a flawed, non-working model. http://en.wikipedia.org/wiki/Waterfall_model#cite_note-0 "
  61. 61. http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
  62. 62. http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf I believe in this concept, but the implementation described above is risky and invites failure. "
  63. 63. http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
  64. 64. http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
  65. 65. • Planejamento da Contratação ‣ Análise da Viabilidade da Contratação ‣ Plano de Sustentação ‣ Estratégia da Contratação ‣ Análise de Riscos ‣ Termo de Referência ou Projeto Básico - objeto - fundamentação da contratação - descrição da solução - requisitos da solução! - modelo de prestação de serviços - elementos para gestão do contrato - estimativa de preços - adequação orçamentária - critérios de sanções - critérios de seleção do fornecedor • Seleção do Fornecedor • Gerenciamento do Contrato IN SLTI MP 04/2010! IN SLTI MP 02/2012
  66. 66. aprende-se constrói-se
  67. 67. define-se constrói-se
  68. 68. aprende-se contrata-se
  69. 69. valida-se constrói-se
  70. 70. valida-se constrói-se
  71. 71. startups
  72. 72. http://startupbizmodel.com/2013/04/18/sua-startup-esta-preparada-para-receber-investimento/
  73. 73. =
  74. 74. R Q P D T
  75. 75. R Q P D T R P D T R P D T 2 meses 2 meses 2 meses
  76. 76. R Q P D T R P D T R P D T 2 semanas 2 semanas 2 semanas
  77. 77. Q R P DT
  78. 78. Q R P DT C )
  79. 79. R P DT C )
  80. 80. R P DT
  81. 81. R P DT
  82. 82. R P D T D D D T T T T T P PP P P R R R R R
  83. 83. R P D T D D D T T T T T P PP P P R R R R R ?
  84. 84. == ? Melhoria
  85. 85. == ? Plan Do Check Act
  86. 86. == ? Plan Do Check Act
  87. 87. ?
  88. 88. Pilha de funcionalidades
  89. 89. Esforço Prioridade
  90. 90. Esforço Prioridade X
  91. 91. Benefício Custo X
  92. 92. RoI
  93. 93. Simplicidade
  94. 94. Diário Semanal Mensal Tri-mestral Estratégico ...
  95. 95. Diário Semanal Mensal Tri-mestral Estratégico ...
  96. 96. Design Evolutivo
  97. 97. ?
  98. 98. Adaptabilidade
  99. 99. Qualidade Embutida
  100. 100. Testes Automáticos
  101. 101. Programa Teste
  102. 102. Programa Teste
  103. 103. Programa Teste
  104. 104. (...) public int soma(int a, int b) { // código } (...) (...) public void meuTeste() { int par1 = 1; int par2 = 1; int result = Classe.soma(par1,par1); assertEquals(2, result); } (...)
  105. 105. (...) public int soma(int a, int b) { // código } (...) (...) public void meuTeste() { int par1 = 1; int par2 = 1; int result = Classe.soma(par1,par1); assertEquals(2, result); } (...) Preparação
  106. 106. (...) public int soma(int a, int b) { // código } (...) (...) public void meuTeste() { int par1 = 1; int par2 = 1; int result = Classe.soma(par1,par2); assertEquals(2, result); } (...) Exercício
  107. 107. (...) public int soma(int a, int b) { // código } (...) (...) public void meuTeste() { int par1 = 1; int par2 = 1; int result = Classe.soma(par1,par1); assertEquals(2, result); } (...) Verificação
  108. 108. X
  109. 109. 10 30 20 30 40 50 60 70 30 30 30 30 30 30
  110. 110. public class Romanos { !public static String parse(int entrada) { StringBuilder resultado = new StringBuilder(); if (entrada <= 3) { for (int i = 0; i < entrada; i++) resultado.append("I"); return resultado.toString(); } else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } else if (entrada < 9){ resultado.append("V"); return resultado.toString(); }else if (entrada == 9){ return "IX"; }else{ return "X"; } } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} !!public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} !
  111. 111. public class Romanos { !public static String parse(int entrada) { StringBuilder resultado = new StringBuilder(); if (entrada <= 3) { for (int i = 0; i < entrada; i++) resultado.append("I"); return resultado.toString(); } else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } else if (entrada < 9){ resultado.append("V"); return resultado.toString(); }else if (entrada == 9){ return "IX"; }else{ return "X"; } } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} !!public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} !
  112. 112. public class Romanos { !public static String parse(int entrada) { StringBuilder resultado = new StringBuilder(); if (entrada <= 3) { for (int i = 0; i < entrada; i++) resultado.append("I"); return resultado.toString(); } else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } else if (entrada < 9){ resultado.append("V"); return resultado.toString(); }else if (entrada == 9){ return "IX"; }else{ return "X"; } } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} !!public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} ! !public static String parse(int entrada) { else if (entrada == 4) { return "IV"; } else if(entrada == 5){ return "V"; } !} !
  113. 113. Tempo Custo
  114. 114. Comunicação
  115. 115. R P D TC
  116. 116. R P D TC ? !
  117. 117. R P D TC
  118. 118. R P D T C
  119. 119. Agile Manifesto
  120. 120. O Manifesto Agilhttp://agilemanifesto.org
  121. 121. Autoreshttp://agilemanifesto.org
  122. 122. @KentBeck @kschwaber @jeffsutherland
  123. 123. @martinfowler @pragdave Andrew Hunt
  124. 124. Arie van Bennekum @WardCunningham @TotherAlistair
  125. 125. @marick @jimhighsmith @unclebobmartin
  126. 126. @RonJeffries Mike Beedle @JonKernPA
  127. 127. Valoreshttp://agilemanifesto.org
  128. 128. Indivíduos e interação entre eles processos e feramentas mais que
  129. 129. Software funcionando mais que documentacao abrangente
  130. 130. Colaboração com o cliente mais que negociacao de contratos
  131. 131. Responder a mudanças mais que seguir um plano
  132. 132. Princípioshttp://agilemanifesto.org
  133. 133. Nossa maior prioridade é satisfazer o cliente, através de entregas rápidas e contínuas gerando valor ao software. 1
  134. 134. Receber bem as mudanças dos requisitos, mesmo em estágios tardios do desenvolvimento. 2
  135. 135. Trabalhando para entregar software, em intervalos de 2 semanas até 2 meses 3
  136. 136. Empresários e desenvolvedores devem trabalhar juntos diariamente durante todo o projeto. 4
  137. 137. Construa projetos com indivíduos motivados, dê- lhes o ambiente e o suporte que precisam, e confie neles para ter o trabalho realizado 5
  138. 138. O método mais eficiente e efetivo de transmitir informação para a equipe de desenvolvimento está na conversa face-a-face 6
  139. 139. Software funcionando é a principal medida para o progresso 7
  140. 140. Processos ágeis promovem o desenvolvimento sustentável. 8
  141. 141. Atenção contínua para uma excelência técnica e um bom design aumentam a agilidade 9
  142. 142. Simplicidade – a arte de maximizar o valor do trabalho não feito – é essencial 10
  143. 143. As melhores arquiteturas, requisitos, e design emergem a partir de equipes auto-organizadas 11
  144. 144. Em intervalos regulares, as equipes devem refletir sobre como tornaram-se mais efetivas, em seguida aprimorar e ajustar de acordo com seu comportamento. 12
  145. 145. Scrum
  146. 146. ScrumSCRUM
  147. 147. CERIMÔNIAS Sprint Planning Sprint Review Retrospectiva Daily Scrum Estimation Meeting
  148. 148. ESTIMATION MEETING
  149. 149. PRODUCT BACKLOG
  150. 150. USER STORIES
  151. 151. USER STORIES Cadastro de e-mail na Newsletter Como: Cliente Eu: Cadastro minha conta de e-mail na newsletter Para: Receber informações do Fornecedor 3 Pronto - E-mail do cliente cadastrado corretamente no banco - Newsletter enviada ao e-mail cliente na publicação - Newsletter recebida corretamente no e-mal do cliente
  152. 152. Planning Poker
  153. 153. SPRINT PLANNING
  154. 154. SPRINT BACKLOG
  155. 155. TAREFAS
  156. 156. KAN-BAN
  157. 157. SPRINT BURNDOWN
  158. 158. DAILY SCRUM
  159. 159. DAILY SCRUM • O que fez desde a última reunião? • O que vai fazer até a próxima? • Há algum impedimento?
  160. 160. SPRINT REVIEW/ DEMO
  161. 161. SPRINT REVIEW / DEMO
  162. 162. RETROSPECTIVA
  163. 163. RETROSPECTIVA
  164. 164. SE ADAPTE! “Não é o mais forte das espécies que sobrevive, nem o mais inteligente, mas o mais adaptável às mudanças.” Charles Darwin
  165. 165. !
  166. 166. Agile Is Dead (Long Live Agility) http://pragdave.me/blog/2014/03/04/time-to-kill-agile/ The word “agile” has been subverted to the point where it is effectively meaningless (…) “Do Agile Right” is like saying “Do Orange Right.” Let’s abandon the word agile to the people who don’t do things. • Find out where you are. • Take a small step towards your goal. • Adjust your understanding based on what you learned. • Repeat
  167. 167. http://mikehadlow.blogspot.co.uk/2014/03/coconut-headphones-why-agile-has-failed.html Why Agile has Failed If your role is simply asking for estimates and enforcing the agile rituals: stand-ups, fortnightly sprints, retrospectives; then you are an impediment rather than an asset to delivery. (…) over the decade (…), agile has come to mean ‘management agile’ In the meantime, the word ‘agile’ has become so abused, that we should stop using it
  168. 168. Coding Dojo

×