Princípios e práticas para
incorporar requisitos não-
funcionais no desenvolvimento
de software
Danilo Sato
@dtsato - www....
Danilo Sato
@dtsato - www.dtsato.com
Desenvolvedor,Arquiteto,Coach,DevOps,Treinador
Thursday, 27 June 13
Thursday, 27 June 13
Estamos contratando!
join.thoughtworks.com
Thursday, 27 June 13
Princípios e práticas para
incorporar requisitos não-
funcionais no desenvolvimento
de software
Thursday, 27 June 13
HTTP://WWW.FLICKR.COM/PHOTOS/15436597@N05/2087454556
HEIN?
Thursday, 27 June 13
Princípios e práticas para
incorporar requisitos não-
funcionais no desenvolvimento
de software
Thursday, 27 June 13
Princípios e práticas para
incorporar requisitos não-
funcionais no desenvolvimento
de software
Thursday, 27 June 13
Princípios e práticas para
incorporar requisitos não-
funcionais no desenvolvimento
de software
Thursday, 27 June 13
Requisitos funcionais
Thursday, 27 June 13
Requisitos funcionais
Comportamento esperado do sistema
Funcionalidades
“O que o sistema faz”
Thursday, 27 June 13
Requisitos não-funcionais
Comportamento não esperado do sistema?
Desfuncionalidades?
“O que o sistema não faz”?
Thursday, ...
Requisitos não-funcionais
Comportamento não esperado do sistema?
Desfuncionalidades?
“O que o sistema não faz”?
Thursday, ...
Requisitos transversais
Thursday, 27 June 13
Requisitos transversais
Comportamentos transversais do sistema
Restrições
Atributos de qualidade
“Como o sistema deve oper...
NFR
Thursday, 27 June 13
NFR
CFR
XFR
Thursday, 27 June 13
acessibilidade
segurança
disponibilidade
performance
escalabilidade
localização
configurabilidade
Exemplos:
Thursday, 27 Ju...
acessibilidade
segurança
disponibilidade
performance
escalabilidade
localização
configurabilidade
Exemplos:
Thursday, 27 Ju...
acessibilidade
segurança
disponibilidade
performance
escalabilidade
localização
configurabilidade
Exemplos:
Thursday, 27 Ju...
Como (não) lidar com
requisitos transversais?
Thursday, 27 June 13
ESTRATÉGIA COMUM #1
ESQUECIMENTO
HTTP://WWW.FLICKR.COM/PHOTOS/LASH9420/7004634470
Thursday, 27 June 13
ESTRATÉGIA COMUM #2
EXAGERO
HTTP://WWW.FLICKR.COM/PHOTOS/ANDISAWSPARKS/8069817816
Thursday, 27 June 13
ESTRATÉGIA COMUM #3
CAPTURAR E DOCUMENTAR
HTTP://WWW.FLICKR.COM/PHOTOS/VIDEOLUX/2390152100
Thursday, 27 June 13
HTTP://WWW.FLICKR.COM/PHOTOS/MANDYLEH/6365813847
PQ É TÃO DIFÍCIL?
Thursday, 27 June 13
Por que é tão difícil?
Difícil de visualizar
Difícil de mensurar custos
Não só transversais no sistema, mas também
entre p...
Soa familiar?
“Arquitetura é tudo aquilo que
é difícil de mudar depois”
Thursday, 27 June 13
Soa familiar?
“Arquitetura é tudo aquilo que
é difícil de mudar depois”
Thursday, 27 June 13
Requisitos transversais
são difíceis de mudar/
introduzir depois!
Thursday, 27 June 13
Requisitos transversais
influenciam a arquitetura
do sistema
Thursday, 27 June 13
Design emergente
vs.
Arquitetura evolutiva
Thursday, 27 June 13
Requisitos transversais
restringem a evolução da
arquitetura
Thursday, 27 June 13
Como definir?
Thursday, 27 June 13
Diferentes ângulos
Thursday, 27 June 13
Diferentes ângulos
Coisas que viram histórias
Thursday, 27 June 13
Diferentes ângulos
Coisas que viram histórias
Coisas que viram padrões
Thursday, 27 June 13
Diferentes ângulos
Coisas que viram histórias
Coisas que viram padrões
Coisas que geram mudanças operacionais
Thursday, 27...
Diferentes ângulos
Coisas que viram histórias
Coisas que viram padrões
Coisas que geram mudanças operacionais
Coisas que i...
Exemplo: Segurança
Coisas que viram histórias:
Processo de autenticação de usuário
Criptografia de senha
Armazenagem cripto...
Exemplo: Segurança
Coisas que viram padrões:
Autorização por funcionalidade
Definição de quais dados são sensíveis
Não salv...
Exemplo: Segurança
Coisas que geram mudanças operacionais:
Obter um certificado SSL
Configuração do firewall
Rotação de chave...
Exemplo: Segurança
Coisas que influenciam o processo de entrega:
Testes de penetração
Gerenciamento de configuração para sen...
Quais tipos?
Thursday, 27 June 13
Thursday, 27 June 13
35+
Thursday, 27 June 13
Thursday, 27 June 13
acessibilidade
Thursday, 27 June 13
acessibilidade
retenção
Thursday, 27 June 13
acessibilidade
retenção
audição
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
Thursday, 27 June...
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
Thu...
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
int...
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
int...
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
int...
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
int...
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
int...
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
int...
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
int...
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
int...
É MUITA COISA!
HTTP://WWW.FLICKR.COM/PHOTOS/JMW125/4630264860
Thursday, 27 June 13
Como incorporar?
Thursday, 27 June 13
É mais difícil lidar de uma
só vez ao invés de pagar
pouco a pouco
Thursday, 27 June 13
Início Durante Depois
Thursday, 27 June 13
Início Durante Depois
Decida com a equipe e o
cliente quais os principais
Thursday, 27 June 13
Início Durante Depois
Thursday, 27 June 13
Início Durante Depois
Thursday, 27 June 13
Início Durante Depois
Escalabilidade
Performance
Segurança
Thursday, 27 June 13
Início Durante Depois
Risco?
Impacto?
Nível de entendimento?
Thursday, 27 June 13
Início Durante Depois
Thursday, 27 June 13
Início Durante Depois
Decida com a equipe e o
cliente como acompanhar
Thursday, 27 June 13
Início Durante Depois
Capture e priorize histórias
com base no risco e impacto
Thursday, 27 June 13
Início Durante Depois
Avalie padrões como
critérios de aceitação por
história
Thursday, 27 June 13
Início Durante Depois
Use métricas de
acompanhamento
Thursday, 27 June 13
Início Durante Depois
Tempo de resposta ideal: < 20ms
Exemplo:
Thursday, 27 June 13
Início Durante Depois
Tempo de resposta ideal: < 20ms
Média? Mediana?
Exemplo:
Thursday, 27 June 13
Início Durante Depois
Tempo de resposta ideal: < 20ms
Média? Mediana? 99 percentil
Exemplo:
Thursday, 27 June 13
Início Durante Depois
Tempo de resposta ideal: < 20ms
Média? Mediana?
Para tudo?
99 percentil
Exemplo:
Thursday, 27 June 13
Início Durante Depois
Tempo de resposta ideal: < 20ms
Média? Mediana?
Para tudo?
99 percentil
Pro que importa
Exemplo:
Thu...
Início Durante Depois
Tempo de resposta ideal: < 20ms
Média? Mediana?
Para tudo?
Quanto custa se passar?
99 percentil
Pro ...
Início Durante Depois
Inclua testes automatizados
na pipeline de entrega
Thursday, 27 June 13
Início Durante Depois
Exemplos:
Thursday, 27 June 13
Início Durante Depois
Testes de Performance
Exemplos:
Thursday, 27 June 13
Início Durante Depois
Testes de Performance
Testes de Carga
Exemplos:
Thursday, 27 June 13
Início Durante Depois
Testes de Performance
Testes de Carga
Testes de Stress
Exemplos:
Thursday, 27 June 13
Início Durante Depois
Testes de Performance
Testes de Carga
Testes de Stress
Exemplos:
Testes de Usabilidade
Thursday, 27 ...
Início Durante Depois
Testes de Performance
Testes de Carga
Testes de Stress
Exemplos:
Testes de Usabilidade
Teste de Long...
Início Durante Depois
Incorpore feedback e
aprendizado de produção
Thursday, 27 June 13
Início Durante Depois
Monitore, monitore, monitore
Thursday, 27 June 13
Início Durante Depois
Ensaie cenários esperados
Thursday, 27 June 13
E quando não fiz isso?
Thursday, 27 June 13
HTTP://BIT.LY/MANAGE-TECH-DEBT
Thursday, 27 June 13
Perguntas?
Danilo Sato
@dtsato - www.dtsato.com
Thursday, 27 June 13
Upcoming SlideShare
Loading in …5
×

Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvimento de software

