SlideShare uma empresa Scribd logo
DDD + BDD + TDD
Eduardo Bregaida
eduardo.bregaida@sciensa.com
& SCRUM
Brian, o dono de um importante Aeroclube da
cidade teve uma ideia em um momento de
inspiração.
Eu poderia fazer um sistema
para meu aeroclube e
otimizar meu tempo.
Mas como?
Vou chamar meu amigo
Bregaida para resolver isso
Seguinte Bregaida quero
um sistema que faça todo
gerenciamento do meu
Aeroclube
Quero todos os
Cadastros
Relatórios, Notas e Faltas
e valores pagos...
DDD + BDD + TDD + Scrum
Pensando...
Pensando...
Classe Aluno
Pensando...
Classe Aluno
Aluno extends Pessoa
Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Java com Spring...
Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Java com Spring
Maven
Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Java com Spring
Maven
JQuery
Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Java com Spring
Maven
JQuery
Contas a Pagar e Receber
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?
...
Mas que Bodega é essa
que você está falando?
Eu não estou
entendendo nada, eu
só queria um
sisteminha fácil...
Domain-Driven Design
-Driven DesignDomain
Negócio Complexo
Negócio Complexo Pessoas
Negócio Complexo
Pessoas
Problema Real
Negócio Complexo
Pessoas
Problema Real
Linguagem de Negócio
Negócio Complexo
Pessoas
Domain
Problema Real
Linguagem de Negócio
Conversa
Sobre o
Para criar um
domínio
sistema
Conversa
Sobre o
Para criar um
domínio
sistema
Precisamos falar a mesma língua!
UbíquaLínguagem
(Ubiquitous Language)
Tenho um curso onde cada
aluno é preparado para se
tornar um piloto em uma
determinada categoria.
Um Aluno tem Nome, CPF,
RG, Endereço, Telefone,
código ANAC que é a
identificação deste aluno
DDD + BDD + TDD + Scrum
Ele terá uma Categoria que
pode ser:
Piloto Privado ou
Piloto Comercial
DDD + BDD + TDD + Scrum
Poderei buscar o aluno por
nome ou por CPF ou ainda
pelo código ANAC
DDD + BDD + TDD + Scrum
Com esse repositório
parece que ficou mais fácil,
dá para saber todos os
alunos da mesma
categoria?
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
Como implementar o repositório?
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
Nossa esqueci, quero
que liste todos alunos
de uma categoria.
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
-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
Não importa a tecnologia.
O que importa é o domain.
BDD
O que é BDD?
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.
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 …
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
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?
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.
DDD + BDD + TDD + Scrum
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.
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
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
It's Amazing
Mas como vou
saber o andamento
do meu sistema?
Com SCRUM
Mais Coisa???
Existem dois tipos de Processos:
• Processos Definidos
• Processos Empíricos
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.
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.
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.
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.
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;
O P.O. O Scrum Master O Time
Papéis no 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
Scrum Master
• Garante o uso da Metodologia
• É um líder e um facilitador
• Precisa tirar da frente qualquer impedimento
Time
• Função do SCRUM Team é ser auto-gerenciado
• Define as metas dos Sprints
• Produz com qualidade e valor para o P.O.
Fases do Scrum
• Product Backlog
• Sprint Planning Meeting
• Planning Poker
• Daily Scrum
• Sprint Review Meeting
• Sprint Retrospective
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;
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
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
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
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
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
Burndown Chart
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
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
WOWWWW
Então a cada 2
semanas terei um
pedaço do meu
sistema?
E eu ainda vou poder alterar
o escopo quando precisar
no meu Backlog
E depois que acabar uma
Sprint?
Depois começa tudo outra vez
até o término do projeto
É a solução PERFEITA para
meus problemas
Mais ou menos, temos que
tomar alguns cuidados
com os problemas mais
comuns
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
Síndrome do Gótico
Ou
Síndrome do Depressivo
Síndrome do Emo
Ou
Síndrome do Chorão
Síndrome do Melhor do Mundo
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
Contrato Errado
Pausa nos problemas para uma Estória
Bacon com Ovos
Chickens no Projeto
DDD + BDD + TDD + Scrum
SCRUMbut
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
Tantos problemas...
Estou #chateado
Acalme-se Brian, há esperança
A equipe deve estar SEMPRE unida
Garanta PIGs no seu projeto
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
Livre-se das más influências no Projeto
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
Incentive o profissional a não
desistir
Nunca responda por ele
Faça o profissional vir com um
problema e uma solução
Force diálogos entre os membros
Seja Humilde
Ajude seus companheiros
Comemorem o sucesso do Sprint
TODOS ENVOLVIDOS DEVEM PARTICIPAR.
=== NÃO É OPCIONAL ===
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
Dúvidas?
Obrigado
Eduardo Bregaida
eduardo.bregaida@sciensa.com

