Especificação por
meio de exemplos
UMA INTRODUÇÃO

Fábio Nogueira de Lucena
Referência


Specification By Example:
How successful teams deliver the right software
Gojko Adzic, Manning, 2011

http:/...
Créditos para o autor e sua obra


Specification By Example:
How successful teams deliver the right software
Gojko Adzic,...
Aviso
 As

informações aqui contidas são
uma interpretação do conteúdo do
livro indicado no slide anterior.
 Consulte o ...
Esteja alerta!


Tecnologias são propostas e criadas continuamente para resolver
problemas. Duas questões surgem:

A estr...
Orientações


Conhecimento de cerca de 50 projetos.



Alguns pequenos, outros envolvendo equipes espalhadas por
diverso...
Tradicionalmente, ...
Desenvolver software exige extensas
especificações funcionais e longas fases de
testes.
O que não é ...
O que precisamos?


Evitar especificação “exagerada”



Documentação confiável que explica o que o sistema
faz



Verif...
“Ao revelar os padrões de processos
empregados por equipes de sucesso,
eu espero ajudar outros a implementar
estas ideias ...
Padrões de processos


Derivar escopo de objetivos



Especificar de forma colaborativa



Ilustrar usando exemplos


...
Derivar escopo de objetivos
Domínio da solução

Derivar escopo de objetivos
Domínio do problema
Derivar escopo de objetivos
(contexto)


Escopo é solução para problema do domínio.



Escopo é um meio de se atingir um...
Derivar escopo de objetivos


Se clientes definem o escopo, então o projeto não se beneficia do
conhecimento das pessoas ...
ESCOPO

O Código de Trânsito Brasileiro foi alterado
(Lei nº 11.910 de 18 de março de 2009)
“Art. 105. São equipamentos ob...
OBJETIVO

Segurança
ESCOPO

“Eu quero um carro com vido elétrico, ... Sério?

OBJETIVO

Ah, conforto.
RESUMO

Posso indicar o carro com as características, mas como
especialista em automóveis, se eu conhecesse o real
objetiv...
Derivar escopo de objetivos
„Em vez de “cegamente” aceitar
requisitos como a solução para um
problema desconhecido, equipe...
Derivar escopo de objetivos


Inicia-se com objetivo de negócio do cliente.



Todos colaboram para definir o escopo que...
Especificar de forma
colaborativa
Em vez de contar com uma única pessoa
para obter as especificações corretamente,
equipes de sucesso colaboram com entendid...
Cria uma
“propriedade compartilhada”
das especificações, tornando a
equipe mais engajada.
Ilustrar usando exemplos
Em vez de esperar pelo registro preciso de
especificações em uma linguagem de programação
durante a implementação, equipes...
Equipe trabalha com especialistas do negócio
para identificar “exemplos chave” que
descrevem a funcionalidade esperada.
De...
Exemplos chave servem como alvo para
desenvolvedores e como critério de avaliação
objetivo para checar se o desenvolviment...
Refinar a especificação
Especialistas no negócio tendem a pensar
da perspectiva da interface com o usuário.

Detalhar como algo deve ser feito é e...
Muitos detalhes tornam exemplos difíceis
de comunicar e compreender.
Equipes de sucesso, ao
refinar a especificação,
removem informações “não essenciais”
e criam um contexto preciso e concret...
Equipes de sucesso especificam
o que é suposto que o software
faça, em vez de como ele faz.
Cucumber (exemplo)

Especifica...
Automatizar a validação
sem alterar especificações
Verificação rápida é essencial para o desenvolvimento
de software em iterações curtas.
Ou seja, é preciso tornar o process...
Automação sim, mas como?
Rhino Mocks

Especificações
automatizadas
tecnicamente
são inacessíveis aos
especialistas do negó...
Várias versões
Versão desenvolvedor

Versão mais legível

Sincronização???!!!
Equipes de sucesso não correm o risco de
“tradução entre formatos”.
Exemplos chave que são
compreensíveis e
acessíveis a t...
Se é preciso alterar, então há um único lugar.
Única fonte

Consumida por
desenvolvedores,
responsáveis por testes,
especi...
Fitnesse
Wiki
Concordion
Concordion
Cucumber
specFlow
codeeffects

