Anda di halaman 1dari 52

Especificao por

meio de exemplos
UMA INTRODUO
Fbio Nogueira de Lucena
Referncia
Specification By Example:
How successful teams deliver the right software
Gojko Adzic, Manning, 2011
http://specificationbyexample.com/
Crditos para o autor e sua obra
Specification By Example:
How successful teams deliver the right software
Gojko Adzic, Manning, 2011
Frases, citaes e excertos obtidos
deste livro.
Aviso
As informaes aqui contidas so
uma interpretao do contedo do
livro indicado no slide anterior.
Consulte o original para detalhes.
Esteja alerta!
Tecnologias so propostas e criadas continuamente para resolver
problemas. Duas questes surgem:
A estratgia realmente contribui?
O problema resolvido parecido
com o meu?
Orientaes
Conhecimento de cerca de 50 projetos.
Alguns pequenos, outros envolvendo equipes espalhadas por
diversos continentes.
Processos executados: XP, Scrum, Kanban e similares.
Outros nomes
Testes de aceitao gil
Behavior-Driven Development
Specification by Example, ...
Apresentado por meio de padres
Tradicionalmente, ...
Desenvolver software exige extensas
especificaes funcionais e longas fases de
testes.

O que no compatvel com liberaes
semanais.
O que precisamos?
Evitar especificao exagerada
Documentao confivel que explica o que o sistema
faz
Verificar de forma eficiente se o sistema faz o que a
especificao diz.
Manter documentao relevante e confivel com o
mnimo de custo de manuteno.

Especificao por meio de exemplos
uma estratgia dirigida para atingir estes objetivos.
Ao revelar os padres de processos
empregados por equipes de sucesso,
eu espero ajudar outros a implementar
estas ideias deliberadamente.
Gojko Adzic
Specification By Example
Manning, 2011.
Padres de processos
Derivar escopo de objetivos
Especificar de forma colaborativa
Ilustrar usando exemplos
Refinar a especificao
Automatizar a validao sem alterar especificaes
Validar frequentemente
Evoluir o sistema de documentao
Derivar escopo de objetivos
Derivar escopo de objetivos
Domnio da soluo
Domnio do problema
Derivar escopo de objetivos
(contexto)
Escopo soluo para problema do domnio.
Escopo um meio de se atingir um objetivo de negcio.
Muitos esperam a definio do escopo pelo cliente, product owner
ou usurio antes de iniciar a implementao.
Tudo que ocorre antes da implementao geralmente ignorado
pela equipe de desenvolvimento.
Aps a especificao, desenvolvedores implementam a soluo.
Derivar escopo de objetivos
Se clientes definem o escopo, ento o projeto no se beneficia do
conhecimento das pessoas na equipe de desenvolvimento.
O software far o que o cliente pediu, mas no necessariamente o
que precisava.
O Cdigo de Trnsito Brasileiro foi alterado
(Lei n 11.910 de 18 de maro de 2009)

Art. 105. So equipamentos obrigatrios dos veculos,
entre outros a serem estabelecidos pelo CONTRAN: (...)

VII - equipamento suplementar de reteno
air bag frontal para o condutor e o passageiro do banco dianteiro. (...)

CONTRAN, Resoluo no. 312, instituiu a obrigatoriedade do sistema
antitravamento das rodas (freio ABS).

ESCOPO
Segurana

OBJETIVO
Eu quero um carro com vido eltrico, ... Srio?

ESCOPO
Ah, conforto.

OBJETIVO
Posso indicar o carro com as caractersticas, mas como
especialista em automveis, se eu conhecesse o real
objetivo, possivelmente seria mais til, efetivo, ...
RESUMO
Derivar escopo de objetivos
Em vez de cegamente aceitar
requisitos como a soluo para um
problema desconhecido, equipes de
sucesso derivam escopo de objetivos.
Gojko Adzic
Derivar escopo de objetivos
Inicia-se com objetivo de negcio do cliente.
Todos colaboram para definir o escopo que atinge o objetivo.
A equipe trabalha com os usurios do negcio na determinao
da soluo.
Aqueles do negcio concentram-se no objetivo de uma
caracterstica desejvel e no valor que esperam extrair dela.
A equipe ento sugere uma soluo que mais barata, mais
rpida, ...
Especificar de forma
colaborativa
Em vez de contar com uma nica pessoa
para obter as especificaes corretamente,
equipes de sucesso colaboram com entendidos no
negcio para especificar a soluo.
Cria uma
propriedade compartilhada
das especificaes, tornando a
equipe mais engajada.
Ilustrar usando exemplos
Em vez de esperar pelo registro preciso de
especificaes em uma linguagem de programao
durante a implementao, equipes de sucesso
ilustram especificaes usando exemplos.
Equipe trabalha com especialistas do negcio
para identificar exemplos chave que
descrevem a funcionalidade esperada.

Desenvolvedores sugerem exemplos que
ilustram casos problemticos.

Todos tm uma compreenso compartilhada
do que precisa ser produzido.
Exemplos chave servem como alvo para
desenvolvedores e como critrio de avaliao
objetivo para checar se o desenvolvimento
est concludo.

Se os exemplos so fceis de entender,
ento podem ser empregados como
requisitos detalhados e no ambguos.
Refinar a especificao
Especialistas no negcio tendem a pensar
da perspectiva da interface com o usurio.


Detalhar como algo deve ser feito em
vez do que exigido um desperdcio.

Muitos detalhes tornam exemplos difceis
de comunicar e compreender.
Equipes de sucesso, ao
refinar a especificao,
removem informaes no essenciais
e criam um contexto preciso e concreto
para o desenvolvimento e testes.
Equipes de sucesso especificam
o que suposto que o software
faa, em vez de como ele faz.
Cucumber (exemplo)
Especificao com
exemplos uma
especificao de trabalho,
um teste de aceitao,
um teste funcional.
Automatizar a validao
sem alterar especificaes
Verificao rpida essencial para o desenvolvimento
de software em iteraes curtas.

Ou seja, preciso tornar o processo de validao
barato e eficiente.

Soluo bvia: automao.
Automao sim, mas como?
Rhino Mocks
Especificaes
automatizadas
tecnicamente
so inacessveis aos
especialistas do negcio.
Vrias verses
Verso desenvolvedor Verso mais legvel
Sincronizao???!!!
Equipes de sucesso no correm o risco de
traduo entre formatos.

Exemplos chave que so
compreensveis e
acessveis a toda a
equipe tornam-se
especificaes
executveis.
Cucumber (exemplo)
Se preciso alterar, ento h um nico lugar.
nica fonte
Consumida por
desenvolvedores,
responsveis por testes,
especialistas no domnio,
e outros.
Fitnesse
Wiki
Concordion
Concordion
Cucumber
specFlow
codeeffects
http://rule.codeeffects.com/
OpenRules
Validar frequentemente
Um suporte eficiente de
software exige sabermos o
qu ele faz e o porqu.

Em muitos casos, a nica forma
de fazer isto recorrer ao
cdigo ou encontrar algum
que possa fazer para ns.
Cdigo , frequentemente, a nica coisa em que
podemos confiar; muita documentao
desatualizada antes do trmino do projeto.

Desenvolvedores so orculos de conhecimento
e gargalos de informao.
Evoluir o sistema de
documentao
Ao longo do tempo, mudanas ocorrem e
provocam atualizaes na
documentao viva.
Crditos para o autor e sua obra
(agradecimentos finais)
Specification By Example:
How successful teams deliver the right software
Gojko Adzic, Manning, 2011
Frases, citaes e excertos obtidos
deste livro.

Anda mungkin juga menyukai