Brian, dono de um aeroclube, quer um sistema de gerenciamento para o seu negócio. Ele pede ajuda a Bregaida, que sugere utilizar DDD, BDD, TDD e Scrum para desenvolver o sistema de forma ágil e iterativa, garantindo que atenda às necessidades do domínio do aeroclube. Bregaida explica os principais conceitos e práticas desses frameworks para desenvolvimento de software.
16. Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Java com Spring
Maven
JQuery
Contas a Pagar e Receber
Você já tem um Web Server ou um Web Container para sua
aplicação?
51. -Driven Design
Voltado (driven) totalmente ao problema a ser resolvido (domain)
Ubiquitous Language
Funciona muito bem com Agile
Modelos ricos (não anêmicos)
Nomes importam!
Domain
55. O que é BDD?
• Foca no comportamento do sistema;
• Visando desenvolvimento voltado a testes;
• Usam uma linguagem comum como visto no DDD;
• Beneficia os desenvolvedores e os usuários de negócio;
• Comporta vários cenários;
• Não apenas o que uma determinada função deve fazer;
• Possui aspectos do DDD e conceitos fundamentais do TDD.
56. Como fazer?
• Narrativa/Estória: (Nome)
• Para ( Valor ao Negócio)
• Eu, como (Papel)
• Desejo poder realizar (Funcionalidade)
• Story: …
• In order to …
• As a …
• I want to …
57. Exemplo
• Narrativa/Estória: Cadastrar Alunos
• Para meu sistema de gerenciamento do Aeroclube
• Eu, como funcionário da secretaria
• Desejo poder realizar cadastros de novos alunos no sistema
58. O que mais?
• Cenários: (Nome)
• Dado que (Estado inicial do sistema)
• Quando (Ação a ser realizada)
• Então (O que deve fazer após a ação)
• Scenario: …
• Given a …
• And …
• When …
• Then …
Mais?
59. Exemplo
• Cenário I: Cadastro de Aluno
• Dado que um funcionário selecione a opção Cadastrar Aluno
• Quando clicar no menu
• Então deverá ser aberta a tela com os dados para efetuar o
cadastro do aluno e os botões Salvar e Cancelar.
60.
61. O que é TDD ou Test Driven Development?
• É uma técnica de desenvolvimento de software baseada em um ciclo
curto de repetições;
• Escrevendo seus testes antes de escrever o código de produção;
• Ao escrever primeiro os testes:
• Garantimos uma boa qualidade no código (mínimo de sujeira e códigos
esquecidos que nunca serão utilizados);
• Garantimos o funcionamento do que está sendo implementado;
• Não precisamos saber tudo de uma vez, conforme eu desenvolvo um
teste, crio e implemento as classes que serão utilizadas.
62. TDD - Test Driven Development
• Escreva um teste que falhe;
• Faça-o passar da maneira mais simples possível;
• Refatore o código.
• É conhecido como Ciclo Vermelho-Verde-Refatora (Red-Green-
Refactor).
Mas é muito
fácil
69. Existem dois tipos de Processos:
• Processos Definidos
• Processos Empíricos
70. Processos Definidos
São aqueles que determinam o que deve ser feito, quando e como.
Quem já trabalhou com o “início e fim do projeto” sabe que a
utilização de um processo definido não garante o sucesso.
71. Processos Empíricos
São aqueles que não se conheçam todas as variáveis de entrada
para que possa estabelecer um processo repetível.
O Scrum, parte do princípio que nem todas as características do
produto são conhecidas na análise e que provavelmente os
requisitos mudarão com o passar do tempo.
72. Exemplo do dia a dia
É como dirigir um carro, nunca se traça um destino em que a
chegada é em linha reta, sempre há pequenas correções até seu
destino.
73. Conclusão
Processos empíricos baseados em inspeção e adaptação devem
ser utilizados sempre que os processos definidos não forem
adequados devido a complexidade do projeto.
74. O que é SCRUM?
Processo de desenvolvimento iterativo e incremental que pode ser
aplicado a qualquer produto ou no gerenciamento de qualquer
atividade complexa;
Criado por Jeff Sutherland e Ken Schwaber na década de 90;
76. Product Owner (P.O.)
• Responsável por garantir o Retorno sobre o Investimento (ROI)
• Conhece as necessidades do que precisa ser feito
• Define os itens do Product Backlog
• Prioriza os itens na Sprint Planning Meeting
77. Scrum Master
• Garante o uso da Metodologia
• É um líder e um facilitador
• Precisa tirar da frente qualquer impedimento
78. Time
• Função do SCRUM Team é ser auto-gerenciado
• Define as metas dos Sprints
• Produz com qualidade e valor para o P.O.
80. Product Backlog
• Lista com as funcionalidades para o produto
• O conteúdo é definido pelo P. O.
• Não necessita estar completo
• Com o tempo o Product Backlog cresce ou
diminui dependendo do que o P.O. necessita;
81. Sprint Planning Meeting
• Reunião com o P.O., Scrum Master e Scrum Team
• P.O. descreve as funcionalidades
• A equipe questiona
• No final é gerado o Sprint Backlog
• Scrum Team e o P.O. definirão o objetivo
82. Planning Poker
• Estimar o esforço das funcionalidades
• Números menores mais simples
• Números maiores são mais complexos
• Coringas:
• Café - 15 minutos para uma pausa
• ? - Não foi entendido alguma funcionalidade falada
83. O Sprint
• Funcionalidades escolhidas na Sprint Planning Meeting na Coluna À Fazer
• É definido um prazo para o Sprint (2 ou 4 semanas)
• O prazo é mantido até o final do projeto
• Considera-se finalizado com Sucesso:
• Quando todas as tarefas estiverem na Coluna Finalizado
• Finalizado com falha:
• Quando o tempo estourar (2 semanas por exemplo) e/ou funcionalidades
mal implementadas e sem qualidade
84. Quadro KANBAN
• No quadro é colocado o andamento do Sprint
• Os Post its são importantes
• Se coloridos facilitam a visualização
• Também serve para saber o que está fazendo
• Evitem Softwares para o KANBAN
85.
86. Daily Scrum
• Reunião em Pé de 15 minutos
• Deverá ser respondida apenas 3 perguntas:
• O que você fez ontem?
• O que você fará hoje?
• Há algum impedimento no seu caminho?
• É uma reunião focada
• Não é para resolver problemas
88. Sprint Retrospective
• Ocorre ao final do Sprint
• Utilizado para identificar o que funcionou bem
• Também é utilizado para verificar o que poderia ser melhorado
• E quais ações serão tomadas para melhorá-lo
89. Sprint Review Meeting
• No final de cada Sprint Retrospective é feito um Sprint Review Meeting
• É mostrado o que foi alcançado no Sprint
• Nesta reunião estará o P.O., Scrum Team e Scrum Master
• O mais importante é que o objetivo esteja realizado