SlideShare uma empresa Scribd logo
Domain Driven Design [DDD]

 Combatendo a complexidade
   no desenvolvimento de
          software


 Christiano Milfont
 Unifor 2010, Fortaleza
 Copyleft 2010 Milfont.org
Requirements



               Design                       Waterfall

                        Implementation



                                         Testing



                                                   Deployment



                                                                Maintenance
Requirements



               Design                       Waterfall

                        Implementation



                                         Testing



                                                   Deployment



                                                                Maintenance
Design
Design
Requirements



               Design                       Waterfall

                        Implementation



                                         Testing



                                                   Deployment



                                                                Maintenance
Test First
Testing




          Requirements



                         Design



                                  Implementation



                                             Deployment



                                                          Maintenance
Test First
Testing




          Requirements



                         Design



                                  Implementation



                                             Deployment



                                                          Maintenance
Test First


             Testing


Design                   Implementation


          Requirements




          Deployment



                       Maintenance
Linguagem Ubíqua

"A language structured
 around the domain
 model and used by all
 team members to
 connect all the
 activities of the team
 with the software."
Um Membro do projeto cadastra uma
  “Issue” no sistema.

Um Gerente de projetos aceita ou
  rejeita a entrada de Issues para
  serem trabalhadas.

Um Funcionário do hospital dá entrada
  do Paciente na Emergência.

O Cenário de entrada por pacientes
   depende do Login do usuário com
   ROLE Admin na Action antes do
   forward.

Um funcionário atende uma solicitação
  de saída de medicamento pelo
  prontuário do paciente com limite do
  cardápio do médico.

A Tabela TB_ITEMS tem ligação com a
   Tabela TB_NOTAS
Um Membro do projeto cadastra uma
  “Issue” no sistema.

Um Gerente de projetos aceita ou
  rejeita a entrada de Issues para
  serem trabalhadas.

Um Funcionário do hospital dá entrada
  do Paciente na Emergência.

O Cenário de entrada por pacientes
   depende do Login do usuário com
   ROLE Admin na Action antes do
   forward.

Um funcionário atende uma solicitação
  de saída de medicamento pelo
  prontuário do paciente com limite do
  cardápio do médico.

A Tabela TB_ITEMS tem ligação com a
   Tabela TB_NOTAS
Um Membro do projeto cadastra uma
  “Issue” no sistema.

Um Gerente de projetos aceita ou
  rejeita a entrada de Issues para
  serem trabalhadas.

Um Funcionário do hospital dá
  entrada do Paciente na
  Emergência.

O Cenário de entrada por pacientes
   depende do Login do usuário com
   ROLE Admin na Action antes do
   forward.

Um funcionário atende uma
  solicitação de saída de
  medicamento pelo prontuário do
  paciente com limite do cardápio do
  médico.

A Tabela TB_ITEMS tem ligação com a
   Tabela TB_NOTAS
Domain driven design
Domain driven design
LoginAction
                                   Lembra
                                  como voce
          LoginForm
                                   fazia no
                                    Struts?
                      LoginVO



                                LoginBO



                                          LoginDAO



                                                     DATABASE
LoginBean


                             E sua
        LoginVO
                         variação JSF?

              LoginBO


                                           DATABASE
                        Login



                                LoginDAO



                                           GenericDAO
LoginFacade

                                 Agora você é
          LoginService
                                   moderno

                         Login                       DATABASE



                                 LoginRepository




                                               GenericRepository
LoginFacade

                                 Agora você é
          LoginService
                                   moderno

                         Login                       DATABASE



                                 LoginRepository




                                               GenericRepository
Armas não matam
   pessoas...
 Pessoas matam
   pessoas...
Hands on...
access with             REPOSITORIES

                        SERVICES
                                                                                                     access with

                                                                maintain integrity with
                                                ENTITIES
         express model with
                                                                  act as root of
                 express model with
                                                                                           AGGREGATES

                       express model with
MODEL-DRIVEN                                         VALUE OBJECTS
  DESIGN                                                                      encapsulate with

                                                               encapsulate with        encapsulate with
               isolate domain with

       X
mutually exclusive
    choices                           LAYERED              encapsulate with
                                 ARCHITECTURE                                          FACTORIES



    SMART UI
Domain Element              State/Behavior
Entity, Value Object, Aggregate   State and Behavior
       Data Transfer Object           State only
        Service, Repository         Behavior only
keep model unified by
                                                           CONTINUOUS
                                                           INTEGRATION                    SHARED
                                                                                          KERNEL
                      BOUNDED
                      CONTEXT
                                                                                                   CUSTOMER/
   names
                                                                                                    SUPPLIER
    enter                                              overlap allied contexts through
                                                                                                     TEAMS
             assess/overview                                  relate allied contexts as
             relationships with      CONTEXT MAP
                                                             overlap unilaterally as
                                                                                            CONFORMIST

                                                        support multiple
