Este documento apresenta técnicas para definir requisitos de software de forma colaborativa, utilizando exemplos reais em vez de afirmações abstratas. A abordagem de Especificação por Exemplo é explicada, assim como boas práticas para sua aplicação, como coletar exemplos diretamente dos clientes e usar protótipos para exemplificar interfaces. A técnica Behavior Driven Development (BDD) é apresentada como forma de escrever critérios de aceitação de forma estruturada.
3. AGENDA
❏ Importância da comunicação
❏ Definição de Requisitos
❏ Especificação por Exemplo
❏ Técnicas para Definição de Requisitos
❏ BDD
❏ Mão na Massa
4. VAMOS PENSAR…
Como é feita a definição de requisitos de uma funcionalidade em seu
projeto?
Qual é a definição de pronto de uma funcionalidade em seu projeto?
Como envolver pessoas não técnicas em conversas sobre requisitos
técnicos?
Como mostrar ao cliente o valor de negócio entregue em uma
funcionalidade?
5. ESTE WORKSHOP, EM RESUMO:
Entender o valor da colaboração entre pessoas do time
Apresentar um guia para facilitar reuniões de levantamento de
requisitos
Dicas para a escrita de critérios de aceitação eficazes utilizando
Especificação por Exemplo
6. Requisito: Valor/Necessidade de Negócio
Estória de Usuário: Funcionalidade a ser implementada
BDD/Exemplos: Ilustração do uso da funcionalidade
7.
8. Contexto: A entrega gratuita é oferecida aos clientes VIP, uma vez que eles
tenham comprado uma quantidade mínima de 5 livros. A entrega gratuita
não é oferecida aos clientes regulares ou clientes VIP que tenham comprado
qualquer produto além de livros.
Como usuário VIP do site de e-commerce
Eu quero saber quais o produtos que qualificam entrega grátis
Para saber quando eu sou elegível para tal entrega
DADO que estou logada como cliente <TIPO DE CLIENTE>
E que meu carrinho de compras contém <CONTEÚDO DO CARRINHO>
QUANDO eu prossigo para o pagamento
ENTÃO sou avisada que fui qualificada para o tipo de entrega <ENTREGA>
10. UM EXEMPLO
Dado que a quantidade mínima de livros para se obter
entrega grátis é cinco, então esperamos o seguinte:
Tipo de Consumidor Conteúdo do Carrinho Entrega
VIP 5 Livros Grátis
VIP 4 Livros Padrão
Regular 10 Livros Padrão
VIP 5 Máquinas de Lavar Padrão
VIP
5 Livros, 1 Máquina de
Lavar
Padrão
13. POR QUE?
▫ As inconsistências se tornam mais fáceis de serem
identificadas quando escrevemos o nosso entendimento
▫ Exemplos do mundo real nos ajuda a eliminar premissas e
definir a real regra de negócio
▫ Pessoas possuem diferentes abordagens para o mesmo
problema. Um momento para se discutir essas abordagens
evita a falácia do “group thinking”.
17. Abordagem utilizada para definir requisitos
colaborativamente, utilizando exemplos reais ao invés de
afirmações abstratas. Especificação por exemplo se utiliza
de algumas práticas, como BDD, para a escrita dos
critérios de aceitação.
O QUE É?
18. O QUE NÃO É?
▫ Uma ferramenta particular de software
▫ Escrita de exemplos sem discussões
▫ Um processo escrito em pedra
20. BOAS PRÁTICAS
▫ Coletar exemplos básicos diretamente dos clientes
▫ Usar protótipos/desenhos que exemplificam a UI
▫ Explicação do contexto em pequenos parágrafos
▫ Utilizar BDD nas especificações
▫ Validar/revisar frequentemente
21. MÁS PRÁTICAS
▫ Utilizar respostas positivas e negativas nos exemplos
▫ Utilizar classes abstratas de equivalência
▫ Explorar todas as combinações possíveis
▫ Definir explicitamente todas as dependências na especificação
23. TÉCNICAS PARA DEFINIR ESTÓRIAS DE USUÁRIO
▫ Workshops com o time todo
▫ Workshops com representantes dos “Três Amigos”
▫ Pair-writing
▫ Desenvolvedores frequentemente revisando as histórias antes da
iteração (IPM/pre-planning)
▫ Conversas informais
▫ Prepare somente exemplos iniciais para IPM/pre-planning ou
conversas com stakeholders
24. ABORDAGEM
Dada uma necessidade de negócio, entender:
▫ O "porquê” e “quem"?
▫ De onde o valor está vindo?
▫ Como o valor está relacionado ao que o usuário final
espera/precisa
▫ Se há uma solução alternativa
28. EXEMPLO - MÁS PRÁTICAS
Contexto: Um agente de Call Center busca por um determinado usuário por
seu número de telefone
Como um agente de Call Center
Eu quero buscar por um cliente utilizando seu número de usuário
Para encontrar as demais informações relacionadas a esse cliente
DADO um usuário
Quando buscar por um cliente ingressando um certo atributo
ENTÃO o resultado esperado é exibido
29. EXEMPLO - MÁS PRÁTICAS
Contexto: Um agente de Call Center busca por um determinado usuário por
seu número de telefone
Como um agente de Call Center
Eu quero buscar por um cliente utilizando seu número de usuário
Para encontrar as demais informações relacionadas a esse cliente
DADO um usuário
Quando buscar por um cliente ingressando um certo atributo
ENTÃO o resultado esperado é exibido
30. EXEMPLO - MÁS PRÁTICAS
Contexto: Um agente de Call Center busca por um determinado usuário por
seu número de telefone
Como um agente de Call Center
Eu quero buscar por um cliente utilizando seu número de usuário
Para encontrar as demais informações relacionadas a esse cliente
DADO que eu estou utilizando o sistema como um Agente de Call Center
QUANDO eu digito o número do cliente na caixa de busca
E clico no botão buscar
ENTÃO eu vejo o nome, endereço e documento do cliente exibidos em uma
tabela
31. EXEMPLO - MÁS PRÁTICAS
Contexto: Um agente de Call Center busca por um determinado usuário por
seu número de telefone
Como um agente de Call Center
Eu quero buscar por um cliente utilizando seu número de usuário
Para encontrar as demais informações relacionadas a esse cliente
DADO que eu estou utilizando o sistema como um Agente de Call Center
QUANDO eu digito o número do cliente na caixa de busca
E clico no botão buscar
ENTÃO eu vejo o nome, endereço e documento do cliente exibidos em
uma tabela
32. EXEMPLO - BOAS PRÁTICAS
Contexto: Um agente de Call Center busca por um determinado usuário por
seu número de telefone
Como um agente de Call Center
Eu quero buscar por um cliente utilizando seu número de usuário
Para encontrar as demais informações relacionadas a esse cliente
DADO que eu estou utilizando o sistema como um Agente de Call Center
QUANDO eu busco por um cliente, ingressando seu número de telefone
ENTÃO o resultado da busca retorna o nome, endereço e documento do cliente
buscado
33. EXEMPLO - BOAS PRÁTICAS
Contexto: Um agente de Call Center busca por um determinado usuário por
seu número de telefone
Como um agente de Call Center
Eu quero buscar por um cliente utilizando seu número de usuário
Para encontrar as demais informações relacionadas a esse cliente
DADO que eu estou utilizando o sistema como um Agente de Call Center
QUANDO eu busco por um cliente, ingressando seu número de telefone
ENTÃO o resultado da busca retorna o nome, endereço e documento do
cliente buscado
36. SMART ALARM
Contexto: O monitor de rota deve informar quaisquer problemas no trajeto
especificado e avisar o cliente, respeitando o limite de tempo determinado.
Como usuário do aplicativo Smart Alarm
Eu quero poder adicionar um monitor de rota
Para me alertar com antecedência de problemas no percurso entre dois
endereços
38. BIBLIOGRAFIA
Bridging the Communication Gap - Gojko Adzic
Specification by Example - Gojko Adzic
User Stories Applied - Mike Cohn
The Agile Samurai - Jonathan Rasmusson