Você está na página 1de 8

Agilidade

Nesta seo voc encontra artigos voltados para as prticas e mtodos geis.

Trabalhando com requisitos geis


Utilize histrias de usurio com Scrum e Behaviour-Driven Development

Requisitos geis: ciclo o desenvolvedor escreve um caso de teste au-


O desenvolvimento de projetos de software con- tomatizado. Feito isso, o cdigo da funcionalidade
tinua passando por adaptaes significativas. Nos elaborado e apenas aprovado quando passar com
ltimos anos tem-se observado ao crescimento da sucesso no caso de teste definido anteriormente.
aplicao de conceitos de agilidade em atividades Normalmente, um ciclo de desenvolvimento utili-
do desenvolvimento. Talvez o principal objetivo zando o TDD considera as seguintes atividades: de-
desses conceitos possa ser resumido no fato de finir um teste, executar os testes, escrever o cdigo,
entregar rapidamente as necessidades de maior executar novamente os testes, refatorar o cdigo e
valor agregado para o cliente. Para isso, o paradig- repetir o processo at que todo cdigo seja aprova-
ma gil foca naquilo que essencial no desenvol- do pelos casos de teste escritos.
vimento do projeto, evitando assim o uso muitas Neste contexto, este artigo retrata a forma de
vezes excessivo de documento durante o projeto. documentar requisitos com foco em testes de
O Behaviour-Driven Development (Desenvol- aceitao e com uma linguagem comum entre
vimento Guiado por Comportamento) tem por especialistas de domnio e equipe de desenvolvi-
objetivo ajudar o desenvolvimento na entrega mento. A abordagem utilizada baseada em inte-
priorizada, com valor de negcio verificvel, for- grao entre o Behaviour-Driven Development e o
necendo um vocabulrio comum que abrange as Scrum. Este ltimo define uma maneira simples e
Carlos Alberto Tristacci reas de negcio e de tecnologia. Reuni ideias do repetvel de gesto do trabalho que pode ser uti-
carlos@tristacci.com.br Test-Driven Development (o qual auxilia o desen- lizada para o desenvolvimento de novos projetos
Consultor de TI e articulista de portais e volvedor a criar cdigo de alta qualidade, por meio ou produtos.
revistas sobre Gerenciamento de Projetos de testes de unidade escritos antes da implemen-
e Engenharia de Software. Bacharel em
Administrao pelo IESB, Especialista em
tao do cdigo), Acceptance Test Driven Planning Em que situao o tema til:
Anlise de Sistemas Orientados a Objetos (escrever testes durante a reunio de planejamen- Para quem tem como objetivo trabalhar com os
pelo IESB. O foco principal de seu trabalho to da iterao) e Domain-Driven Design (DDD). requisitos em um ambiente gil, com a documen-
no gerenciamento de projetos, anlise de O test-driven development se refere a uma tcnica tao na medida certa para cada fase do processo
negcios e no desenvolvimento de softwa- de desenvolvimento de software que se baseia em de desenvolvimento de software, com foco na
re, atuando na liderana de equipes e no
coaching de mtodos geis. Membro da
ciclos curtos de desenvolvimento onde para cada modelagem colaborativa.
Agile Alliance, Scrum Alliance, Scrum.org,
PMI, IIBA e ISACA.

6 Engenharia de Software Magazine - Trabalhando com requisitos geis


AgiLidAdE

