DDD + BDD + TDD + Scrum

139
DDD + BDD + TDD Eduardo Bregaida [email protected] & SCRUM

Transcript of DDD + BDD + TDD + Scrum

Page 1: DDD + BDD + TDD + Scrum

DDD + BDD + TDD

Eduardo Bregaida

[email protected]

& SCRUM

Page 2: DDD + BDD + TDD + Scrum

Brian, o dono de um importante Aeroclube da

cidade teve uma ideia em um momento de

inspiração.

Page 3: DDD + BDD + TDD + Scrum

Eu poderia fazer um sistema

para meu aeroclube e

otimizar meu tempo.

Page 4: DDD + BDD + TDD + Scrum

Mas como?

Vou chamar meu amigo

Bregaida para resolver isso

Page 5: DDD + BDD + TDD + Scrum

Seguinte Bregaida quero

um sistema que faça todo

gerenciamento do meu

Aeroclube

Page 6: DDD + BDD + TDD + Scrum

Quero todos os

Cadastros

Relatórios, Notas e Faltas

e valores pagos...

Page 7: DDD + BDD + TDD + Scrum
Page 8: DDD + BDD + TDD + Scrum

Pensando...

Page 9: DDD + BDD + TDD + Scrum

Pensando...

Classe Aluno

Page 10: DDD + BDD + TDD + Scrum

Pensando...

Classe Aluno

Aluno extends Pessoa

Page 11: DDD + BDD + TDD + Scrum

Pensando...

Classe Aluno

Aluno extends Pessoa

Relatorio em IReport

Page 12: DDD + BDD + TDD + Scrum

Pensando...

Classe Aluno

Aluno extends Pessoa

Relatorio em IReport Java com Spring...

Page 13: DDD + BDD + TDD + Scrum

Pensando...

Classe Aluno

Aluno extends Pessoa

Relatorio em IReport Java com Spring

Maven

Page 14: DDD + BDD + TDD + Scrum

Pensando...

Classe Aluno

Aluno extends Pessoa

Relatorio em IReport Java com Spring

Maven

JQuery

Page 15: DDD + BDD + TDD + Scrum

Pensando...

Classe Aluno

Aluno extends Pessoa

Relatorio em IReport Java com Spring

Maven

JQuery

Contas a Pagar e Receber

Page 16: DDD + BDD + TDD + Scrum

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 suaaplicação?

Page 17: DDD + BDD + TDD + Scrum

...

Page 18: DDD + BDD + TDD + Scrum

Mas que Bodega é essaque você está falando?

Page 19: DDD + BDD + TDD + Scrum

Eu não estouentendendo nada, eu

só queria umsisteminha fácil...

Page 20: DDD + BDD + TDD + Scrum

Domain-Driven Design

Page 21: DDD + BDD + TDD + Scrum

-Driven DesignDomain

Page 22: DDD + BDD + TDD + Scrum

Negócio Complexo

Page 23: DDD + BDD + TDD + Scrum

Negócio Complexo Pessoas

Page 24: DDD + BDD + TDD + Scrum

Negócio Complexo

Pessoas

Problema Real

Page 25: DDD + BDD + TDD + Scrum

Negócio Complexo

Pessoas

Problema RealLinguagem de Negócio

Page 26: DDD + BDD + TDD + Scrum

Negócio Complexo

Pessoas

Domain

Problema RealLinguagem de Negócio

Page 27: DDD + BDD + TDD + Scrum

Conversa

Sobre o

Para criar um

domínio

sistema

Page 28: DDD + BDD + TDD + Scrum

Conversa

Sobre o

Para criar um

domínio

sistema

Precisamos falar a mesma língua!

Page 29: DDD + BDD + TDD + Scrum

UbíquaLínguagem(Ubiquitous Language)

Page 30: DDD + BDD + TDD + Scrum

Tenho um curso onde cada

aluno é preparado para se

tornar um piloto em uma

determinada categoria.

Page 31: DDD + BDD + TDD + Scrum

Um Aluno tem Nome, CPF,

RG, Endereço, Telefone,

código ANAC que é a

identificação deste aluno

Page 32: DDD + BDD + TDD + Scrum
Page 33: DDD + BDD + TDD + Scrum

Ele terá uma Categoria que

pode ser:

Piloto Privado ou

Piloto Comercial

Page 34: DDD + BDD + TDD + Scrum
Page 35: DDD + BDD + TDD + Scrum

Poderei buscar o aluno por

nome ou por CPF ou ainda

pelo código ANAC

Page 36: DDD + BDD + TDD + Scrum
Page 37: DDD + BDD + TDD + Scrum

Com esse repositório

parece que ficou mais fácil,

dá para saber todos os

alunos da mesma

categoria?