Mais conteúdo relacionado

PDF
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
PDF
Estrutura de Dados - Ponteiros
PPTX
Criptografia
PDF
Como criar imagens e editar fotos utilizando o Canva
PDF
Sistema de Gerenciamento de Locadora de Vídeo - Apresentação
PPTX
O que mudou na ISO 27002:2013
PDF
Teste de software
PDF
Minicurso - Introdução ao LaTeX
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Ponteiros
Criptografia
Como criar imagens e editar fotos utilizando o Canva
Sistema de Gerenciamento de Locadora de Vídeo - Apresentação
O que mudou na ISO 27002:2013
Teste de software
Minicurso - Introdução ao LaTeX

Mais procurados (20)

PDF
Gestão de Projetos de TI em Empresas
PPTX
Treinamento de SQL Básico
PDF
Aula 2 - Processos de Software
PDF
Python - Introdução Básica
PPSX
Gerenciamento de projetos - Tempo, Recursos e Custo
PPTX
Aula 5 - A TI nas Organizações
PPTX
Flaky tests: O flakiness que há em você!
PPT
Minicurso de JavaScript (Portuguese)
PPTX
Aula - Metodologias Ágeis
PDF
Aula 01 - UML e Padrões de Projeto
PDF
PDF
Aula 06 - Diagrama de classes
DOCX
Plano projeto implantação servicedesk
PDF
Comandos do linux
PDF
Gerenciamento da configuração
PDF
Estrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
PPTX
Apresentação SQLServer
PPSX
ProjectLibre 1.5 - Aula 1 - Sobre a iniciativa OpenSource.
PPT
Capítulo 05 - Fundamentos da inteligência de negócios: gestão da informação e...
PDF
Alinhamento Estratégico em TI
Gestão de Projetos de TI em Empresas
Treinamento de SQL Básico
Aula 2 - Processos de Software
Python - Introdução Básica
Gerenciamento de projetos - Tempo, Recursos e Custo
Aula 5 - A TI nas Organizações
Flaky tests: O flakiness que há em você!
Minicurso de JavaScript (Portuguese)
Aula - Metodologias Ágeis
Aula 01 - UML e Padrões de Projeto
Aula 06 - Diagrama de classes
Plano projeto implantação servicedesk
Comandos do linux
Gerenciamento da configuração
Estrutura de Dados - Aula 09 - Listas Simplesmente Encadeadas
Apresentação SQLServer
ProjectLibre 1.5 - Aula 1 - Sobre a iniciativa OpenSource.
Capítulo 05 - Fundamentos da inteligência de negócios: gestão da informação e...
Alinhamento Estratégico em TI
Anúncio

Destaque (17)

PDF
DDD + BDD + TDD - RF 2015
KEY
Spring MVC - QConSP
PDF
DDD - Linguagem Ubíqua
PDF
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
PDF
Java acsp
PDF
Java+DDD+BDD+TDD=Sucesso Total
PDF
Cultura da empresa - um problema na adoção ágil
PDF
Java Generics - Quiz Questions
PDF
Software Architecture - Quiz Questions
PDF
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
PDF
Get into Functional Programming with Clojure
PDF
Introdução aos computadores e à World Wide Web
PDF
Scrum - IMES 2013 (Remodelada)
PDF
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
PDF
Aula 15 minutos
PDF
Sailing with Java 8 Streams
PPTX
Java 8 Date and Time API
DDD + BDD + TDD - RF 2015
Spring MVC - QConSP
DDD - Linguagem Ubíqua
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
Java acsp
Java+DDD+BDD+TDD=Sucesso Total
Cultura da empresa - um problema na adoção ágil
Java Generics - Quiz Questions
Software Architecture - Quiz Questions
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
Get into Functional Programming with Clojure
Introdução aos computadores e à World Wide Web
Scrum - IMES 2013 (Remodelada)
Porque você deveria usar CDI nos seus projetos Java! - JavaOne LA 2012 - Sérg...
Aula 15 minutos
Sailing with Java 8 Streams
Java 8 Date and Time API
Anúncio