UBIQUITOUS                                               clients through
LANGUAGE                                       free teams to go               OPEN HOST
                                  translate and insulate                       SERVICE        formalize as     PUBLISHED
                                     unilaterally with                                                         LANGUAGE


                                                             SEPARATE
                                                               WAYS
                                  ANTICORRUPTION
                                      LAYER
Shared Kernel



               shared


 Translation
         Map
Context Map

                    Translation
Model in Context           Map



                                  Model in Context
Perguntas?




http://www.milfont.org/tech/2010/05/27/palestra-bdd-unifor-2010/

Mais conteúdo relacionado

ODP
BDD com Cucumber, Selenium e Rails
PDF
Apresentando Extreme Programming
PPT
Behaviour Driven Development
PPT
Test Driven Development
ODP
Mvc sem Controller
ODP
Combinando OO e Funcional em javascript de forma prática
PPT
Mare de Agilidade - BDD e TDD
BDD com Cucumber, Selenium e Rails
Apresentando Extreme Programming
Behaviour Driven Development
Test Driven Development
Mvc sem Controller
Combinando OO e Funcional em javascript de forma prática
Mare de Agilidade - BDD e TDD

Semelhante a Domain driven design (20)

PDF
GT-Digital Preservation - Camada de Interface
PDF
Just java 2011
PDF
A importância da arquitetura de software
PDF
Conceitos de SOA
KEY
Continuous delivery
PDF
Alta produtividade nAlta produtividade no desenvolvimento corporativo em J2EE
PDF
Continuous Delivery e DevOps
PDF
NEC Brasil, T&T Solutions
PPSX
Apresentação Cloud Privada
PDF
Aula2 paradigmas
PDF
GT-Digital Preservation - Camada de Gerenciamento
PDF
Roteiro Ágil - Integrando princípios ágeis para a melhoria do desenvolvimento...
PDF
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
PPTX
Pax Managed Applications [PMA]
PDF
Arquitetura de um barramento de Serviços com BizTalk Server – ESB Toolkit
PDF
Demoiselle - Arquitetura
PDF
Poster 2009 09 24
PPT
MS Online Friday - 2ª Sexta
PPTX
Delphi Conference 2011 - Integração Contínua
GT-Digital Preservation - Camada de Interface
Just java 2011
A importância da arquitetura de software
Conceitos de SOA
Continuous delivery
Alta produtividade nAlta produtividade no desenvolvimento corporativo em J2EE
Continuous Delivery e DevOps
NEC Brasil, T&T Solutions
Apresentação Cloud Privada
Aula2 paradigmas
GT-Digital Preservation - Camada de Gerenciamento
Roteiro Ágil - Integrando princípios ágeis para a melhoria do desenvolvimento...
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Pax Managed Applications [PMA]
Arquitetura de um barramento de Serviços com BizTalk Server – ESB Toolkit
Demoiselle - Arquitetura
Poster 2009 09 24
MS Online Friday - 2ª Sexta
Delphi Conference 2011 - Integração Contínua
Anúncio

Mais de Milfont Consulting (20)

ODP
Continuous integration e continuous delivery para salvar o seu projeto!
PDF
Equipes sem Líderes formais e realmente autogeridas
ODP
ODP
Engine de template em Javascript com HTML Sprites
ODP
MVC Model 3
ODP
Dar caos à ordem
ODP
I TDD my jQuery code without Browser
PDF
Oxente BDD
PDF
Construindo WebApps ricas com Rails e Sencha
PDF
Dar Ordem ao Caos
PPT
Primeiro Dia Livre Opensocial
ODP
Tw Dwr 2007 Ap01
PPT
Course Hibernate 2008
PDF
Opensocial
PPT
Frameworks Ajax
PDF
OpenSocial CCT
PDF
PDF
Conhecendo a JSR 223: Scripting for the Java Platform
ODP
Ajaxificando
PDF
Integração Contínua 3FCSL
Continuous integration e continuous delivery para salvar o seu projeto!
Equipes sem Líderes formais e realmente autogeridas
Engine de template em Javascript com HTML Sprites
MVC Model 3
Dar caos à ordem
I TDD my jQuery code without Browser
Oxente BDD
Construindo WebApps ricas com Rails e Sencha
Dar Ordem ao Caos
Primeiro Dia Livre Opensocial
Tw Dwr 2007 Ap01
Course Hibernate 2008
Opensocial
Frameworks Ajax
OpenSocial CCT
Conhecendo a JSR 223: Scripting for the Java Platform
Ajaxificando
Integração Contínua 3FCSL
Anúncio

