MÉTODOS, PROJETOS

Estória de usuário. Você saberia contar?

Estória de usuário. Você saberia contar?
Estória de usuário. Você saberia contar?

Levantar requisitos seguindo um modelo tradicional é uma tarefa muito difícil. Normalmente, resulta em equívocos, esforços desnecessários, complexidade e burocracia. Um problema evidente que podemos encontrar é o fato do cliente dificilmente conseguir explanar todas as suas necessidades no início, acarretando naturalmente uma incerteza sobre a direção do projeto. Outra questão é o fato do cliente ver uma versão funcional do software apenas ao final do projeto, sendo assim, qualquer erro no levantamento dos requisitos ocasionará em um desastre e certamente levará o projeto a ruínas. A verdade é que requisitos mudam, a percepção do cliente sobre o que esta sendo construído se modifica e você precisa estar preparado para absorver e se direcionar. A boa notícia é que existe uma forma mais eficiente para especificar requisitos, eu e todos os membros do mundo ágil a chamamos de estória de usuário ou user story se preferir. Criar estórias de usuário é uma prática oriunda dos métodos ágeis, logicamente, não existe apenas essa forma para se levantar requisitos de forma ágil, porém, sem dúvida é uma das mais simples e eficientes.

Mas, o que é uma estória de usuário?

Uma estória de usuário pode ser caracterizada como uma curta e simples descrição da necessidade do cliente, não será uma surpresa encontrá-las em metodologias ágeis como SCRUM e XP. Ela normalmente é contada a partir da perspectiva de quem precisa da nova necessidade, sendo geralmente um usuário, cliente do sistema ou representante de negócios do cliente. Uma estória de usuário deve explicar bem para quemo que e por que está sendo criada. Isso é importante, principalmente, para desenvolvedores que poderão construir softwares com menor dificuldade e maior qualidade, entendendo os objetivos e necessidades do cliente de forma mais rápida. É normal escrever uma estória de usuário em post-it’s, fichas ou notas. Elas podem ser coladas em paredes ou mesas para facilitar o planejamento e discussão. Aliás, as discussões são mais importantes do que qualquer texto que estará escrito.

O conceito INVEST

Para evitar que uma estória de usuário seja feita de maneira despretensiosa foi criado o acrônimo INVEST. Lembre-se dele e muito provavelmente suas estórias de usuário terão uma boa qualidade. Vamos desmembrar cada sigla:

I – Independent (independente)

Uma boa estória de usuário não deve depender de outra, ela deve andar com as próprias pernas. Estórias de usuário dependentes são difíceis de estimar e priorizar, além disso remover uma estória de usuário dependente acarreta diversos problemas em outras. Procure não encadear uma estória, se por acaso ela for muito grande e não for possível escrevê-la de forma independente, sugiro que crie um épico (já te explico essa palavra) e as divida em estórias menores.

N – Negotiable (negociável)

Uma estória de usuário não é “apenas” um texto detalhando as característica que o Product Owner espera ou um pedaço de funcionalidade que será implementado. Veja uma estória de usuário como um ponto de partida para uma conversa ou uma abertura para que a equipe sugira soluções. Negocie, as coisas mudam e aqui não seria diferente, se for necessário a reescreva ou a descarte, mude sua prioridade ou altere sua ordem de execução.

V – Valuable (de grande valor)

Não podemos apenas criar estórias de usuário divertidas, que façam o desenvolvedor se motivar para codificar, é preciso trazer valor junto com o divertimento. Se você não descrever o valor que o cliente terá com essa estória de usuário, ela não servirá para nada.

E – Estimable (estimável)

“Não consigo estimar o tempo necessário para desenvolver essa estória de usuário.” Essa estória de usuário não entra no sprint backlog, simples! Se não há informação suficiente ou definição para permitir que a equipe faça uma estimativa sobre a estória de usuário, ela não pode ser iniciada.

S – Small (pequena)

Uma estória de usuário não pode demorar mais do que uma sprint para ser concluída. Qualquer estória de usuário maior do que isso será difícil de se planejar ou se estimar com segurança. Se ela for muito grande crie um épico e dividida em estórias de usuário menores, não há nenhum problema em começar o seu sprint backlog com um épico.

T – Testable (testável)

Se você não pode testar uma estória de usuário, você não pode saber se ela funcionará bem ou não. Então? Teste, se a estória de usuário em questão não puder ser testada por falta de informação, não a coloque em seu backlog.

Use temas e épicos quando necessário