Page 38: DDD + BDD + TDD + Scrum
Page 39: DDD + BDD + TDD + Scrum
Page 40: DDD + BDD + TDD + Scrum
Page 41: DDD + BDD + TDD + Scrum
Page 42: DDD + BDD + TDD + Scrum
Page 43: DDD + BDD + TDD + Scrum
Page 44: DDD + BDD + TDD + Scrum

Como implementar o repositório?

Page 45: DDD + BDD + TDD + Scrum
Page 46: DDD + BDD + TDD + Scrum
Page 47: DDD + BDD + TDD + Scrum

Nossa esqueci, quero

que liste todos alunos

de uma categoria.

Page 48: DDD + BDD + TDD + Scrum
Page 49: DDD + BDD + TDD + Scrum
Page 50: DDD + BDD + TDD + Scrum
Page 51: DDD + BDD + TDD + Scrum

-Driven DesignVoltado (driven) totalmente ao problema a ser resolvido (domain)Ubiquitous LanguageFunciona muito bem com AgileModelos ricos (não anêmicos)Nomes importam!

Domain

Page 52: DDD + BDD + TDD + Scrum

Não importa a tecnologia.

O que importa é o domain.

Page 53: DDD + BDD + TDD + Scrum

BDD

Page 54: DDD + BDD + TDD + Scrum

O que é BDD?

Page 55: DDD + BDD + TDD + Scrum

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.

Page 56: DDD + BDD + TDD + Scrum

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 …

Page 57: DDD + BDD + TDD + Scrum

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

Page 58: DDD + BDD + TDD + Scrum

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?

Page 59: DDD + BDD + TDD + Scrum

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 ocadastro do aluno e os botões Salvar e Cancelar.

Page 60: DDD + BDD + TDD + Scrum
Page 61: DDD + BDD + TDD + Scrum

O que é TDD ou Test Driven Development?• É uma técnica de desenvolvimento de software baseada em um ciclocurto 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ódigosesquecidos que nunca serão utilizados);

• Garantimos o funcionamento do que está sendo implementado;

• Não precisamos saber tudo de uma vez, conforme eu desenvolvo umteste, crio e implemento as classes que serão utilizadas.

Page 62: DDD + BDD + TDD + Scrum

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

Page 63: DDD + BDD + TDD + Scrum
Page 64: DDD + BDD + TDD + Scrum
Page 65: DDD + BDD + TDD + Scrum

It's Amazing

Page 66: DDD + BDD + TDD + Scrum

Mas como vou

saber o andamento

do meu sistema?

Page 67: DDD + BDD + TDD + Scrum

Com SCRUM

Page 68: DDD + BDD + TDD + Scrum

Mais Coisa???

Page 69: DDD + BDD + TDD + Scrum

Existem dois tipos de Processos:

• Processos Definidos

• Processos Empíricos

Page 70: DDD + BDD + TDD + Scrum

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 autilização de um processo definido não garante o sucesso.

Page 71: DDD + BDD + TDD + Scrum

Processos Empíricos

São aqueles que não se conheçam todas as variáveis de entradapara que possa estabelecer um processo repetível. O Scrum, parte do princípio que nem todas as características doproduto são conhecidas na análise e que provavelmente osrequisitos mudarão com o passar do tempo.

Page 72: DDD + BDD + TDD + Scrum

Exemplo do dia a dia

É como dirigir um carro, nunca se traça um destino em que achegada é em linha reta, sempre há pequenas correções até seudestino.

Page 73: DDD + BDD + TDD + Scrum

Conclusão

Processos empíricos baseados em inspeção e adaptação devemser utilizados sempre que os processos definidos não foremadequados devido a complexidade do projeto.

Page 74: DDD + BDD + TDD + Scrum

O que é SCRUM?

Processo de desenvolvimento iterativo e incremental que pode seraplicado a qualquer produto ou no gerenciamento de qualqueratividade complexa;

Criado por Jeff Sutherland e Ken Schwaber na década de 90;

Page 75: DDD + BDD + TDD + Scrum

O P.O. O Scrum Master O Time

Papéis no SCRUM

Page 76: DDD + BDD + TDD + Scrum

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

Page 77: DDD + BDD + TDD + Scrum

Scrum Master

• Garante o uso da Metodologia

• É um líder e um facilitador

• Precisa tirar da frente qualquer impedimento

Page 78: DDD + BDD + TDD + Scrum

Time

• Função do SCRUM Team é ser auto-gerenciado

• Define as metas dos Sprints

• Produz com qualidade e valor para o P.O.

Page 79: DDD + BDD + TDD + Scrum

Fases do Scrum

• Product Backlog • Sprint Planning Meeting • Planning Poker • Daily Scrum • Sprint Review Meeting • Sprint Retrospective