Semelhante a DDD + BDD + TDD + Scrum (20)

PDF
Treinamento Agile com scrum
PDF
Treinamento Agile com Scrum - V2
PPTX
Workshop Agilizando Projetos com SCRUM
PPTX
Treinamento - Product Owner - CLARO-NET-EMBRATEL
PDF
PPT
Agile SCRUM
PPTX
Gestão da qualidade metodologia ágil v01 (2)
PPTX
Gestão da Qualidade - Metodologia ágil
PPT
PPT
Scrum - seminario
PPT
Gestao agil de projetos com Scrum
PDF
Apresentacao kanbane scrum-reduzido
PDF
Prévia básica do Scrum
PPT
Scrum - Um Método Ágil de Desenvolvimento de Sistemas
PPT
Portuguese Scrum
PPTX
Palestra de SCRUM em Juazeiro
PPTX
Desenvolvimento ágil com scrum
PPTX
Enter SCRUM
PPT
Apresentação Scrum 2012
Treinamento Agile com scrum
Treinamento Agile com Scrum - V2
Workshop Agilizando Projetos com SCRUM
Treinamento - Product Owner - CLARO-NET-EMBRATEL
Agile SCRUM
Gestão da qualidade metodologia ágil v01 (2)
Gestão da Qualidade - Metodologia ágil
Scrum - seminario
Gestao agil de projetos com Scrum
Apresentacao kanbane scrum-reduzido
Prévia básica do Scrum
Scrum - Um Método Ágil de Desenvolvimento de Sistemas
Portuguese Scrum
Palestra de SCRUM em Juazeiro
Desenvolvimento ágil com scrum
Enter SCRUM
Apresentação Scrum 2012

Mais de Eduardo Bregaida (19)

PDF
War Room - Bregaida - V1
PDF
Feedbacks - V1
PDF
Aviação Civil LT sciensa
PDF
Management 3.0 - V. Revisada
PDF
Minha história
KEY
Cultura da Empresa - um problema na Adoção Ágil - Conexão Java
KEY
Scrum - passos e desafios - agile tour
PDF
Refatoração de código com Capitão Nascimento versão completa
PDF
Falhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeis
PPT
Virus em Hw
PDF
JSF & REST
PDF
Cloud Computing Apresentacao Uscs Final
PDF
Metodologias Ágeis no Estilo Dr House
PDF
Java E O Mercado De Trabalho
PPT
ApresentaçãO De Java
PPT
Produtividade com JavaServer Faces
PPT
JavaServer Faces Produtividade em Desenvolvimento
PPT
Profiling - IMES.java - Haroldo Macedo
ODP
JSF e outras tecnologias Java Web - IMES.java
War Room - Bregaida - V1
Feedbacks - V1
Aviação Civil LT sciensa
Management 3.0 - V. Revisada
Minha história
Cultura da Empresa - um problema na Adoção Ágil - Conexão Java
Scrum - passos e desafios - agile tour
Refatoração de código com Capitão Nascimento versão completa
Falhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeis
Virus em Hw
JSF & REST
Cloud Computing Apresentacao Uscs Final
Metodologias Ágeis no Estilo Dr House
Java E O Mercado De Trabalho
ApresentaçãO De Java
Produtividade com JavaServer Faces
JavaServer Faces Produtividade em Desenvolvimento
Profiling - IMES.java - Haroldo Macedo
JSF e outras tecnologias Java Web - IMES.java

Último (20)

PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Émile Durkheim slide elaborado muito bom
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Aula sobre banco de dados com firebase db
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Aula 18 - Manipulacao De Arquivos python
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Émile Durkheim slide elaborado muito bom
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
COBITxITIL-Entenda as diferença em uso governança TI
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Processos na gestão de transportes, TM100 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Curso de Java 9 - (Threads) Multitarefas.pptx
Aula sobre banco de dados com firebase db

DDD + BDD + TDD + Scrum