Se você seguir o conceito INVEST para criar suas estórias de usuário, muito provavelmente, terá estórias de qualidade. Em algumas situações verá a necessidade de separá-las em temas ou épicos. Não que você vá realmente ter essa necessidade, não estou pondo isso como requisito, porém, as vezes será necessário. Deixa eu te explicar melhor:

Temas

Um tema é um grupo de estórias de usuário que compartilham atributos em comum. Muitas vezes, várias estórias de usuário terão objetivos similares ou estarão relacionadas de uma maneira óbvia. Todas elas direcionadas juntas a um único caminho, no entanto, elas não precisam encapsular um fluxo de trabalho específico ou ser entregues necessariamente juntas. Vale ressaltar também que um tema pode conter vários épicos ou várias estórias de usuário.

Épicos

Épico é uma grande estória de usuário que não pode ser concluída em uma única sprint, se assemelhando a um tema por ser construída com múltiplas estórias. Apesar das estórias que compõem um épico serem concluídas de forma independente, o seu valor para o negócio não será entregue até que todo o épico esteja completo. Isso significa que não faz sentido entregar um épico sem que todas as estórias atreladas a ele estejam completas.

Criando estórias de usuário

Como já te falei uma estória de usuário deve explicar bem para quem (quem receberá essa funcionalidade)o que (descrição da funcionalidade em si) e por que (o motivo da funcionalidade) está sendo criada. Essas informações são fundamentais para qualquer estória de usuário e precisam constar na sua especificação de requisitos. Existem vários formatos que você pode seguir para escrever suas estórias de usuário, eu particularmente utilizo um bem genérico que supre todas as minhas necessidades e segue as informações fundamentais que citei. Deixa eu te apresentar esse modelo:

COMO/SENDO <QUEM>, EU QUERO/GOSTARIA/DEVO/POSSO <O QUE>, PARA QUE/DE/PARA <PORQUE/RESULTADO>.

Com essas informações ficará mais fácil para o desenvolvedor elaborar uma funcionalidade que expresse realmente a necessidade do cliente. Vejamos alguns exemplos utilizando esse formato:

Exemplo 1 – Consultar cliente pelo CNPJ

SENDO um vendedor EU QUERO consultar os meus clientes pelo CNPJ PARA conseguir negociar com ele estando melhor informado.

Exemplo 2 – Alterar os próprios horários

COMO um usuário não administrativo DEVO modificar meus próprios horários, mas não os horários de outros usuários PARA QUE não seja necessário abrir um chamado sempre que minhas atividades mudarem.

Exemplo 3 – Épico – Relatório de chamados

COMO usuário POSSO visualizar o relatório de solicitação DE chamados no painel (épico)

Perceba que essa estória ficou muito grande para ser concluída em apenas uma sprint, além de não estar totalmente explicita. Neste caso, vamos transformá-la em um épico e criar algumas dezenas (até mesmo centenas) de estórias de usuário para o mesmo, incluindo essas duas abaixo:

COMO administrador do sistema POSSO visualizar o relatório de solicitação de todos os usuários PARA obter um melhor feedback sobre o seu andamento e solução.

SENDO um usuário comum do sistema POSSO visualizar o relatório de solicitação de chamados abertos apenas por mim PARA obter um melhor feedback sobre o seu andamento e solução.

Descrevendo comportamentos com BDD

O BDD (Behavior Driven Development) indica o comportamento que determinada funcionalidade deve possuir, sendo ela um aperfeiçoamento das práticas TDD e ATDD. Com BDD podemos testar a funcionalidade de nossas estórias de usuário, criando cenários de uso para validá-las. Dessa forma, nossas estórias de usuário ficam mais descritivas, possuindo cenários que indicam o seu funcionamento esperado. As palavras chave dado que, quando e então nos apoiam na criação de cenários para descrever o seu comportamento. Vejamos um exemplo utilizando uma estória de usuário já exemplificada:

SENDO um vendedor EU QUERO consultar os meus clientes pelo CNPJ PARA conseguir negociar com ele estando melhor informado.

Exemplo de cenários para a estória acima

Cenário 1: CNPJ Inválido

DADO QUE o vendedor consulta o cliente
E insere um CNPJ inválido
QUANDO apertar no botão “Consultar”
OU clicar fora do campo de CNPJ
ENTÃO uma mensagem informando “CNPJ Inválido, por favor coloque um CNPJ válido.” deve ser exibida

Cenário 2: CNPJ Válido