E
ric Evans, em seu livro Domain-Driven Design, destaca do Acceptance Test Driven Planning (ATDP) e do Domain-
que muitas coisas podem fazer um projeto perder seu Driven Design (DDD) em um todo integrado, tornando a
rumo: a burocracia, objetivos pouco claros e a falta relao entre estas duas abordagens mais evidentes.
de recursos, para citar alguns. Mas a abordagem dada ao O TDD ajuda desenvolvedores a criar cdigo de alta
projeto que, em grande parte, determina at que ponto os qualidade, por meio de testes de unidade escritos antes
softwares podem se tornar complexos. Quando a complexida- da implementao do cdigo-fonte para modelar o design
de foge do controle, os desenvolvedores j no podem enten- que se deseja usar. Isto ajuda a evitar defeitos durante essa
der o software bem o suficiente para alter-lo ou expandi-lo implementao, evitando tambm que atividades futuras
com facilidade e segurana. possam afetar as j desenvolvidas.
Cada software est relacionado a alguma atividade ou in- No entanto, os clientes ou especialistas de domnio raramente
teresse do seu usurio. Essa rea de interesse do usurio o tm interesse em cdigo. Eles tm interesse em softwares que
domnio do software. Os domnios dos softwares geralmente os ajudam a ser mais produtivos, ganhar mais dinheiro, manter
tm pouco a ver com computadores. Por isso, para criar ou melhorar a capacidade operacional. Ou seja, necessrio
softwares que tenham valor para as atividades desempenha- entregar software que suporte as funes de negcio ou neces-
das pelos usurios, a equipe de desenvolvimento deve trazer sidades de mercado. ATDD o que ajuda os desenvolvedores a
consigo um conjunto de conhecimentos relacionados a essas criar software de alta qualidade que atenda as necessidades de
atividades. Mas a quantidade de conhecimento necessria pode negcio de uma forma confivel como TDD ajuda a garantir a
ser estarrecedora. O volume e a complexidade de informao qualidade tcnica do software. Mas agora cobrindo o compor-
podem ser imensos. Modelos so ferramentas para atacar tamento, descrevendo os requisitos em histrias de usurios e
essa sobrecarga. Um modelo uma forma de conhecimento no somente no design do cdigo.
seletivamente simplificada e conscientemente estruturada. Um O ATDP traz a abordagem de escrever testes durante a reu-
modelo adequado faz com que as informaes tenham sentido nio de planejamento da iterao, utilizando o ATDD como
e se concentra em um problema. principal prtica para escrever testes. Desta forma, especia-
Outro aspecto relevante a linguagem utilizada. Especia- listas de domnio e equipe de desenvolvimento definem os
listas de um domnio possuem um entendimento limitado do comportamentos esperados para cada funcionalidade do
vocabulrio tcnico usado no desenvolvimento. J os desenvol- sistema e os testes de aceitao, para definir quando a funcio-
vedores, por outro lado, podem entender e discutir o sistema nalidade est pronta.
em termos descritivos e funcionais, desprovidos do significado O BDD uma tcnica de desenvolvimento de software
transmitido pela linguagem dos especialistas. cuja amplitude se estende s atividades de levantamento de
Em meio a essa diviso lingustica, os especialistas de um requisitos, design, documentao, verificao e validao,
domnio descrevem vagamente o que querem. Os desenvol- tratando-as de modo unificado, disciplinado e com foco em
vedores, lutando para entender um domnio novo para eles, qualidade e em entrega rpida de software de valor. BDD
entendem tudo vagamente. encoraja e fornece um ambiente propcio colaborao entre
Por este motivo, um processo sem uma linguagem comum, desenvolvedores e especialistas de domnio em um projeto
faz com que desenvolvedores tenham que traduzir para os de software.
especialistas do domnio. Esses especialistas traduzem entre Apesar de Dan North demonstrar interesse em transformar
cada desenvolvedor e tambm com outros especialistas do o BDD em uma metodologia inteira, no artigo Behaviour-
domnio. At mesmo os desenvolvedores traduzem uns para Driven Stories ele fornece apenas uma forma de utilizar a
os outros. A traduo confunde os conceitos do modelo, o que linguagem ubqua e no fornece demais processos necessrios
leva a uma refatorao destrutiva do cdigo. ao desenvolvimento de software. Sendo assim, este artigo
O custo de toda a traduo, alm do risco de entendimento apresentar como trabalhar com requisitos utilizando o BDD
errado, simplesmente muito alto. Por este motivo, um projeto e o framework Scrum.
precisa de uma linguagem em comum. Essa linguagem deve Scrum uma maneira simples e repetvel de gesto do tra-
ser baseada no modelo e deve ser usada entre os desenvolve- balho que pode ser usado para projetos ou produtos. Ele foi
dores para descrever no s artefatos do sistema, mas tarefas originalmente projetado para o trabalho de desenvolvimento
e funcionalidades. de software, mas no especfico para este fim e, por isso, pode
Existem maneiras sistemticas de pensar que podem ser ser utilizado para gerenciar qualquer trabalho. Alm disso, o
empregadas pelos desenvolvedores na busca por novas vises Scrum muito difundido na comunidade gil.
e pela gerao de modelos eficazes. Uma destas maneiras o Assim, o Scrum foi escolhido para ajudar no entendimento
Behaviour-Driven Development (BDD) Desenvolvimento da aplicao dos processos de engenharia de requisitos em um
Guiado por Comportamento , que tem por objetivo ajudar o contexto gil, demonstrando a forma de definir e documentar
desenvolvimento na entrega priorizada, com valor de negcio os requisitos durante seus diversos eventos.
verificvel, fornecendo um vocabulrio comum, ou linguagem A partir de agora sero apresentadas um conjunto de prticas
ubqua, que abrange a rea de negcio e a rea de tecnolo- que podem ser utilizadas no apoio s atividades de requisitos
gia. Reunindo ideias do Test-Driven Development (TDD), em cenrios geis de desenvolvimento.

