SlideShare uma empresa Scribd logo
1 de 31
DDD / TDD / BDD
Teoria e práticas
Os porquês
Eficácia = valor correto para o cliente
                 custo total de propriedade


     Custo                      Custo                    Custo total
desenvolvimento               manutenção                propriedade




   Entender       Modificar   Testar       Distribuir   Manter
DDD




             Domínio / Negócio




Tecnologia                       Equipe
DDD
Domain-Driven Design
DDD
Domain-Driven Design não é



              •   Tecnologia
              •   Metodologia
              •   Arquitetura
              •   Repositorio
              •   Bala de prata
              •   Receita de bolo
DDD
Domain-Driven Design é, na verdade:



              • Modelagem de negócio
              • Coleção de princípios e práticas
              • Focar os esforços de design onde
                ele é mais importante
DDD




           Foco no domínio
Design do domínio é baseado em um modelo
DDD
Linguagem Única




                  Visão Compartilhada
DDD
Mas, afinal, o que é um modelo?
DDD
Como representar um modelo?
DDD
Diagramas?
DDD
Especificações detalhadas?
DDD
Texto livre (Casos de uso, histórias)?
DDD
Testes automatizados?
DDD
Código Fonte?
DDD
O modelo é a representação mental de um determinado conceito




                                 Tudo mais é apenas uma ferramenta de comunicação
DDD
Elaborar um modelo é um exercício cooperativo...




                                                   ...Baseado em uma linguagem comum
DDD
Elabore um modelo...




                       ...e o expresse em todos os níveis
DDD
Elaborar um modelo é um exercício evolucionário
DDD
Testar é fundamental
DDD
Automatizar os testes é fundamental
TDD
Test-Driven Development



           •   Desenvolvimento guiado por testes
           •   Mas não é sobre testes
           •   É sobre design
           •   É sobre código funcionando
           •   É sobre código posto a prova
TDD
Como funciona
TDD
Exemplo



     • Como Banqueiro quero negar débitos na
       conta corrente de determinado cliente
       caso ele não tenha saldo suficiente para
       pagá-lo, assim, eu não perderei dinheiro.
TDD
Concordam?
TDD
TDD é perda de tempo? (Microsoft research)
BDD
Behavior-Driven Development




                     Fazer certo a coisa, não implica,
              necessáriamente, em fazer a coisa certa
BDD
Qualidade, o que é?
BDD
Antecipe a dor!
BDD
Exemplo

Mais conteúdo relacionado

Destaque

Introdução à BDD (Behavior-driven Development)
Introdução à BDD (Behavior-driven Development)Introdução à BDD (Behavior-driven Development)
Introdução à BDD (Behavior-driven Development)Eron Rodrigues Alves
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehaveIsmael
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Rômulo Augusto Santos
 
Agile, mudando o foco
Agile, mudando o focoAgile, mudando o foco
Agile, mudando o focoewerttonbravo
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)David Ehringer
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 Eduardo Bregaida
 

Destaque (11)

RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Wgp09 Apresentacao Italo
Wgp09   Apresentacao ItaloWgp09   Apresentacao Italo
Wgp09 Apresentacao Italo
 
Introdução à BDD (Behavior-driven Development)
Introdução à BDD (Behavior-driven Development)Introdução à BDD (Behavior-driven Development)
Introdução à BDD (Behavior-driven Development)
 
TDD e BDD
TDD e BDDTDD e BDD
TDD e BDD
 
BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehave
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.
 
Mare de Agilidade - BDD e TDD
Mare de Agilidade - BDD e TDDMare de Agilidade - BDD e TDD
Mare de Agilidade - BDD e TDD
 
Agile, mudando o foco
Agile, mudando o focoAgile, mudando o foco
Agile, mudando o foco
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015
 

Semelhante a xDD

Domain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da CaixaDomain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da CaixaThiago Bertuzzi
 
Domain-Driven-Design
Domain-Driven-DesignDomain-Driven-Design
Domain-Driven-DesignWende Mendes
 
Domain-Driven-Design
 Domain-Driven-Design Domain-Driven-Design
Domain-Driven-DesignWende Mendes
 
Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...Rafael Prallon
 
Domain driven design na Prática
Domain driven design na PráticaDomain driven design na Prática
Domain driven design na PráticaDouglas Aguiar
 
TDC2016SP - Trilha Análise de Negócios
TDC2016SP - Trilha Análise de NegóciosTDC2016SP - Trilha Análise de Negócios
TDC2016SP - Trilha Análise de Negóciostdc-globalcode
 
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...Andrelise Rafael Gonçalves
 