DADO QUE o vendedor consulta o cliente
E insere um CNPJ válido
QUANDO apertar no botão “Consultar”
OU clicar fora do campo de CNPJ
ENTÃO será exibido uma tabela com uma única linha, contendo a Razão social, CNPJ e Status do cliente
E um botão chamado “Visualizar dados do cliente” será exibido junto a linha retornada

Perceba que usamos o DADO QUE para indicar o cenário atual, o QUANDO para indicar a ação do usuário e o ENTÃO para indicar o comportamento esperado. Também utilizamos o E e o OU para refinar ainda mais os nossos cenários de teste. BDD merece bem mais que alguns parágrafos de explicação, por isso em breve escreverei mais sobre o mesmo. Com prática você irá ganhar velocidade e contar estórias de usuário com facilidade e excelência. Lembre-se ninguém nasce sabendo, então, pratique e siga as boas práticas que te expliquei aqui. Um grande abraço e até a próxima!

Gostou? Então deixe seu comentário e compartilhe com seus amigos. :)

Você pode gostar também

  • Pingback: Product Backlog: O que é? | Cultura Ágil()

  • Cláudia Ib

    Como chamo um Ponto de Extensão em uma estória?

    • Oi Claudia, você está se referindo a um ponto de extensão da UML? Se for, pode me explicar melhor o que deseja fazer?

      • Cláudia Ib

        Isso mesmo, da UML!
        No caso de uso, existe um campo chamado Ponto de Extensão ou Ponto de Inclusão, que informo que em tal momento o PE, por exemplo, será executado.
        Estava pensando se estará correto se eu chamá-lo do próprio cenário. Entendo que as estórias são mais “naturais” ou contadas mais naturalmente do que em um Fluxo Básico ou Alternativo do Caso de Uso.
        Vou colocar um exemplo. Podemos discutir em cima dele ou de outro que você preferir:

        Estória 001 – Cadastrar Clientes:
        Dado que: Sou usuário do sistema;
        Preciso: Cadastrar clientes;
        Para: Acompanhamento de vendas e contatos futuros.

        Cenário 001 – Cadastro:
        Dado que: Preenchi os dados para um novo cadastro;
        Quando: Acionar a opção “Cadastrar”;
        Então: O sistema grava os dados, apresenta mensagem de sucesso e vai para a Estória Gerar Notificação de Cadastro.

        No caso do meu exemplo, fictício, o “Gerar Notificação de Cadastro”, seria o meu ponto de extensão.

        Chamá-lo dessa forma está correto ou há outra maneira?

        Atenciosamente,

        Cláudia Ibias.

        • Oi Claudia, isso que você está fazendo é relação de estórias, ou seja, uma tem dependência com a outra.

          A separação por tema pode te ajudar a melhorar isso, assim se uma história for concluída não precisará esperar a outra ou uma história para começar precisa que a outra já esteja pronta, um tema ajuda nisso.

          Sugiro também que você faça um mapeamento nas estórias de usuário para entender melhor a relações delas.

          Uma outra dica, se desejar, você pode realizar uma modelagem rápida e simples em uma folha de papel para explanar melhor para os programadores ou afins que irão receber aquela história, e depois criar as histórias que representam aquele UML, na estória você coloca uma referência para a documentação que você rabiscou. Isso é uma prática comum quando falamos em requisitos ágeis.

          Outra dica para o cenário que você criou, procure deixar mais explicito, assim:

          Então: O sistema grava os dados
          E: apresenta mensagem de sucesso
          E: vai para a Estória Gerar Notificação de Cadastro.

  • Amandita Rodrigues

    Bom dia! Ótima matéria para guiar na criação de histórias. Só um detalhe que sugiro corrigir (não no scrum, claro rss): nos dois cenários de histórias, na segunda linha, vc diz “e inseri …”, a flexão “inserí” do verbo inserir refere-se à primeira pessoa no passado. Neste caso você fala da terceira pessoa no presente, então a flexão correta do verbo é “insere”. 🙂
    Obrigada pela matéria e pela atenção

    • Oi Amandita, obrigado pelo comentário!

      Vou providenciar as correções que você citou. Obrigado!

  • Gustavo Venceslau

    Pergunda básica: No Scrum é “história” ou “estória” ? Apesar de ser básica, encontrei várias referências divergindo nessa resposta.

  • Pingback: 5 Passos para estimar seu backlog em menos de 1 hora - Cultura Ágil()

  • Acácio Joana Martins

    Parabéns! Banaca o artigo!

  • Alexandre Xhuntet

    Parabéns Kleber! O artigo é objetivo e rico. Me ajudou muito no trabalho acadêmico em que estou trabalhando.
    Obrigado!
    Alexandre.