Segue exemplo de resolução com história e tarefas técnicas para o segundo exercício
O foco do exercício foi em software
História do usuário:
Como jogador de competição, gostaria que o meu carrinho fosse capaz de realizar manobras radicais como curva em 180 graus (cavalo de pau)
Tarefas Técnicas:
A. Planejamento
Discussão inicial com o grupo para entendimento da história
Planejamento técnico do software necessário
Planejamento dos testes unitários, integração e aceitação
Planejamento da massa de dados para testes
Pesquisa sobre movimentos radicais com carrinhos
Planejamento de sessões de mentorização, programação em pares e revisão de código
B. Design
Criação de desenho dos módulos de software desta história
Especificação macro de funcionalidades da história
Divisão de trabalho entre os membros da equipe
C. Testes unitários de software
Derivar novas branches de desenvolvimento para esta história, de acordo com as funcionalidades planejadas
Escrita de teste unitário para chamar função básica de movimento (ex.: seguir em frente)
Escrita de teste unitário para chamar função básica de movimento (ex.: virar a direita)
Escrita de teste unitário para chamar função básica para interromper movimento (ex.: freios dianteiros)
Escrita de teste de integração para combinar movimento de frente e direita
Escrita de teste de integração para combinar movimento de frente, direita e uso de freios
Execução de todos os testes, com falha esperada (primeiro passo do TDD)
Voluntariar-se para ajudar um colega com testes
Teste unitário dos componentes de hardware
D. Codificação
Voluntariar-se para ajudar um colega com código
Escrita de função universal de movimento, a qual deve retornar um booleano com resultado da ação
Exemplo em pseudo-código:
booleano solicitaMovimento (char tipoMovimento, int pinosMovimento) {
bool resultadoMovimento = false;
invocaFuncaoPlacaArduinoParaMovimento(char voltagem, int pinosMovimento);
int resultadoLeitura = realizaLeituraPlacaArduino(int pinos);
if (resultadoLeitura == pinosMovimento)
resultadoMovimento = true;
return resultadoMovimento;
}
Escrita de função para realizar curvas
Escrita de função para freios
Escrita de função para manobra radical
Escrita de função para integrar manobra radical no código principal do projeto
Realização de commits e pushs para cada uma das funções acima
E. Execução de testes de software
Execução de todos os testes planejados em cima dos códigos escritos (segundo passo do TDD)
Revisão, elaboração e execução de testes exploratórios adicionais
Realização de commits e pushs para cada um dos testes acima
Abertura e resolução de defeitos em caso de problemas
Refatoração de código
F. Revisão de código
Abertura de Pull Request entre esta nova branch e a branch de dev, com detalhamento do código e testes realizados
Solicitação de revisão de código por membros da equipe
Revisão para verificar se variáveis e funções possuem nomes significativos
Revisão para verificar se cada função projetada realiza apenas uma tarefa, e em caso de mais de uma, trabalhar para dividir melhor o trabalho (refatoração)
Fornecer feedbacks sobre o código e teste
G. Integração DEV de software
Realização de MERGE em dev após revisão do código
H. Preparação de demonstração de software da história desenvolvida
Planejar 2 cenários de manobras radicais
cenário 1 - carrinho realiza manobra de curva sem freiar
cenário 2 - carrinho realiza manobra de curva usando freios
Executar os cenários planejados e coletar feedback do grupo
Pessoal,
Segue exemplo de resolução com história e tarefas técnicas para o segundo exercício O foco do exercício foi em software
História do usuário:
Como jogador de competição, gostaria que o meu carrinho fosse capaz de realizar manobras radicais como curva em 180 graus (cavalo de pau)
Tarefas Técnicas:
A. Planejamento
B. Design
C. Testes unitários de software
D. Codificação
Exemplo em pseudo-código:
booleano solicitaMovimento (char tipoMovimento, int pinosMovimento) { bool resultadoMovimento = false; invocaFuncaoPlacaArduinoParaMovimento(char voltagem, int pinosMovimento); int resultadoLeitura = realizaLeituraPlacaArduino(int pinos); if (resultadoLeitura == pinosMovimento) resultadoMovimento = true;
}
E. Execução de testes de software
F. Revisão de código
G. Integração DEV de software
H. Preparação de demonstração de software da história desenvolvida