Edio 58 - Engenharia de Software Magazine 7


Definir a viso do produto QUE (o benefcio-chave do produto, compelindo a razo
De acordo com o Scrum, inicialmente definida uma viso de comprar);
que orientar todos os envolvidos sobre o que deve ser de- EM COMPARAO (nome da concorrncia);
senvolvido, tendo o dono do produto como a principal fonte NOSSO PRODUTO (diferencial nico).
de informao do domnio, direcionando a equipe de desen-
volvimento de acordo com seus objetivos estratgicos para Uma viso de produto definida pela declarao de elevador
o produto. A equipe de desenvolvimento, por sua vez, deve estimula os membros da equipe de produto a focar sua viso,
fornecer as informaes tcnicas necessrias formulao do anteriormente diferente, em uma forma concisa e textualmente
documento. Alm disso, todas as pessoas tomam conhecimen- curta. Por exemplo:
to da criao do produto para que possam contribuir com a PARA assinantes;
definio da viso. QUE necessitam acesso ao contedo do assinante de qual-
Ser capaz de antever como um novo produto ou a sua prxima quer lugar;
verso deve se parecer e se comportar essencial para chegar A Revista Digital uma revista eletrnica;
ao objetivo. Esta anteviso resulta em um esboo do produto QUE oferece contedo especializado sobre tecnologia da
futuro. A viso atua como a meta abrangente, reanimando e informao;
orientando as pessoas, e a razo de ser do produto. A viso EM COMPARAO ao atual formato impresso da revista;
descreve por que o projeto est sendo realizado e qual o estado NOSSO PRODUTO possibilita o acesso atravs de qualquer
final desejado. dispositivo, seja ele um computador, tablet ou smartphone.
A viso do produto geralmente concisa se passar pelo teste
do elevador de Moore. A declarao de elevador ou persuaso Caixa de viso do produto
no elevador um gamestorming (ver Nota do DevMan 1) criado Esta ferramenta tem como objetivo criar a viso do produto
por Geoffrey Moore que pode ser jogado individualmente ou como se fosse um software de prateleira, estimulando a equi-
por pequenos grupos de trabalho. Tem por objetivo desenvol- pe de projeto e de produto na criao de uma imagem que
ver e comunicar a viso de algo, devendo ser curta o suficiente represente o mesmo.
para ser comunicada em uma subida fictcia de elevador, toda- Na atividade de desenho da caixa, a equipe inteira, incluindo
via, deve conter uma descrio convincente do problema que os membros da equipe de clientes de produto, divide-se em
se est solucionando, para quem ir solucionar, e um benefcio grupos de quatro a seis pessoas. Suas tarefas sero desenhar
importante que o diferencie das outras ideias. a caixa do produto, frente e verso. Na frente deve ser definido
o nome do produto e de trs a quatro caractersticas-chave
para vender o produto. No verso deve haver uma descrio
Nota do DevMan 1 detalhada das caractersticas e instrues de operao.
Aps os grupos conclurem as caixas do produto, as mesmas
devem ser apresentadas e os grupos devem discutir sobre
Gamestorming: um conjunto de prticas co-criadas a partir de pessoas inova- suas diferentes vises sobre o produto e condens-las em uma
doras de diversas empresas em diversos lugares do mundo. nica viso que todos concordem. Esse exerccio ajuda a gerar
muitas informaes boas, esclarecendo o propsito para qual
o produto est sendo criado, alm de ser divertido e, tambm,
ajudar a criar coeso na equipe. A Figura 1 mostra um exemplo
Este gamestorming envolve uma fase de gerao e uma fase de caixa do produto.
de formao. Para preparar a fase de gerao, responda as
seguintes perguntas:
Quem o cliente-alvo?
Qual a necessidade do cliente?
Qual o nome do produto?
Qual a sua categoria no mercado?
Qual seu benefcio mais importante?
Quem ou o que a concorrncia?
Qual o diferencial nico do produto?

Esses se tornaro os elementos da persuaso no elevador,


que ser desenvolvida na fase de formao, seguindo a se-
guinte estrutura:
PARA (cliente-alvo);
QUE (necessidade do cliente);
O (nome do produto) a (categoria no mercado); Figura 1. Exemplo de Caixa de Viso do Produto

