entendendo e aplicando especificação por exemplo
TRANSCRIPT
ENTENDENDO E APLICANDO ESPECIFICAÇÃO POR EXEMPLOSLUIZA NUNES & PEDRO SILVAAGILE BRASIL - NOVEMBRO 2016
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
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?
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
Requisito: Valor/Necessidade de Negócio
Estória de Usuário: Funcionalidade a ser implementada
BDD/Exemplos: Ilustração do uso da funcionalidade
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-commerceEu quero saber quais o produtos que qualificam entrega grátisPara 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>
Tipo de Consumidor Conteúdo do Carrinho Entrega
UM EXEMPLODado 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
DEFININDO ESTÓRIAS DE USUÁRIOS
ESTÓRIA DE USUÁRIO
IndependenteNegociávelValorEstimávelSmall (pequena)Testável
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”.
OS TRÊS AMIGOS
ESPECIFICAÇÃO POR EXEMPLO
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 É?
O QUE NÃO É?
▫� Uma ferramenta particular de software
▫� Escrita de exemplos sem discussões
▫� Um processo escrito em pedra
Specification by Example, Gojiko Adzik
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
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
TÉCNICAS PARA DEFINIÇÃO DE ESTÓRIAS DE USUÁRIO
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
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
BDD
Formato do BDD
DADO (pré-condição)QUANDO (ação)ENTÃO (saída para validação)
BOAS E MÁSPRÁTICAS
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 CenterEu quero buscar por um cliente utilizando seu número de usuárioPara encontrar as demais informações relacionadas a esse cliente
DADO um usuárioQuando buscar por um cliente ingressando um certo atributoENTÃO o resultado esperado é exibido
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 CenterEu quero buscar por um cliente utilizando seu número de usuárioPara encontrar as demais informações relacionadas a esse cliente
DADO um usuárioQuando buscar por um cliente ingressando um certo atributoENTÃO o resultado esperado é exibido
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 CenterEu quero buscar por um cliente utilizando seu número de usuárioPara encontrar as demais informações relacionadas a esse cliente
DADO que eu estou utilizando o sistema como um Agente de Call CenterQUANDO eu digito o número do cliente na caixa de buscaE clico no botão buscarENTÃO eu vejo o nome, endereço e documento do cliente exibidos em uma
tabela
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 CenterEu quero buscar por um cliente utilizando seu número de usuárioPara encontrar as demais informações relacionadas a esse cliente
DADO que eu estou utilizando o sistema como um Agente de Call CenterQUANDO eu digito o número do cliente na caixa de buscaE clico no botão buscarENTÃO eu vejo o nome, endereço e documento do cliente exibidos em
uma tabela
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 CenterEu quero buscar por um cliente utilizando seu número de usuárioPara encontrar as demais informações relacionadas a esse cliente
DADO que eu estou utilizando o sistema como um Agente de Call CenterQUANDO eu busco por um cliente, ingressando seu número de telefoneENTÃO o resultado da busca retorna o nome, endereço e documento do cliente buscado
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 CenterEu quero buscar por um cliente utilizando seu número de usuárioPara encontrar as demais informações relacionadas a esse cliente
DADO que eu estou utilizando o sistema como um Agente de Call CenterQUANDO eu busco por um cliente, ingressando seu número de telefoneENTÃO o resultado da busca retorna o nome, endereço e documento do cliente buscado
AGORA É SUA VEZ!
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 AlarmEu quero poder adicionar um monitor de rotaPara me alertar com antecedência de problemas no percurso entre dois endereços
SMART ALARM
BIBLIOGRAFIA
Bridging the Communication Gap - Gojko Adzic
Specification by Example - Gojko Adzic
User Stories Applied - Mike Cohn
The Agile Samurai - Jonathan Rasmusson
OBRIGADO!@luhh_nunes | [email protected]@pedrohns_ | [email protected]