Page 80: DDD + BDD + TDD + Scrum

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 oudiminui dependendo do que o P.O. necessita;

Page 81: DDD + BDD + TDD + Scrum

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

Page 82: DDD + BDD + TDD + Scrum

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

Page 83: DDD + BDD + TDD + Scrum

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

Page 84: DDD + BDD + TDD + Scrum

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

Page 85: DDD + BDD + TDD + Scrum
Page 86: DDD + BDD + TDD + Scrum

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

Page 87: DDD + BDD + TDD + Scrum

Burndown Chart

Page 88: DDD + BDD + TDD + Scrum

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

Page 89: DDD + BDD + TDD + Scrum

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

Page 90: DDD + BDD + TDD + Scrum

WOWWWW

Então a cada 2semanas terei um

pedaço do meusistema?

Page 91: DDD + BDD + TDD + Scrum

E eu ainda vou poder alterar

o escopo quando precisar

no meu Backlog

Page 92: DDD + BDD + TDD + Scrum

E depois que acabar uma

Sprint?

Page 93: DDD + BDD + TDD + Scrum

Depois começa tudo outra vezaté o término do projeto

Page 94: DDD + BDD + TDD + Scrum

É a solução PERFEITA para

meus problemas

Page 95: DDD + BDD + TDD + Scrum

Mais ou menos, temos quetomar alguns cuidadoscom os problemas mais

comuns

Page 96: DDD + BDD + TDD + Scrum
Page 97: DDD + BDD + TDD + Scrum
Page 98: DDD + BDD + TDD + Scrum
Page 99: DDD + BDD + TDD + Scrum
Page 100: DDD + BDD + TDD + Scrum
Page 101: DDD + BDD + TDD + Scrum

Síndrome do GóticoOu

Síndrome do Depressivo

Page 102: DDD + BDD + TDD + Scrum

Síndrome do EmoOu

Síndrome do Chorão

Page 103: DDD + BDD + TDD + Scrum

Síndrome do Melhor do Mundo

Page 104: DDD + BDD + TDD + Scrum
Page 105: DDD + BDD + TDD + Scrum
Page 106: DDD + BDD + TDD + Scrum
Page 107: DDD + BDD + TDD + Scrum
Page 108: DDD + BDD + TDD + Scrum
Page 109: DDD + BDD + TDD + Scrum

Contrato Errado

Page 110: DDD + BDD + TDD + Scrum

Pausa nos problemas para uma EstóriaBacon com Ovos

Page 111: DDD + BDD + TDD + Scrum

Chickens no Projeto

Page 112: DDD + BDD + TDD + Scrum
Page 113: DDD + BDD + TDD + Scrum

SCRUMbut

Page 114: DDD + BDD + TDD + Scrum
Page 115: DDD + BDD + TDD + Scrum
Page 116: DDD + BDD + TDD + Scrum

Tantos problemas...

Estou #chateado

Page 117: DDD + BDD + TDD + Scrum

Acalme-se Brian, há esperança

Page 118: DDD + BDD + TDD + Scrum

A equipe deve estar SEMPRE unida

Page 119: DDD + BDD + TDD + Scrum

Garanta PIGs no seu projeto

Page 120: DDD + BDD + TDD + Scrum
Page 121: DDD + BDD + TDD + Scrum
Page 122: DDD + BDD + TDD + Scrum
Page 123: DDD + BDD + TDD + Scrum

Livre-se das más influências no Projeto

Page 124: DDD + BDD + TDD + Scrum
Page 125: DDD + BDD + TDD + Scrum
Page 126: DDD + BDD + TDD + Scrum
Page 127: DDD + BDD + TDD + Scrum

Incentive o profissional a nãodesistir

Page 128: DDD + BDD + TDD + Scrum

Nunca responda por ele

Page 129: DDD + BDD + TDD + Scrum

Faça o profissional vir com umproblema e uma solução

Page 130: DDD + BDD + TDD + Scrum

Force diálogos entre os membros

Page 131: DDD + BDD + TDD + Scrum

Seja Humilde

Page 132: DDD + BDD + TDD + Scrum

Ajude seus companheiros

Page 133: DDD + BDD + TDD + Scrum

Comemorem o sucesso do Sprint

Page 134: DDD + BDD + TDD + Scrum

TODOS ENVOLVIDOS DEVEM PARTICIPAR.=== NÃO É OPCIONAL ===

Page 135: DDD + BDD + TDD + Scrum
Page 136: DDD + BDD + TDD + Scrum
Page 137: DDD + BDD + TDD + Scrum
Page 138: DDD + BDD + TDD + Scrum

Dúvidas?

Page 139: DDD + BDD + TDD + Scrum

Obrigado

Eduardo Bregaida

[email protected]