8 Engenharia de Software Magazine - Trabalhando com requisitos geis


AgiLidAdE

Arquitetura do produto a quantidade de informaes necessrias para executar suas


O objetivo da arquitetura de produto definir um esqueleto atividades e atingir o objetivo da Sprint.
inicial para guiar tanto o trabalho tcnico quanto a organiza- Para ajudar nesta atividade, os membros da equipe devem
o de pessoas que executam o trabalho tcnico. A inteno responder constantemente a pergunta: Quais so os processos
comunicar o contexto geral equipe de desenvolvimento e no e a documentao que devem estar disponveis para neces-
limitar o projeto, pois no desenvolvimento gil a arquitetura sidade de desenvolvimento?.
um guia, e no uma camisa de fora. As histrias de usurio que sero apresentadas neste artigo
A modelagem gil incentiva esboos estruturais para criar so uma forma de entregar informao para a equipe de
uma viso geral da abordagem e ajudar a determinar estima- desenvolvimento e poderiam estar declaradas como itens da
tivas de custo e cronograma, seguida por uma evoluo na definio de preparado.
arquitetura e no design.
Uma estrutura analtica de funcionalidades Feature Bre- Definio de pronto
akdown Structure (FBS) pode ser usada para ilustrar um A definio de pronto uma simples lista de atividades (escre-
modelo de arquitetura de produto. Muitas representaes ver cdigo, testes unitrios, testes de integrao, documentos
da arquitetura so teis para as equipes tcnicas, mas a FBS de projeto, etc.) que adiciona valor verificvel/demonstrvel
serve para a comunicao entre o dono do produto e a equipe ao produto. Focar nas atividades permite que a equipe se
de desenvolvimento. concentre no que deve ser concludo, eliminando atividades
A FBS, a partir da construo de um modelo geral, tem desnecessrias que s complicam os esforos de desenvolvi-
as regras de negcio identificadas e decompostas em aes mento de software.
menores. Cada ao uma funcionalidade do sistema. Essas Scrum pede que as equipes entreguem software potencial-
funcionalidades tambm so conhecidas como funes de mente entregvel no final de cada sprint. Software potencial-
valor para o cliente e podem ser expressas no formato de mente entregvel uma funcionalidade que pode ser liberada
histrias de usurio. para os usurios finais, a critrio do dono do produto, que
Exemplo: esteja de acordo com a definio de pronto. Por exemplo: os
Acesso itens do backlog do produto devem ser trabalhados conforme
- Autenticao a definio de pronto:
- Alterar senha Em conformidade com os navegadores:
- Recuperar senha - Internet Explorer 8+;
Usurio - Safari 5+;
- Consultar Usurio - Google Chrome 20+;
- Cadastrar Usurio - Mozilla Firefox 14+;
- Alterar Usurio - Opera 11+.
Assinatura Em conformidade com os dispositivos (responsivo):
- Consultar Assinatura - Apple iPhone;
- Cadastrar Assinatura - Apple iPad
- Alterar Assinatura - Samsung Galaxy SI.
Passado nos testes de aceitao
Definio de preparado Documentao
A definio de preparado deve deixar claro quando um - Atualizao das Histrias de Usurio na Wiki;
requisito est com o detalhamento necessrio, e somente o - Atualizao do Manual do Usurio.
necessrio, para ser desenvolvido. Um item preparado deve ser Rodando em Ambiente de Homologao.
claro, vivel e testado. Uma histria de usurio clara se todos
os membros da equipe de desenvolvimento tm uma compre- Definir o backlog do produto
enso compartilhada sobre ela. Escrever histrias de usurio O objetivo de criar um backlog do produto expandir a viso
de forma colaborativa, adicionando critrios de aceitao para do produto, atravs de um processo evolutivo de definio
as que tiverem prioridade mais alta facilita a clareza. das necessidades, dentro de uma lista de funcionalidades do
A histria vivel se ela pode ser concluda em uma Sprint, produto, ou backlog.
de acordo com a definio de pronto. Isto implica em duas Na fase de anteviso, a equipe cria uma estrutura analtica
coisas: o item deve ser pequeno o suficiente e no deve ser do produto na qual as funcionalidades so identificadas. Na
muito complexo. fase de especulao, a equipe expande essa lista, e para cada
Um item testvel se existe um modo eficaz para determinar funcionalidade, cria um ou mais cartes de histria que con-
se a funcionalidade funciona conforme o esperado. Critrios de tm informaes bsicas de descrio, estimativa, priorizao
aceitao asseguram que cada histria pode ser testada. e custo.
A partir desta conceituao podemos definir o que deve Ao documentar os requisitos de um sistema a equipe deve
ser preparado para que a equipe de desenvolvimento tenha ter cuidado, pois quando algo escrito, parece oficial, formal e

