Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br




Representando requisitos
   com User Stories
@rodrigobranas
  rodrigo.branas@gmail.com
 http://www.agilecode.com.br
Formação Acadêmica
Ciências da Computação – UFSC
Gerenciamento de Projetos - FGV

Certificações

SCJA, SCJP, SCJD, SCWCD, SCBCD, PMP, MCP e CSM
Rodrigo Branas – rodrigo.branas@gmail.com
10 anos de experiência na plataforma Java
1000 horas em sala de aula
Mais de 50 palestras em eventos

Líder da área de desenvolvimento na Gennera
Autor da revista Java Magazine
Palestrante
Instrutor da Academia Java e Agile da Globalcode
Criador dos treinamentos de Clean Code, Selenium e
Maven da Agile Code

Trabalhou com as empresas: EDS, HP, GM, Citibank,
OnCast, Globalcode, V.Office, Dígitro, Softplan, Unimed,
Suntech, Vale do Rio Doce, Senai, NET.
Definição de requisito: Condição que
  se deve satisfazer para alcançar
        determinado objetivo.

       (Fonte: dicio.com.br)
Como representar requisitos?
Problemas com abordagens
    mais pesadas
Desperdício com excesso de
    documentação
O que nos impede
de entregar
mais cedo?
O problema não está somente na
   quantidade de papel...
Aumento da distância entre
     clientes e equipe
Exposição a falhas no
entendimento de documentos
Desperdício com entregas que não
  atendem as expectativas!
Por que esse tipo de problema
      ainda acontece?
Materialização da
comunicação sem feedback
User Stories tentam resolver
problemas de comunicação
Redução da quantidade de
   informação preliminar
Fortalecer a relação entre clientes
   e a equipe de desenvolvimento
Uma User Story é uma descrição
 em alto nível sob a perspectiva
            do cliente
Promessa de
comunicação!
Debate: User Stories x Use Cases
Sacando dinheiro
“Como cliente do banco, eu desejo
poder sacar dinheiro em terminais
   eletrônicos para evitar filas.”
The Three C's of User Stories
            (by Ron Jeffries)




   Somente o cartão não basta!
Card
Por que utilizar um template?

   Como <Tipo de usuário>
Desejo <Alcançar um objetivo>
     Por <Algum motivo>

Original: As a <type of user>, I want
<some goal> so that <some reason>

                           (Mike Cohn)
Razão 1: Falando em primeira
pessoa você pode se colocar no lugar
   do tipo de usuário em questão
Razão 2: Padronização do Product
 Backlog, pode facilitar a vida do
         Product Owner
Story Smell: Falta de justificativa
             (Exceto em casos óbvios)
Conversation
Cuidado para não conversar com
    as pessoas erradas
Já parou para pensar: “Por que o
      nome User Stories”?
Story Smell: Todas as User Stories
 são focadas no mesmo usuário.
Confirmation através
de Testes de Aceitação!
Descrição de cenários reais, se
possível utilizando dados válidos
Cenário 1: Realização de saque em
uma conta com crédito

Dado que a conta tem crédito
E o cartão está na validade
E o terminal tem dinheiro
Quando o cliente solicitar o saque
Então o débito deve ser realizado
E o dinheiro deve ser entregue
E o cartão deve ser devolvido
Cenário 2: Realização de saque em
uma conta sem crédito
Dado que a conta está sem crédito
E o cartão é valido
Quando o cliente solicitar o saque
Então a mensagem de aviso de
crédito deve ser exibida
E o dinheiro não deve ser entregue
E o cartão deve ser devolvido
Cenário 3: Realização de saque
com cartão roubado

Independente do estado da conta
Dado que o cartão é roubado
Quando alguém solicitar o saque
Então a polícia deve ser avisada
E o dinheiro não deve ser entregue
E o cartão deve ser retido
Saber quando parar!
Guiar o processo
  por testes
Story Smell: User Story iniciada
  sem ao menos um teste de
       aceitação criado.
Escrevendo User Stories
utilizando o conceito INVEST
Independent
Problemas com priorização e
        estimativa
Como resolver os problemas de
   dependência a seguir:

“O cliente deseja pagar com Visa”

  E se existirem outros cartões?
     (Master, Dinners, AMEX)
Solução 1: Juntar tudo em uma
         só User Story
Solução 1: Juntar tudo em uma
         só User Story

Solução 2: Encontrar outro modo
    de dividir as User Stories
Solução 1: Juntar tudo em uma
         só User Story

Solução 2: Encontrar outro modo
    de dividir as User Stories

    Solução 3: Colocar duas
estimativas, uma se a User Story
  for feita antes, outra depois
Negotiable
User Stories não são contratos!
“Considere o cartão uma
 descrição de alto nível”
Capturar a essência, sem se
preocupar tanto com os detalhes
Valuable
As User Stories devem agregar
     valor para o Cliente
Evitar “User Stories” do tipo:

“Alterar protocolo de comunicação”
“Criar nova query para...”
“Realizar migração de base de
dados...”

Muitas vezes esses tipos podem ser
  considerados como atividades!
Estimable
Razões para não conseguir
  estimar uma User Story:

1 – Os desenvolvedores não estão
acostumados com a tecnologia.
2 – Falta conhecimento sobre o
domínio de negócio envolvido.
3 – A User Story é tão grande que
existe incerteza.
Criar uma prova de conceitos
Small
Qual é o tamanho ideal?
Quanto maior, aumenta da
       incerteza
Não tenha medo dos épicos!
Épicos são compostos por User
 Stories relacionadas e podem
representar toda uma área do
            sistema.

  Por exemplo: Sistema de
         Matrículas
Testable
User Roles
Alguns exemplos de User Roles:

• Pessoas em busca de emprego
• Empresa em busca de
funcionários
• Avaliador de currículo
• Profissional de RH realizando
pesquisa salarial
Story-Writing Workshop
Antes do início do projeto ou
   antes de cada release
Foco na quantidade
Pensando alto nível
Não julgar as ideias
Story Smell: Perder o foco
tentando entrar em detalhes
  específicos da User Story

User Stories