http://rule.codeeffects.com/
OpenRules
Validar frequentemente
Um suporte eficiente de
software exige sabermos o
quê ele faz e o porquê.
Em muitos casos, a única forma
de fazer isto é r...
Código é, frequentemente, a única coisa em que
podemos confiar; muita documentação é
desatualizada antes do término do pro...
Evoluir o sistema de
documentação
Ao longo do tempo, mudanças ocorrem e
provocam atualizações na
“documentação viva”.
Créditos para o autor e sua obra
(agradecimentos finais)


Specification By Example:
How successful teams deliver the rig...
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Próximos SlideShares
Carregando em…5
×

Especificação por meio de exemplos (BDD, testes de aceitação, ...)

3.586 visualizações

Publicada em

Uma introdução à Especificação por meio de Exemplos. Segue conteúdo do livro Specification By Example, Gojko Adzic, Manning, 2011.

Publicada em: Tecnologia

Especificação por meio de exemplos (BDD, testes de aceitação, ...)

  1. 1. Especificação por meio de exemplos UMA INTRODUÇÃO Fábio Nogueira de Lucena
  2. 2. Referência  Specification By Example: How successful teams deliver the right software Gojko Adzic, Manning, 2011 http://specificationbyexample.com/
  3. 3. Créditos para o autor e sua obra  Specification By Example: How successful teams deliver the right software Gojko Adzic, Manning, 2011 Frases, citações e excertos obtidos deste livro.
  4. 4. Aviso  As informações aqui contidas são uma interpretação do conteúdo do livro indicado no slide anterior.  Consulte o original para detalhes.
  5. 5. Esteja alerta!  Tecnologias são propostas e criadas continuamente para resolver problemas. Duas questões surgem: A estratégia realmente contribui?  O problema resolvido é parecido com o meu? 
  6. 6. Orientações  Conhecimento de cerca de 50 projetos.  Alguns pequenos, outros envolvendo equipes espalhadas por diversos continentes.  Processos executados: XP, Scrum, Kanban e similares.  Outros nomes   Behavior-Driven Development   Testes de aceitação ágil Specification by Example, ... Apresentado por meio de padrões
  7. 7. Tradicionalmente, ... Desenvolver software exige extensas especificações funcionais e longas fases de testes. O que não é compatível com liberações semanais.
  8. 8. O que precisamos?  Evitar especificação “exagerada”  Documentação confiável que explica o que o sistema faz  Verificar de forma eficiente se o sistema faz o que a especificação diz.  Manter documentação relevante e confiável com o mínimo de custo de manutenção. Especificação por meio de exemplos é uma estratégia dirigida para atingir estes objetivos.
  9. 9. “Ao revelar os padrões de processos empregados por equipes de sucesso, eu espero ajudar outros a implementar estas ideias deliberadamente.” Gojko Adzic Specification By Example Manning, 2011.
  10. 10. Padrões de processos  Derivar escopo de objetivos  Especificar de forma colaborativa  Ilustrar usando exemplos  Refinar a especificação  Automatizar a validação sem alterar especificações  Validar frequentemente  Evoluir o sistema de documentação
  11. 11. Derivar escopo de objetivos
  12. 12. Domínio da solução Derivar escopo de objetivos Domínio do problema
  13. 13. Derivar escopo de objetivos (contexto)  Escopo é solução para problema do domínio.  Escopo é um meio de se atingir um objetivo de negócio.  Muitos esperam a definição do escopo pelo cliente, product owner ou usuário antes de iniciar a implementação.  Tudo que ocorre antes da implementação é geralmente ignorado pela equipe de desenvolvimento.  Após a especificação, desenvolvedores implementam a solução.
  14. 14. Derivar escopo de objetivos  Se clientes definem o escopo, então o projeto não se beneficia do conhecimento das pessoas na equipe de desenvolvimento.  O software fará o que o cliente pediu, mas não necessariamente o que precisava.
  15. 15. ESCOPO O Código de Trânsito Brasileiro foi alterado (Lei nº 11.910 de 18 de março de 2009) “Art. 105. São equipamentos obrigatórios dos veículos, entre outros a serem estabelecidos pelo CONTRAN: (...) VII - equipamento suplementar de retenção – air bag frontal para o condutor e o passageiro do banco dianteiro. (...) CONTRAN, Resolução no. 312, instituiu a obrigatoriedade do sistema antitravamento das rodas (freio ABS).
  16. 16. OBJETIVO Segurança
  17. 17. ESCOPO “Eu quero um carro com vido elétrico, ... Sério? OBJETIVO Ah, conforto.
  18. 18. RESUMO Posso indicar o carro com as características, mas como especialista em automóveis, se eu conhecesse o real objetivo, possivelmente seria mais útil, efetivo, ...
  19. 19. Derivar escopo de objetivos „Em vez de “cegamente” aceitar requisitos como a solução para um problema desconhecido, equipes de sucesso derivam escopo de objetivos.’ Gojko Adzic
  20. 20. Derivar escopo de objetivos  Inicia-se com objetivo de negócio do cliente.  Todos colaboram para definir o escopo que atinge o objetivo.  A equipe trabalha com os usuários do negócio na determinação da solução.  Aqueles do negócio concentram-se no objetivo de uma característica desejável e no valor que esperam extrair dela.  A equipe então sugere uma solução que é mais barata, mais rápida, ...
  21. 21. Especificar de forma colaborativa
  22. 22. Em vez de contar com uma única pessoa para obter as especificações corretamente, equipes de sucesso colaboram com entendidos no negócio para especificar a solução.
  23. 23. Cria uma “propriedade compartilhada” das especificações, tornando a equipe mais engajada.
  24. 24. Ilustrar usando exemplos
  25. 25. Em vez de esperar pelo registro preciso de especificações em uma linguagem de programação durante a implementação, equipes de sucesso ilustram especificações usando exemplos.
  26. 26. Equipe trabalha com especialistas do negócio para identificar “exemplos chave” que descrevem a funcionalidade esperada. Desenvolvedores sugerem exemplos que ilustram casos “problemáticos”. Todos têm uma compreensão compartilhada do que precisa ser produzido.
  27. 27. Exemplos chave servem como alvo para desenvolvedores e como critério de avaliação objetivo para checar se o desenvolvimento está concluído. Se os exemplos são fáceis de entender, então podem ser empregados como requisitos detalhados e não ambíguos.
  28. 28. Refinar a especificação
  29. 29. Especialistas no negócio tendem a pensar da perspectiva da interface com o usuário. Detalhar como algo deve ser feito é em vez do que é exigido é um desperdício.
  30. 30. Muitos detalhes tornam exemplos difíceis de comunicar e compreender.
  31. 31. Equipes de sucesso, ao refinar a especificação, removem informações “não essenciais” e criam um contexto preciso e concreto para o desenvolvimento e testes.
  32. 32. Equipes de sucesso especificam o que é suposto que o software faça, em vez de como ele faz. Cucumber (exemplo) Especificação com exemplos é uma especificação de trabalho, é um teste de aceitação, é um teste funcional.
  33. 33. Automatizar a validação sem alterar especificações
  34. 34. Verificação rápida é essencial para o desenvolvimento de software em iterações curtas. Ou seja, é preciso tornar o processo de validação barato e eficiente. Solução óbvia: automação.
  35. 35. Automação sim, mas como? Rhino Mocks Especificações automatizadas tecnicamente são inacessíveis aos especialistas do negócio.
  36. 36. Várias versões Versão desenvolvedor Versão mais legível Sincronização???!!!
  37. 37. Equipes de sucesso não correm o risco de “tradução entre formatos”. Exemplos chave que são compreensíveis e acessíveis a toda a equipe tornam-se especificações executáveis. Cucumber (exemplo)
  38. 38. Se é preciso alterar, então há um único lugar. Única fonte Consumida por desenvolvedores, responsáveis por testes, especialistas no domínio, e outros.
  39. 39. Fitnesse Wiki
  40. 40. Concordion
  41. 41. Concordion
  42. 42. Cucumber
  43. 43. specFlow
  44. 44. codeeffects http://rule.codeeffects.com/
  45. 45. OpenRules
  46. 46. Validar frequentemente
  47. 47. Um suporte eficiente de software exige sabermos o quê ele faz e o porquê. Em muitos casos, a única forma de fazer isto é recorrer ao código ou encontrar alguém que possa fazer para nós.
  48. 48. Código é, frequentemente, a única coisa em que podemos confiar; muita documentação é desatualizada antes do término do projeto. Desenvolvedores são oráculos de conhecimento e gargalos de informação.
  49. 49. Evoluir o sistema de documentação
  50. 50. Ao longo do tempo, mudanças ocorrem e provocam atualizações na “documentação viva”.
  51. 51. Créditos para o autor e sua obra (agradecimentos finais)  Specification By Example: How successful teams deliver the right software Gojko Adzic, Manning, 2011 Frases, citações e excertos obtidos deste livro.

×