Edio 58 - Engenharia de Software Magazine 9


definitivo, e faz com que a equipe desenvolva o software sem
questionar o que foi escrito e sem revisar o significado, alm
de diminuir a responsabilidade compartilhada da equipe.
Estas desvantagens da comunicao escrita no querem di-
zer que se deve abandonar os documentos de requisitos por
escrito. Em vez disso, devem-se usar documentos quando for
apropriado. Uma vez que o manifesto gil descreve software
funcionando mais que documentao abrangente, o desenvol-
vimento gil foi mal interpretado como contra a documentao.
O objetivo no desenvolvimento gil encontrar o equilbrio
certo entre documentao e discusso.
As histrias de usurio so a melhor maneira de mudar o foco
Figura 2. Modelo de carto
da redao dos requisitos para a sua discusso. Uma histria
de usurio uma descrio curta e simples de um requisito
contada a partir da perspectiva do especialista de domnio. Algumas pessoas podem considerar o por que desneces-
srio. No entanto, importante deixar explcito o motivo pelo
Histrias de usurio qual o recurso da histria importante. Muitas vezes, quando
Histrias de usurios so originrias do extreme program- h dificuldade em justificar a existncia de uma histria,
ming, mas podem ser facilmente utilizadas para coleta de por que ela no importante. Em uma conversa, responder
requisitos em qualquer processo de desenvolvimento gil. esta pergunta pode ajudar o cliente a analisar se a mesma
No XP, histrias de usurio so muitas vezes escritas pelo realmente importante.
cliente, integrando o cliente diretamente no processo de de- Alm disso, descrever o por que pode influenciar a forma
senvolvimento. Em Scrum, o dono do produto (product owner), como um recurso deve funcionar e pode ajudar a descobrir ou-
muitas vezes escreve as histrias do usurio, com a entrada tros recursos que sejam teis e apoiem os objetivos de negcio.
dos clientes, partes interessadas e da equipe. No entanto, na A Figura 3 exemplifica um carto de histria de usurio.
prtica, qualquer membro da equipe com conhecimento de
domnio suficiente pode escrever histrias de usurios, mas
cabe ao dono do produto aceitar e priorizar essas histrias no
backlog do produto.

Aspectos da histria de usurio


Ron Jeffries (2001) destaca trs importantes aspectos das his-
trias de usurio: Carto, Conversa e Confirmao. Enquanto o
carto contm a descrio da histria, os detalhes so acertados
durante a conversa e recordados durante a confirmao.

Carto
Histrias de usurio so tradicionalmente escritas em um
carto. Um carto no contm toda a informao que constitui Figura 3. Exemplo de carto
o requisito. Ao invs disso, possui apenas o texto suficiente
para identificar a necessidade e para lembrar o que deve ser Conversa
implementado. Notas, estimativas, observaes, coment- Detalhes que podem surgir durante a comunicao do re-
rios, prioridade e custo, entre outras informaes, podem ser quisito do cliente para a equipe de desenvolvimento. Estes
escritas. detalhes iro esclarecer o objetivo da histria.
Dan North (2006), na tentativa de definir uma linguagem
nica para a anlise, desenvolveu um modelo para histria Confirmao
de onde deve se concentrar em quem, o que e por que de um O cliente define com a equipe de desenvolvimento quando
recurso, e no como, conforme representado na Figura 2. a histria de usurio pode ser considerada pronta. Aqui se
Onde o que a funcionalidade do sistema, o por que o tem os critrios de aceitao que confirmam se a histria de
benefcio ou valor da funcionalidade para o negcio e quem usurio est se comportando de acordo com os requisitos.
a pessoa (ou papel) que vai se beneficiar com a funcionalidade. Detalhes que j foram determinados atravs de conversas se
Tendo como vantagem deste modelo a de obrigar a identificar tornam testes.
o valor de entrega de uma histria. Isto ajuda a identificar Testes de aceitao definem as respostas que a funcionalida-
histrias que no agregaro valor ao negcio, tornando fcil de deve fornecer de acordo com cada utilizao por parte do
retir-las do escopo. usurio. Segundo Teles (2006), os testes de aceitao devem ser

10 Engenharia de Software Magazine - Trabalhando com requisitos geis


AgiLidAdE

detalhados para fornecer o mximo de informaes aos desen- Durante a Sprint:


volvedores que faro a manuteno do sistema no futuro e para No so feitas mudanas que podem afetar o objetivo da
validar a funcionalidade ao mximo de modo a assegurar que Sprint;
ela esteja funcionando corretamente. A composio da equipe de desenvolvimento no
Segundo North (2006), o comportamento de uma histria modificada;
simplesmente seu critrio de aceitao. Se o sistema cumpre As metas de qualidade no diminuem;
todos os critrios de aceitao, ele est se comportando corre- O escopo pode ser clarificado e renegociado entre o dono
tamente. Se isso no acontecer, no est. Por este motivo, Dan do produto e a equipe de desenvolvimento quanto mais for
North criou um modelo para capturar os critrios de aceitao aprendido.
de uma histria:
Dado [algum contexto inicial]; Cada Sprint pode ser considerada um projeto com hori-
Quando [algum evento ocorrer]; zonte no maior que um ms. Como os projetos, as Sprints
Ento [verificar resultados]; so utilizadas para realizar algo. Cada Sprint tem a defi-
nio do que para ser construdo, um plano projetado e
Para ilustrar, vamos utilizar como exemplo a autenticao flexvel que ir guiar a construo, o trabalho e o resultado
de um usurio: do produto.
Funcionalidade: Autenticao do assinante;
Como assinante; Reunio de planejamento da Sprint
Quero autenticar no sistema; O trabalho a ser realizado na Sprint planejado na reunio
Para que eu possa acessar o contedo do assinante. de planejamento da Sprint, que consiste em duas etapas.
Na primeira etapa, a equipe de desenvolvimento trabalha
Para que seja possvel definir se a histria est pronta, para prever as funcionalidades que sero desenvolvidas duran-
necessrio verificar diversos cenrios. O usurio pode ser um te a Sprint. O dono do produto apresenta os itens do backlog
assinante vlido e autenticar no sistema, o usurio pode errar do produto ordenados para a equipe e todos colaboram com
sua senha ou pode estar com sua assinatura expirada. Existem o entendimento do trabalho a ser realizado.
outros cenrios possveis, mas com estes possvel demonstrar
o modelo dado-quando-ento, com os seguintes cenrios:
Cenrio: Acesso a rea do assinante
- Dado que estou na tela de autenticao;
- E possuo um usurio registrado;
- E possuo uma assinatura vlida;
- Quando informo usurio
- E informo senha;
- E clico em autenticar;
- Ento visualizo a rea do assinante.

Perceba o uso do E para repetir mltiplas vezes o Dado


e o Quando positivamente.
Cenrio: Assinatura expirada
- Dado que estou na tela de autenticao;
- E possuo o usurio registrado;
- Mas no possuo uma assinatura vlida;
- Quando informo usurio;
- E informo senha;
- E clico em autenticar;
- Ento visualizo a mensagem Assinatura expirada.

Perceba o uso do Mas, usado para estender o Dado


negativamente.

Sprint
Sprints definem o ciclo bsico de desenvolvimento utilizando
o Scrum. Cada sprint composta por uma reunio de plane-
jamento da Sprint, reunies dirias, o trabalho de desenvolvi-
mento, uma reviso da Sprint e a retrospectiva da Sprint.

Edio 58 - Engenharia de Software Magazine 11