Último (19)

PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
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
Apple Pippin Uma breve introdução. - David Glotz
Custos e liquidação no SAP Transportation Management, TM130 Col18
Processos na gestão de transportes, TM100 Col18
Aula 18 - Manipulacao De Arquivos python
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
COBITxITIL-Entenda as diferença em uso governança TI
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Aula04-Academia Heri- Tecnologia Geral 2025
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
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

Domain driven design

  • 1. Domain Driven Design [DDD] Combatendo a complexidade no desenvolvimento de software Christiano Milfont Unifor 2010, Fortaleza Copyleft 2010 Milfont.org
  • 2. Requirements Design Waterfall Implementation Testing Deployment Maintenance
  • 3. Requirements Design Waterfall Implementation Testing Deployment Maintenance
  • 6. Requirements Design Waterfall Implementation Testing Deployment Maintenance
  • 7. Test First Testing Requirements Design Implementation Deployment Maintenance
  • 8. Test First Testing Requirements Design Implementation Deployment Maintenance
  • 9. Test First Testing Design Implementation Requirements Deployment Maintenance
  • 10. Linguagem Ubíqua "A language structured around the domain model and used by all team members to connect all the activities of the team with the software."
  • 11. Um Membro do projeto cadastra uma “Issue” no sistema. Um Gerente de projetos aceita ou rejeita a entrada de Issues para serem trabalhadas. Um Funcionário do hospital dá entrada do Paciente na Emergência. O Cenário de entrada por pacientes depende do Login do usuário com ROLE Admin na Action antes do forward. Um funcionário atende uma solicitação de saída de medicamento pelo prontuário do paciente com limite do cardápio do médico. A Tabela TB_ITEMS tem ligação com a Tabela TB_NOTAS
  • 12. Um Membro do projeto cadastra uma “Issue” no sistema. Um Gerente de projetos aceita ou rejeita a entrada de Issues para serem trabalhadas. Um Funcionário do hospital dá entrada do Paciente na Emergência. O Cenário de entrada por pacientes depende do Login do usuário com ROLE Admin na Action antes do forward. Um funcionário atende uma solicitação de saída de medicamento pelo prontuário do paciente com limite do cardápio do médico. A Tabela TB_ITEMS tem ligação com a Tabela TB_NOTAS
  • 13. Um Membro do projeto cadastra uma “Issue” no sistema. Um Gerente de projetos aceita ou rejeita a entrada de Issues para serem trabalhadas. Um Funcionário do hospital dá entrada do Paciente na Emergência. O Cenário de entrada por pacientes depende do Login do usuário com ROLE Admin na Action antes do forward. Um funcionário atende uma solicitação de saída de medicamento pelo prontuário do paciente com limite do cardápio do médico. A Tabela TB_ITEMS tem ligação com a Tabela TB_NOTAS
  • 16. LoginAction Lembra como voce LoginForm fazia no Struts? LoginVO LoginBO LoginDAO DATABASE
  • 17. LoginBean E sua LoginVO variação JSF? LoginBO DATABASE Login LoginDAO GenericDAO
  • 18. LoginFacade Agora você é LoginService moderno Login DATABASE LoginRepository GenericRepository
  • 19. LoginFacade Agora você é LoginService moderno Login DATABASE LoginRepository GenericRepository
  • 20. Armas não matam pessoas... Pessoas matam pessoas...
  • 22. access with REPOSITORIES SERVICES access with maintain integrity with ENTITIES express model with act as root of express model with AGGREGATES express model with MODEL-DRIVEN VALUE OBJECTS DESIGN encapsulate with encapsulate with encapsulate with isolate domain with X mutually exclusive choices LAYERED encapsulate with ARCHITECTURE FACTORIES SMART UI
  • 23. Domain Element State/Behavior Entity, Value Object, Aggregate State and Behavior Data Transfer Object State only Service, Repository Behavior only
  • 24. keep model unified by CONTINUOUS INTEGRATION SHARED KERNEL BOUNDED CONTEXT CUSTOMER/ names SUPPLIER enter overlap allied contexts through TEAMS assess/overview relate allied contexts as relationships with CONTEXT MAP overlap unilaterally as CONFORMIST support multiple UBIQUITOUS clients through LANGUAGE free teams to go OPEN HOST translate and insulate SERVICE formalize as PUBLISHED unilaterally with LANGUAGE SEPARATE WAYS ANTICORRUPTION LAYER
  • 25. Shared Kernel shared Translation Map
  • 26. Context Map Translation Model in Context Map Model in Context