View
752
Download
1
Category
Preview:
DESCRIPTION
Uma introdução à Especificação por meio de Exemplos. Segue conteúdo do livro Specification By Example, Gojko Adzic, Manning, 2011.
Citation preview
Especificação por meio de exemplosUMA INTRODUÇÃO
Fábio Nogueira de Lucena
Referência
Specification By Example: How successful teams deliver the right softwareGojko Adzic, Manning, 2011
http://specificationbyexample.com/
Créditos para o autor e sua obra
Specification By Example: How successful teams deliver the right softwareGojko Adzic, Manning, 2011
Frases, citações e excertos obtidosdeste livro.
Aviso
As informações aqui contidas são uma interpretação do conteúdo do livro indicado no slide anterior.
Consulte o original para detalhes.
Esteja alerta!
Tecnologias são propostas e criadas continuamente para resolver problemas. Duas questões surgem:
A estratégia realmente contribui? O problema resolvido é parecido com o meu?
Orientações
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 aceitação ágil
Behavior-Driven Development
Specification by Example, ...
Apresentado por meio de padrões
Tradicionalmente, ...
Desenvolver software exige extensas especificações funcionais e longas fases de testes.
O que não é compatível com liberações semanais.
O que precisamos?
Evitar especificação “exagerada” Documentação confiável que explica o que o sistema
faz Verificar de forma eficiente se o sistema faz o que a
especificação diz. Manter documentação relevante e confiável com o
mínimo de custo de manutenção.
Especificação por meio de exemplos é uma estratégia dirigida para atingir estes objetivos.
Especificação por meio deexemplos é um conjunto de
padrões de processo.
“Ao revelar os padrões de processos empregados por equipes de sucesso,eu espero ajudar outros a implementar estas ideias deliberadamente.”Gojko AdzicSpecification By ExampleManning, 2011.
Padrões de processos
Derivar escopo de objetivos
Especificar de forma colaborativa
Ilustrar usando exemplos
Refinar a especificação
Automatizar a validação sem alterar especificações
Validar frequentemente
Evoluir o sistema de documentação
Derivar escopo de objetivos
Derivar escopo de objetivos
Domínio da solução
Domínio do problema
Derivar escopo de objetivos(contexto)
Escopo é solução para problema do domínio.
Escopo é um meio de se atingir um objetivo de negócio.
Muitos esperam a definição do escopo pelo cliente, product owner ou usuário antes de iniciar a implementação.
Tudo que ocorre antes da implementação é geralmente ignorado pela equipe de desenvolvimento.
Após a especificação, desenvolvedores implementam a solução.
Derivar escopo de objetivos
Se clientes definem o escopo, então o projeto não se beneficia do conhecimento das pessoas na equipe de desenvolvimento.
O software fará o que o cliente pediu, mas não necessariamente o que precisava.
O Código de Trânsito Brasileiro foi alterado(Lei nº 11.910 de 18 de março de 2009)
“Art. 105. São equipamentos obrigatórios dos veículos, entre outros a serem estabelecidos pelo CONTRAN: (...)
VII - equipamento suplementar de retenção – air bag frontal para o condutor e o passageiro do banco dianteiro. (...)
CONTRAN, Resolução no. 312, instituiu a obrigatoriedade do sistema antitravamento das rodas (freio ABS).
ESCOPO
SegurançaOBJETIVO
“Eu quero um carro com vido elétrico, ... Sério?
ESCOPO
Ah, conforto.OBJETIVO
Posso indicar o carro com as características, mas comoespecialista em automóveis, se eu conhecesse o real objetivo, possivelmente seria mais útil, efetivo, ...
RESUMO
Derivar escopo de objetivos
‘Em vez de “cegamente” aceitar requisitos como a solução para um problema desconhecido, equipes de sucesso derivam escopo de objetivos.’Gojko Adzic
Derivar escopo de objetivos
Inicia-se com objetivo de negócio do cliente.
Todos colaboram para definir o escopo que atinge o objetivo.
A equipe trabalha com os usuários do negócio na determinação da solução.
Aqueles do negócio concentram-se no objetivo de uma característica desejável e no valor que esperam extrair dela.
A equipe então sugere uma solução que é mais barata, mais rápida, ...
Especificar de forma colaborativa
Em vez de contar com uma única pessoa para obter as especificações corretamente, equipes de sucesso colaboram com entendidos no negócio para especificar a solução.
Cria uma “propriedade compartilhada”das especificações, tornando a equipe mais engajada.
Ilustrar usando exemplos
Em vez de esperar pelo registro preciso deespecificações em uma linguagem de programaçãodurante a implementação, equipes de sucessoilustram especificações usando exemplos.
Equipe trabalha com especialistas do negóciopara identificar “exemplos chave” quedescrevem a funcionalidade esperada.
Desenvolvedores sugerem exemplos queilustram casos “problemáticos”.
Todos têm uma compreensão compartilhadado que precisa ser produzido.
Exemplos chave servem como alvo paradesenvolvedores e como critério de avaliaçãoobjetivo para checar se o desenvolvimentoestá concluído.
Se os exemplos são fáceis de entender,então podem ser empregados comorequisitos detalhados e não ambíguos.
Refinar a especificação
Especialistas no negócio tendem a pensarda perspectiva da interface com o usuário.
Detalhar como algo deve ser feito é emvez do que é exigido é um desperdício.
Muitos detalhes tornam exemplos difíceisde comunicar e compreender.
Equipes de sucesso, ao refinar a especificação,removem informações “não essenciais”e criam um contexto preciso e concretopara o desenvolvimento e testes.
Equipes de sucesso especificamo que é suposto que o softwarefaça, em vez de como ele faz.
Cucumber (exemplo)
Especificação com exemplos é uma especificação de trabalho, é um teste de aceitação, é um teste funcional.
Automatizar a validaçãosem alterar especificações
Verificação rápida é essencial para o desenvolvimentode software em iterações curtas.
Ou seja, é preciso tornar o processo de validação barato e eficiente.
Solução óbvia: automação.
Automação sim, mas como?
Rhino Mocks
Especificações automatizadastecnicamente são inacessíveis aos especialistas do negócio.
Várias versões
Versão desenvolvedor Versão mais legível
Sincronização???!!!
Equipes de sucesso não correm o risco de“tradução entre formatos”.
Exemplos chave que são compreensíveis eacessíveis a toda a equipe tornam-seespecificações executáveis.
Cucumber (exemplo)
Se é preciso alterar, então há um único lugar.
Única fonte
Consumida pordesenvolvedores,
responsáveis por testes,especialistas no domínio,
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 formade fazer isto é recorrer ao código ou encontrar alguém que possa fazer para nós.
Código é, frequentemente, a única coisa em quepodemos confiar; muita documentação é desatualizada antes do término do projeto.
Desenvolvedores são oráculos de conhecimentoe gargalos de informação.
Evoluir o sistema dedocumentação
Ao longo do tempo, mudanças ocorrem eprovocam atualizações na“documentação viva”.
Créditos para o autor e sua obra(agradecimentos finais)
Specification By Example: How successful teams deliver the right softwareGojko Adzic, Manning, 2011
Frases, citações e excertos obtidosdeste livro.
Recommended