de tempo e energia, considerando que o cliente aprende e muda de ideia à medida
que as iterações vão sendo concluídas.
Para ilustrar melhor este exemplo, imagine uma história que tenha como obje-
tivo a criação de um relatório
de apuração de impostos. Imagine que, segundo sua
prioridade, ela será implementada somente daqui a seis meses, mas que ainda as-
sim, inicia-se um trabalho de análise e discussão sobre ela. Se o governo realizar
alguma mudança no plano tributário, você provavelmente terá desperdiçado tempo
e dinheiro!
3. Histórias devem agregar valor aos clientes. Como mencionado anteriormente,
histórias devem descrever funcionalidades que de alguma forma oferecerão ao cli-
ente retorno ao seu investimento. Por essa razão, histórias de caráter técnico não
são aconselháveis, por exemplo, atualizar o Spring Framework para versão 2.5 não
agrega valor de negócio ao software, pelo menos não diretamente, isso não significa que você não possa fazê-lo, mas é aconselhável que exista uma história escrita pelo cliente que a justifique;
4. Histórias devem ser estimáveis. É importante que os desenvolvedores sejam
capazes de estimá-las. Para que sejam estimáveis é necessário que os desenvolve-
dores possuam ou tenham acesso através do cliente ao conhecimento de negócio,
e possuam também o conhecimento técnico necessário para transformar a história
em software. Seria inviável pedir a um desenvolvedor que nunca escreveu uma linha
de código em Java que estime o esforço para desenvolver um pedido de venda em
um projeto Java EE com EJB 3. O mesmo aconteceria se pedíssemos ao desenvolve-
dor para que estimasse o esforço para criar um relatório de fluxo de caixa, sem antes explicar a ele o que é um fluxo de caixa;
5. Histórias devem ser pequenas. Histórias muito grandes são difíceis de esti-
47
3.6. Escrevendo Histórias de Usuário
Casa do Código
mar, por isso deve-se tomar os devidos cuidados para mantê-las sempre curtas e,
quando necessário, quebrá-las em histórias menores. Para ilustrar melhor, imagine
a seguinte história: Um usuário pode realizar compras na loja virtual. Ela pode
envolver muitas funcionalidades que estão implícitas, e por isso, pode gerar diferentes interpretações e levar os desenvolvedores ao erro. Em casos como este, podemos
quebrar a história grande em outras histórias menores: Um usuário pode adicionar
produtos ao seu carrinho de compras, Ao finalizar a compra o usuário deve esco-
lher a forma de pagamento, Para compras acima de R$100,00 o frete deverá ser
gratuito etc.;
6. Histórias devem ser testáveis. É preciso ter critérios de aceitação bem defini-
dos para que um desenvolvedor possa saber quando uma história está ou não con-
cluída. Uma boa prática ao usar cartões para escrever as histórias é pedir ao cliente que escreva alguns critérios de aceitação no verso do cartão.
Para que a história seja testável, é preciso que o cliente escreva critérios objetivos e concretos. Por exemplo, O relatório deve ser intuitivo é um exemplo de crité-
rio difícil testar, porque o conceito de intuitivo é abstrato e subjetivo, pode possuir significados diferentes para cada pessoa. Ao invés disso, o relatório deve possuir um rodapé com a soma dos valores ou o título das colunas deve se manter fixo ao
navegar entre os lançamentos são exemplos de critérios fáceis de testar, bastando
que o desenvolvedor certifique-se de que eles estão sendo atendidos para saber se a história será aceita pelo cliente.
Essas características formam o acrônimo INVEST:
I - Independente
N - Negociável
V - Valiosa
E - Estimável
S - Sucinta
T - Testável
Temas, Épicos, Funcionalidades e Histórias
É comum que muitos projetos de software, naturalmente, possuam uma estru-
tura hierárquica de requisitos, de forma que algumas necessidades do usuário de alto 48
Casa do Código
Capítulo 3. Foco em Valor para o Negócio
nível podem ser derivadas em diversas partes menores que, por sua vez, podem ser
dividas novamente até uma granularidade que possa ser mais facilmente compreen-
dida e que possa ser desenvolvida em um determinado espaço de tempo.
Dean Leffingwell, sugere que a hierarquia de requisitos comece com Temasque
representam um conjunto de iniciativas que guiam os investimentos em sistemas,
produtos, serviços e aplicações [37]. Desses temas são derivados os épicos, inicia-
tivas de desenvolvimento que têm potencial de agregar valor ao tema do qual foi
derivado. São requisitos em alto
nível e não são implementados diretamente, antes,
são quebrados em funcionalidades, que posteriormente são quebradas em histórias
de usuário (veja na figura 3.4).
Temas >> Épicos >> Funcionalidades >> Histórias
Figura 3.4: Hierarquia de Requisitos
Épicos são requisitos grandes que, geralmente, não podem ser implementados
em uma única iteração e, normalmente, contemplam diversos eventos, fluxos e ce-
nários. Por questões de organização e priorização, muita vezes, é interessante manter 49
3.6. Escrevendo Histórias de Usuário