A equipe de desenvolvimento, com base no backlog do pro- necessrio antes de se chegar ao cdigo. Ao mesmo tem-
duto, o ltimo incremento do produto e a capacidade projetada, po, utiliza-se a comunicao face a face como fonte de
seleciona os itens do backlog para a Sprint. Aps isso, a equipe informaes para a codificao. A documentao mais
de desenvolvimento, o dono do produto e o ScrumMaster abrangente s ocorre efetivamente quando o cdigo est
determinam a meta da Sprint. pronto. Portanto, a documentao descreve aquilo que foi
Tendo selecionado o trabalho para a Sprint, na segunda efetivamente codificado. No descreve aquilo que se espera
etapa, a equipe decide como ir converter os itens do backlog que seja codificado.
do produto em um incremento de acordo com a definio de Seguindo esta abordagem, o que acaba ocorrendo que a do-
pronto. Os itens do backlog do produto selecionados para a cumentao ps-codificao passa a ser bastante vivel. Dado
Sprint, junto com o plano de entrega destes itens, compem que o conjunto de funcionalidades de uma iterao bastante
o backlog da Sprint. limitado em relao ao total de funcionalidades do projeto, o
esforo de documentao a cada iterao sempre limitado e
Tarefas factvel. Usando este procedimento, a equipe consegue dedicar
Geralmente, durante o planejamento da Sprint, o time quebra bastante tempo s funcionalidades e, em pouco tempo, atualiza
a histria em atividades, que so as aes necessrias para a documentao do projeto.
entregar uma histria. As tarefas normalmente so estimadas Outra prtica que ajuda muito na documentao ps-codi-
em horas, aplicando uma escala de 2, 4 e 8 horas. A tarefa deve ficao a utilizao de ferramentas para gerao automtica
ser atribuda a uma pessoa e deve ser entregue em uma mesma de documentos.
Sprint. Alguns exemplos de tarefas so: Segundo Teles (2006), cada projeto tem caractersticas espe-
Implementar o front-end; cficas e pode necessitar de mais ou menos documentos. Mas,
Implementar o back-end; vale a pena citar alguns documentos que podem ser utilizados
Executar testes de aceitao. em diversos projetos:
Histria de usurio A histria um documento extrema-
Reviso da Sprint mente simples, escrito pelo cliente em um carto, que serve
A reviso da Sprint executada no final da Sprint para como um lembrete da necessidade da equipe dialogar com o
inspecionar o incremento e adaptar o backlog do produto, se cliente no momento de desenvolver a funcionalidade.
necessrio. uma reunio informal, e a apresentao do in- Teste de aceitao Toda histria de usurio deve ser as-
cremento destina-se a motivar e obter comentrios e promover sociada a um conjunto de testes de aceitao, que definem as
a colaborao. respostas que a funcionalidade deve fornecer de acordo com
O resultado da reunio de reviso um backlog do produto a utilizao (cenrio) por parte do usurio.
revisado que define o provvel backlog do produto para a Testes de unidade O teste de unidade, alm de verificar a
prxima Sprint. Nesta etapa, o backlog do produto tambm funcionalidade de uma classe, tambm serve como documenta-
pode ser ajustado completamente para atender a novas o que informa ao seu leitor qual o funcionamento esperado
oportunidades. para os mtodos da classe (ver Nota do DevMan 2).

Retrospectiva da Sprint
A retrospectiva da Sprint tem o propsito de inspecionar
como a ltima Sprint ocorreu em relao s pessoas, relaes, Nota do DevMan 2
processos e ferramentas; identificar e ordenar os principais
itens que foram bem e as potenciais melhorias; e criar um Teste de unidade: Utilizando histrias de usurio no formato do BDD, conforme
plano para implementar melhorias no modo como o trabalho descrito brevemente neste artigo e, em conjunto com ferramentas de automao
realizado. de testes, como o Cucumber, possvel gerar testes automatizados a partir das his-
Essa uma tima oportunidade para discutir o formato dos trias de usurio podendo, de acordo com a definio das necessidades da equipe,
requisitos e como a soluo est sendo documentada. Depois do projeto ou do cliente, substituir os testes de unidade.
de participar de diversos projetos geis, percebe-se que a
forma e o que documentado podem variar em cada projeto.
O foco obter uma documentao til equipe de desenvol-
vimento e que seja de fcil entendimento para os especialistas Processos de negcio Este documento descreve os pro-
de domnio. cessos de negcio que so implementados pelo sistema. Em
muitos projetos, os processos de negcio que so apoiados
Documentos gerados dentro da Sprint pelo sistema so recentes, muito instveis e evoluem com o
Apesar de este artigo estar focado no Scrum e no BDD, sistema. Por esta razo, este documento deve ser atualizado
importante citar as contribuies que a metodologia XP pro- no final de cada Sprint, devendo descrever os processos de
porcionou para a questo da documentao de requisitos. negcio que efetivamente so apoiados pelo sistema. Outros
A XP indica que deve ser documentado apenas o mnimo processos que sero apoiados pelo sistema no futuro no

12 Engenharia de Software Magazine - Trabalhando com requisitos geis


AgiLidAdE

devem fazer parte deste documento e devem estar separados Referncias