Uma introdução ao Domain Driven Design
Uma introdução ao Domain Driven DesignUma introdução ao Domain Driven Design
Uma introdução ao Domain Driven DesignLambda3
 
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsSeja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsValdomiro Bilharvas
 
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaUtilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaCleiton Felipe Moraes
 
Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Softwareguest2f8cba
 
Desenvolvimento Incremental com Test Driven Development
Desenvolvimento Incremental com Test Driven DevelopmentDesenvolvimento Incremental com Test Driven Development
Desenvolvimento Incremental com Test Driven DevelopmentLeonardo de Aguiar
 
Fisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoFisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoGustavo Neves
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven DesignRafael Ponte
 

Semelhante a xDD (20)

Domain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da CaixaDomain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da Caixa
 
Engenharia Ágil
Engenharia ÁgilEngenharia Ágil
Engenharia Ágil
 
Iniciando com DDD
Iniciando com DDDIniciando com DDD
Iniciando com DDD
 
Domain-Driven-Design
Domain-Driven-DesignDomain-Driven-Design
Domain-Driven-Design
 
Domain-Driven-Design
 Domain-Driven-Design Domain-Driven-Design
Domain-Driven-Design
 
Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Domain driven design na Prática
Domain driven design na PráticaDomain driven design na Prática
Domain driven design na Prática
 
BDD
BDDBDD
BDD
 
TDC2016SP - Trilha Análise de Negócios
TDC2016SP - Trilha Análise de NegóciosTDC2016SP - Trilha Análise de Negócios
TDC2016SP - Trilha Análise de Negócios
 
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...
 
Uma introdução ao Domain Driven Design
Uma introdução ao Domain Driven DesignUma introdução ao Domain Driven Design
Uma introdução ao Domain Driven Design
 
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsSeja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
 
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaUtilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
 
Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Software
 
Test First, TDD e outros Bichos
Test First, TDD e outros BichosTest First, TDD e outros Bichos
Test First, TDD e outros Bichos
 
Desenvolvimento Incremental com Test Driven Development
Desenvolvimento Incremental com Test Driven DevelopmentDesenvolvimento Incremental com Test Driven Development
Desenvolvimento Incremental com Test Driven Development
 
Fisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoFisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmo
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven Design
 
Coding Dojo Aplicado ao Ambiente Organizacional
Coding Dojo Aplicado ao Ambiente OrganizacionalCoding Dojo Aplicado ao Ambiente Organizacional
Coding Dojo Aplicado ao Ambiente Organizacional
 

xDD

Notas do Editor

  1. Agenda da palestra Relembrar o manifesto ágil e dizer que as práticas *DD podem ser perfeitamente encaixadas no manifesto: Individuos e interações entre eles: DDD e suas colaborações entre o time de negócios e o time de desenvolvimento Software em funcionamento: TDD garante feedback rápido do seu código, garantindo que ele está funcionando Colaboração com o cliente: BDD faz com que o desejo do cliente vire código “ na frente dos seus olhos ” Responder a mudanças: *DD faz com que as mudanças não sejam vistas como vilãs
  2. Mostrar que estas práticas podem se traduzir uma maior eficácia no seu projeto. Estas práticas, em primeiro momento, podem aumentar o custo de desenvolvimento, porém irá certamente diminuir o custo de manutenção, uma vez que há a certeza do impacto que determinada alteração terá no código como um todo.
  3. Um projeto de software é uma troca entre o Negócio (dominio), a tecnologia e a equipe. O domínio deve vir do aprendizado trocado entre a equipe e o negócio, respeitando e por vezes superando os limites que a técnologia impõe.
  4. Já que um software reflete uma realidade de negócio, o Domain-Driven Design vem para tratar toda esta complexidade no “ coração ” do software.
  5. As confusões que as pessoas fazem sobre o DDD. Falar sobre cada uma delas
  6. Uma maneira de modelar o negócio Uma coleção de principios e práticas Uma maneira de focar os esforços de design onde ele é mais importante
  7. Falar sobre a importancia da linguagem única e a visão compartilhada entre a equipe de negócios e a equipe de desenvolvimento
  8. Falar sobre o que é um modelo, sua representação da realidade, de um conceito, uma ideia. Modelos podem ter mais detalhes ou menos...
  9. Provocar a platéia sobre como representar um modelo de negócio
  10. Falar sobre método científico, etc.
  11. Falar sobre a base do tdd, o ciclo básico e etc
  12. Imagina se aquele problema do double vai para produção...
  13. Falar sobre qualidade, qualidade externa e qualidade interna. Sobre o teste de unidade, teste de integração e testes ponta a ponta.
  14. Bater novamente na tecla da antecipação da dor.