4,658 views
4,580 views

Published on

Slides of my Agile Brazil 2013 presentation on "Principles and practices to deal with non-functional requirements in software development"

Published in: Technology

Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvimento de software

  1. 1. Princípios e práticas para incorporar requisitos não- funcionais no desenvolvimento de software Danilo Sato @dtsato - www.dtsato.com Thursday, 27 June 13
  2. 2. Danilo Sato @dtsato - www.dtsato.com Desenvolvedor,Arquiteto,Coach,DevOps,Treinador Thursday, 27 June 13
  3. 3. Thursday, 27 June 13
  4. 4. Estamos contratando! join.thoughtworks.com Thursday, 27 June 13
  5. 5. Princípios e práticas para incorporar requisitos não- funcionais no desenvolvimento de software Thursday, 27 June 13
  6. 6. HTTP://WWW.FLICKR.COM/PHOTOS/15436597@N05/2087454556 HEIN? Thursday, 27 June 13
  7. 7. Princípios e práticas para incorporar requisitos não- funcionais no desenvolvimento de software Thursday, 27 June 13
  8. 8. Princípios e práticas para incorporar requisitos não- funcionais no desenvolvimento de software Thursday, 27 June 13
  9. 9. Princípios e práticas para incorporar requisitos não- funcionais no desenvolvimento de software Thursday, 27 June 13
  10. 10. Requisitos funcionais Thursday, 27 June 13
  11. 11. Requisitos funcionais Comportamento esperado do sistema Funcionalidades “O que o sistema faz” Thursday, 27 June 13
  12. 12. Requisitos não-funcionais Comportamento não esperado do sistema? Desfuncionalidades? “O que o sistema não faz”? Thursday, 27 June 13
  13. 13. Requisitos não-funcionais Comportamento não esperado do sistema? Desfuncionalidades? “O que o sistema não faz”? Thursday, 27 June 13
  14. 14. Requisitos transversais Thursday, 27 June 13
  15. 15. Requisitos transversais Comportamentos transversais do sistema Restrições Atributos de qualidade “Como o sistema deve operar” Thursday, 27 June 13
  16. 16. NFR Thursday, 27 June 13
  17. 17. NFR CFR XFR Thursday, 27 June 13
  18. 18. acessibilidade segurança disponibilidade performance escalabilidade localização configurabilidade Exemplos: Thursday, 27 June 13
  19. 19. acessibilidade segurança disponibilidade performance escalabilidade localização configurabilidade Exemplos: Thursday, 27 June 13
  20. 20. acessibilidade segurança disponibilidade performance escalabilidade localização configurabilidade Exemplos: Thursday, 27 June 13
  21. 21. Como (não) lidar com requisitos transversais? Thursday, 27 June 13
  22. 22. ESTRATÉGIA COMUM #1 ESQUECIMENTO HTTP://WWW.FLICKR.COM/PHOTOS/LASH9420/7004634470 Thursday, 27 June 13
  23. 23. ESTRATÉGIA COMUM #2 EXAGERO HTTP://WWW.FLICKR.COM/PHOTOS/ANDISAWSPARKS/8069817816 Thursday, 27 June 13
  24. 24. ESTRATÉGIA COMUM #3 CAPTURAR E DOCUMENTAR HTTP://WWW.FLICKR.COM/PHOTOS/VIDEOLUX/2390152100 Thursday, 27 June 13
  25. 25. HTTP://WWW.FLICKR.COM/PHOTOS/MANDYLEH/6365813847 PQ É TÃO DIFÍCIL? Thursday, 27 June 13
  26. 26. Por que é tão difícil? Difícil de visualizar Difícil de mensurar custos Não só transversais no sistema, mas também entre papéis na equipe: Desenvolvedores, Arquitetos, QAs, DevOps, Ops, BAs Thursday, 27 June 13
  27. 27. Soa familiar? “Arquitetura é tudo aquilo que é difícil de mudar depois” Thursday, 27 June 13
  28. 28. Soa familiar? “Arquitetura é tudo aquilo que é difícil de mudar depois” Thursday, 27 June 13
  29. 29. Requisitos transversais são difíceis de mudar/ introduzir depois! Thursday, 27 June 13
  30. 30. Requisitos transversais influenciam a arquitetura do sistema Thursday, 27 June 13
  31. 31. Design emergente vs. Arquitetura evolutiva Thursday, 27 June 13
  32. 32. Requisitos transversais restringem a evolução da arquitetura Thursday, 27 June 13
  33. 33. Como definir? Thursday, 27 June 13
  34. 34. Diferentes ângulos Thursday, 27 June 13
  35. 35. Diferentes ângulos Coisas que viram histórias Thursday, 27 June 13
  36. 36. Diferentes ângulos Coisas que viram histórias Coisas que viram padrões Thursday, 27 June 13
  37. 37. Diferentes ângulos Coisas que viram histórias Coisas que viram padrões Coisas que geram mudanças operacionais Thursday, 27 June 13
  38. 38. Diferentes ângulos Coisas que viram histórias Coisas que viram padrões Coisas que geram mudanças operacionais Coisas que influenciam o processo de entrega Thursday, 27 June 13
  39. 39. Exemplo: Segurança Coisas que viram histórias: Processo de autenticação de usuário Criptografia de senha Armazenagem criptografada de dados sensíveis Thursday, 27 June 13
  40. 40. Exemplo: Segurança Coisas que viram padrões: Autorização por funcionalidade Definição de quais dados são sensíveis Não salvar/comitar senhas em texto puro Thursday, 27 June 13
  41. 41. Exemplo: Segurança Coisas que geram mudanças operacionais: Obter um certificado SSL Configuração do firewall Rotação de chaves SSH Thursday, 27 June 13
  42. 42. Exemplo: Segurança Coisas que influenciam o processo de entrega: Testes de penetração Gerenciamento de configuração para senhas Validar assinatura de pacotes Thursday, 27 June 13
  43. 43. Quais tipos? Thursday, 27 June 13
  44. 44. Thursday, 27 June 13
  45. 45. 35+ Thursday, 27 June 13
  46. 46. Thursday, 27 June 13
  47. 47. acessibilidade Thursday, 27 June 13
  48. 48. acessibilidade retenção Thursday, 27 June 13
  49. 49. acessibilidade retenção audição Thursday, 27 June 13
  50. 50. acessibilidade retenção audição segurança Thursday, 27 June 13
  51. 51. acessibilidade retenção audição segurança disponibilidade Thursday, 27 June 13
  52. 52. acessibilidade retenção audição segurança disponibilidade continuidade Thursday, 27 June 13
  53. 53. acessibilidade retenção audição segurança disponibilidade continuidade personalização Thursday, 27 June 13
  54. 54. acessibilidade retenção audição segurança disponibilidade continuidade personalização tolerância a falha Thursday, 27 June 13
  55. 55. acessibilidade retenção audição segurança disponibilidade continuidade personalização tolerância a falha confiabilidade Thursday, 27 June 13
  56. 56. acessibilidade retenção audição segurança disponibilidade continuidade personalização tolerância a falha confiabilidade integridade de dados Thursday, 27 June 13
  57. 57. acessibilidade retenção audição segurança disponibilidade continuidade personalização tolerância a falha confiabilidade integridade de dados localicação Thursday, 27 June 13
  58. 58. acessibilidade retenção audição segurança disponibilidade continuidade personalização tolerância a falha confiabilidade integridade de dados localicação ajuda Thursday, 27 June 13
  59. 59. acessibilidade retenção audição segurança disponibilidade continuidade personalização tolerância a falha confiabilidade integridade de dados localicação ajuda legal Thursday, 27 June 13
  60. 60. acessibilidade retenção audição segurança disponibilidade continuidade personalização tolerância a falha confiabilidade integridade de dados localicação ajuda legal localização Thursday, 27 June 13
  61. 61. acessibilidade retenção audição segurança disponibilidade continuidade personalização tolerância a falha confiabilidade integridade de dados localicação ajuda legal localização performance Thursday, 27 June 13
  62. 62. acessibilidade retenção audição segurança disponibilidade continuidade personalização tolerância a falha confiabilidade integridade de dados localicação ajuda legal localização performance escalabilidade Thursday, 27 June 13
  63. 63. acessibilidade retenção audição segurança disponibilidade continuidade personalização tolerância a falha confiabilidade integridade de dados localicação ajuda legal localização performance escalabilidade usabilidade Thursday, 27 June 13
  64. 64. É MUITA COISA! HTTP://WWW.FLICKR.COM/PHOTOS/JMW125/4630264860 Thursday, 27 June 13
  65. 65. Como incorporar? Thursday, 27 June 13
  66. 66. É mais difícil lidar de uma só vez ao invés de pagar pouco a pouco Thursday, 27 June 13
  67. 67. Início Durante Depois Thursday, 27 June 13
  68. 68. Início Durante Depois Decida com a equipe e o cliente quais os principais Thursday, 27 June 13
  69. 69. Início Durante Depois Thursday, 27 June 13
  70. 70. Início Durante Depois Thursday, 27 June 13
  71. 71. Início Durante Depois Escalabilidade Performance Segurança Thursday, 27 June 13
  72. 72. Início Durante Depois Risco? Impacto? Nível de entendimento? Thursday, 27 June 13
  73. 73. Início Durante Depois Thursday, 27 June 13
  74. 74. Início Durante Depois Decida com a equipe e o cliente como acompanhar Thursday, 27 June 13
  75. 75. Início Durante Depois Capture e priorize histórias com base no risco e impacto Thursday, 27 June 13
  76. 76. Início Durante Depois Avalie padrões como critérios de aceitação por história Thursday, 27 June 13
  77. 77. Início Durante Depois Use métricas de acompanhamento Thursday, 27 June 13
  78. 78. Início Durante Depois Tempo de resposta ideal: < 20ms Exemplo: Thursday, 27 June 13
  79. 79. Início Durante Depois Tempo de resposta ideal: < 20ms Média? Mediana? Exemplo: Thursday, 27 June 13
  80. 80. Início Durante Depois Tempo de resposta ideal: < 20ms Média? Mediana? 99 percentil Exemplo: Thursday, 27 June 13
  81. 81. Início Durante Depois Tempo de resposta ideal: < 20ms Média? Mediana? Para tudo? 99 percentil Exemplo: Thursday, 27 June 13
  82. 82. Início Durante Depois Tempo de resposta ideal: < 20ms Média? Mediana? Para tudo? 99 percentil Pro que importa Exemplo: Thursday, 27 June 13
  83. 83. Início Durante Depois Tempo de resposta ideal: < 20ms Média? Mediana? Para tudo? Quanto custa se passar? 99 percentil Pro que importa Exemplo: Thursday, 27 June 13
  84. 84. Início Durante Depois Inclua testes automatizados na pipeline de entrega Thursday, 27 June 13
  85. 85. Início Durante Depois Exemplos: Thursday, 27 June 13
  86. 86. Início Durante Depois Testes de Performance Exemplos: Thursday, 27 June 13
  87. 87. Início Durante Depois Testes de Performance Testes de Carga Exemplos: Thursday, 27 June 13
  88. 88. Início Durante Depois Testes de Performance Testes de Carga Testes de Stress Exemplos: Thursday, 27 June 13
  89. 89. Início Durante Depois Testes de Performance Testes de Carga Testes de Stress Exemplos: Testes de Usabilidade Thursday, 27 June 13
  90. 90. Início Durante Depois Testes de Performance Testes de Carga Testes de Stress Exemplos: Testes de Usabilidade Teste de Longevidade Thursday, 27 June 13
  91. 91. Início Durante Depois Incorpore feedback e aprendizado de produção Thursday, 27 June 13
  92. 92. Início Durante Depois Monitore, monitore, monitore Thursday, 27 June 13
  93. 93. Início Durante Depois Ensaie cenários esperados Thursday, 27 June 13
  94. 94. E quando não fiz isso? Thursday, 27 June 13
  95. 95. HTTP://BIT.LY/MANAGE-TECH-DEBT Thursday, 27 June 13
  96. 96. Perguntas? Danilo Sato @dtsato - www.dtsato.com Thursday, 27 June 13

×