em outro documento, que pode servir para ajudar a aprimorar
[1] COHN, Mike. Desenvolvimento de Software com Scrum: Aplicando mtodos geis
o Backlog do Produto; com sucesso. Porto Alegre: Bookman, 2011.
Modelos de classes O diagrama de classes representa a
estrutura do sistema, recorrendo ao conceito de classe e suas [2] COHN. Mike. User Stories Applied: For Agile Software Development. Estados
relaes. Serve para dar uma viso geral do sistema e pode ser Unidos: Addison-Wesley, 2004.
gerada aps a implementao.
[3] EVANS, Eric. Domain-Driven Design: Atacando as complexidades no corao do
Modelo de dados Durante a iterao, a equipe deve fazer as
software. Rio de Janeiro: Alta Books, 2009.
alteraes que julgar necessrias no banco de dados de desenvol-
vimento. Ao final da iterao, uma ferramenta pode fazer a enge- [4] GRAY, Dave; BROWN, Sunni; MACANUFO, James. Gamestorming: Jogos Corporativos
nharia reversa das tabelas que compem o banco de dados; para Mudar, Inovar e Quebrar Regras. Rio de Janeiro: Alta Books, 2012.
Manual de usurio O manual do usurio descreve os pro-
cessos de negcio atravs das telas do sistema e das aes que [5] JEFFRIES, Ron. Essential XP: Card, Conversation, Confirmation. 2001.
o usurio deve fazer em cada uma delas. Demonstra como os http://xprogramming.com/articles/expcardconversationconfirmation/
processos de negcio foram mapeados para dentro do sistema
[6] HIGHSMITH, Jim. Gerenciamento gil de Projeto: Criando produtos inovadores.
indicando todos os passos que o usurio deve seguir para
Rio de Janeiro: Alta Books, 2012.
efetuar operaes no software.
Prottipos Construir um prottipo outro mtodo para ob- [7] KOSKELA, Lasse. Acceptance TDD Explained. 2008.
ter respostas iniciais sobre os requisitos atravs de um modelo http://www.methodsandtools.com/archive/archive.php?id=72
funcional do produto esperado antes de constru-lo.
[8] NORTH, Dan. Introducing BDD. 2006.
Concluso http://dannorth.net/introducing-bdd/
A forma de elicitar, documentar e comunicar os requisitos a
partir dos princpios geis demonstra-se uma abordagem mais [9] PANCHAL, Dhanvai. What is Definition of Done (DoD)?. 2008.
flexvel e que promove maior interatividade entre especialistas http://www.scrumalliance.org/articles/105-what-is-definition-of-done-dod
de domnio e equipe de desenvolvimento.
[10] PICHLER, Roman. Gesto de Produtos com Scrum: Implementando mtodos
O modelo apresentado pelo Behaviour-Driven Development
geis na criao e desenvolvimento de produtos. Rio de Janeiro: Elsevier, 2011.
ajuda o processo de anlise dos requisitos por meio de uma
forma simples e estruturada e que utiliza a linguagem de ne- [11] PICHLER, Roman. The Definition of Ready. 2010.
gcio para descrever o comportamento do sistema, tornando http://www.romanpichler.com/blog/product-backlog/the-definition-of-ready/
mais transparente os resultados que devem ser alcanados.
E se considerarmos que o software o produto mais male- [12] PMI, Project Management Institute.
vel que existe, as empresas precisam usar estas caracters- http://www.pmi.org
ticas para sua vantagem competitiva. Manterem-se presas ao
tradicional desenvolvimento em cascata invalida ou dificulta [13] SUTHERLAND, Jeff; SCHWABER, Ken. Guia do Scrum: Um guia definitivo para o
essa vantagem. Scrum. 2011.
Devido velocidade com que as exigncias do mercado se modi- http://scrum.org/Scrum-Guides
ficam, torna-se fundamental poder realizar mudanas no escopo
[14] SCHWABER, Ken. SCRUM Development Process. s/d.
de produtos de software para que eles atendam as necessidades
http://gowegian.5gbfree.com/scrumDevelopmentProcess.pdf
do negcio. Com isso, requisitos geis vm para promover uma
forma factvel de documentar e comunicar os requisitos. [15] TELES, Vincius. Extreme Programming: aprendendo como encantar seus usurios
desenvolvendo software com agilidade e alta qualidade. So Paulo: Novatec, 2006.

D seu feedback sobre esta edio! Feedback


eu [16] WATERS, Kelly. What is Scrum?. 2011.
s
D

A Engenharia de Software Magazine tem que ser feita ao seu gosto. http://www.allaboutagile.com/what-is-scrum/
sobre e

Para isso, precisamos saber o que voc, leitor, acha da revista!


[17] WATT, Richard; LEIGH-FELLOWS, David. Acceptance Test Driven Planning. 2010.
s

ta
edio
D seu voto sobre este artigo, atravs do link:
http://www.vietnamesetestingboard.org/zbxe/?document_srl=276643
www.devmedia.com.br/esmag/feedback

Edio 58 - Engenharia de Software Magazine 13

Você também pode gostar