SlideShare uma empresa Scribd logo
Uma introdução a

                            Domain Driven Design
                                           Daniel Cukier
                                        danicuki@ime.usp.br

                                            IME-USP



quinta-feira, 26 de fevereiro de 2009
Padrões

        Um padrão é uma regra de três partes que
      expressa a relação entre um certo contexto1, um

                problema  2 e uma solução 3




                                           2

quinta-feira, 26 de fevereiro de 2009
O que é DDD

              ✦      Livro de Eric Evans (2004)
              ✦      Padrões
              ✦      Boas práticas
              ✦      Experiência


                                             3

quinta-feira, 26 de fevereiro de 2009
Foco: Domínio

              ✦      Alinhamento com negócio
              ✦      Isolamento entre domínios
              ✦      Reutilização
              ✦      Mínimo acoplamento
              ✦      Independente de tecnologia


                                              4

quinta-feira, 26 de fevereiro de 2009
DDD


                                A volta da Orientação a Objetos?




                                               5

quinta-feira, 26 de fevereiro de 2009
Padrões no DDD
                     [Contexto.]
                     [Discussão do problema.]
                     Resumo do problema.
                     Discussão da solução.
                     Por esta razão:
                     Resumo da solução.
                     Conseqüências, implementação, exemplos.
                     [Contexto resultante.]6
quinta-feira, 26 de fevereiro de 2009
DDD
                             Colocando o
                                                  Blocos de
                              modelo de
                                                construção do
                             domínio para
                                                   MDD
                              funcionar

                     Refatorando
                   para compreender                Projeto
                   profundamente o               estratégico
                        modelo
                                            7

quinta-feira, 26 de fevereiro de 2009
Colocando o modelo
                   de domínio para
                       funcionar

quinta-feira, 26 de fevereiro de 2009
Linguagem Ubíqua



                                               9

quinta-feira, 26 de fevereiro de 2009
Model Driven Design

                     Domínio

                                                                        guia




                                            Modelo                   Refatoração      Design
                                          Desenvolvedores
                                                                                   Software não serve
                                        perdidos e tecnologia
                                                                                     para o domínio
                                            inadequada
                                                                     aperfeiçoa


                                                                10

quinta-feira, 26 de fevereiro de 2009
Blocos de
                                        Construção do
                                           Model
                                           Driven
                                           Design
quinta-feira, 26 de fevereiro de 2009
Arquitetura em Camadas
                                   Interface
                                   de Usuário



                                   Aplicação




                                   Domínio
                                                     DDD
                                   Infra-estrutura


                                                      12

quinta-feira, 26 de fevereiro de 2009
Entidades




                                            13

quinta-feira, 26 de fevereiro de 2009
Objetos de Valores

              ✦      Pra quem não precisa de identidade
              ✦      Imutáveis
              ✦      Descrevem coisas
              ✦      Ciclo de vida rápido
              ✦      Exemplos: Strings, números, cores


                                                14

quinta-feira, 26 de fevereiro de 2009
Agregados
                                                                     Interface



                                                    Entidade

                                             Agregado
                                        Objeto de              Objeto de
                                                    Entidade
                                         Valor                  Valor



quinta-feira, 26 de fevereiro de 2009
Fábricas


              ✦      Quando construir (Agregados) for complexo
              ✦      Devem ser sempre abstratas
              ✦      Não fazem parte do modelo, mas do domínio



                                           16

quinta-feira, 26 de fevereiro de 2009
Serviços


              1. A operação não faz parte de nenhuma
                 Entidade ou Objeto de Valor
              2. Interface fala a língua do Domínio
              3. Sem estado



                                           17

quinta-feira, 26 de fevereiro de 2009
Módulos
              ✦      Agrupe conceitos do modelo, não código
              ✦      Baixo acoplamento / alta coesão
              ✦      Nomes da Linguagem Ubíqua

                                          Modelo = História
                                        Módulo = Capítulo        Módulo = Capítulo

                                        Módulo = Capítulo        Módulo = Capítulo

                                        Módulo = Capítulo        Módulo = Capítulo
                                                            18

quinta-feira, 26 de fevereiro de 2009
Repositórios

                                                                               Código
                                                              b usca
                                                                               Cliente
                                Repositório
                                                                cria           Entidade
                    Agregados               Agregados
                                             Agregados
                     Agregados
                      Agregados


                                        Entidades
                                                                       mo ve
                       Entidades
                                         Entidades
                                                                  re
                        Entidades
                         Entidades
                                             Entidades


                                                         19

quinta-feira, 26 de fevereiro de 2009
Linguagem                                            Model
                               Ubíqua                                         Driven Design
                                                               exp
                                                                  ress
                                                                      am
                                                                          ode
                                        nomes da                              lo c
                                                                                  omo




                                                                                Módulos
         Serviços
                                        Objetos            Entidades                    acess
                                                                                             o com
                                         Valor
                                                                              antémde
                             enc                                            m
                                                                      sula integrida                    Repositórios
                                ap
                               comsul                             ncapm
                                                                 e co          com
                                                       m la




                                      a
                                                    co psu




                                                                                            ac
                                                      ca




                                                                                                es
                                                   en




                                                                                                 ocs
                                                                                                   om
            Fábricas                               encapsula
                                                     com             Agregados
                                                                         20

quinta-feira, 26 de fevereiro de 2009
Refatorando
                          para compreender
                           profundamente
                              o modelo

quinta-feira, 26 de fevereiro de 2009
Interfaces de Intenção Revelada

                     Eu faço
                 exatamente isso.
                  Não precisa se
                 preocupar como




                                        22

quinta-feira, 26 de fevereiro de 2009
Funções sem Efeitos Colaterais


              ✦      Colocar tudo que for possível em funções,
                     principalmente em cálculos complexos
              ✦      Onde não der, usar Comandos que fazem
                     poucas operações e não retornam objetos do
                     domínio


                                          23

quinta-feira, 26 de fevereiro de 2009
Asserções


              ✦      Testes de unidade
              ✦      Usar facilidades da linguagem
              ✦      Testam o comportamento dos Comandos



                                            24

quinta-feira, 26 de fevereiro de 2009
Linguagem                        Model
                                                                     Driven Design
                                         Ubíqua
                          dese                   expressa
                               n
                           usanhadas              modelo
                                 do             através de



                   Interfaces
                  de Intenção
                   Revelada

                                                torna efeitos
                                cria seguras      colaterais
                                 e simples     explícitos com


                                          Funções
                                        sem Efeitos                   Asserções
                                         Colaterais        torna
                                                        composição
                                                          segura
quinta-feira, 26 de fevereiro de 2009
Projeto Estratégico


                                        26

quinta-feira, 26 de fevereiro de 2009
Contexto Delimitado

                            As células existem porque sua
                        membrana define o que está dentro ou
                         fora e determina o que pode entrar




                                            27

quinta-feira, 26 de fevereiro de 2009
Integração Contínua
                                                           Testes
                                             codificação
                         Novo
                      Elemento do
                        Modelo                               Implementação




                                         ✦ Testes automatizados
                                         ✦ Processo de build automático

                                         ✦ Sincronização diária

                                         ✦ Relatórios
                                                28

quinta-feira, 26 de fevereiro de 2009
Mapa do Contexto


                        Modelo no             Mapa de
                        Contexto                         Modelo no
                                              Tradução
                                                         Contexto




                                                  29

quinta-feira, 26 de fevereiro de 2009
Núcleo Compartilhado


                                        Compartilhado




                                             Mapa de
                                             Tradução



              ✦      É mais difícil fazer mudanças
              ✦      Evita (mas não elimina) duplicações
                                             30

quinta-feira, 26 de fevereiro de 2009
Produtor-Consumidor




              ✦      Testes automatizados
              ✦      Cliente-Fornecedor
                                            31

quinta-feira, 26 de fevereiro de 2009
Conformista

              ✦      Time fornecedor não tem interesse em ajudar
              ✦      Tira complexidade de tradução entre contextos
              ✦      Mesma linguagem ubíqua
              ✦      Parecido com Núcleo Compartilhado, mas
                     cliente não tem poder de modificação


                                             32

quinta-feira, 26 de fevereiro de 2009
Camada Anti-corrupção
                 Seu sistema                Camada Anti-corrupção        Outro Sistema
                         Classe             Serviço         Adaptador    Interface
                        elegante              A                A        complicada



                            Outras coisas     Tradutor 1                          Coisas
                             bem feitas                                        irrelevantes
                                                              Fachada

                                                                          Classe
             Classe cara                       Tradutor 2               bagunçada


            Ok, isso a                      Serviço         Adaptador           Você nem
          gente tem que                       B                B                quer saber
            refatorar
                                                       33

quinta-feira, 26 de fevereiro de 2009
Caminhos Separados


              ✦      Quando integrar custa caro e o benefício é
                     pequeno
              ✦      Contexto delimitado que não tem nenhuma
                     conexão com os outros



                                           34

quinta-feira, 26 de fevereiro de 2009
Resumindo

              1. Trabalhando com um modelo
              2. Blocos de construção
              3. Refatorando e evoluindo
              4. Refinando, destilando


                                            35

quinta-feira, 26 de fevereiro de 2009
quinta-feira, 26 de fevereiro de 2009
Núcleo        Serviço de
                                                                            Linguagem     Contexto       Integração
                            Conformista         Compar-      Hospedagem
                                                                            Publicada     Delimitado      Contínua
                                                 tilhado       Aberto


                   Camada                             Interfaces de                  Model
                                        Contornos                     Linguagem                   Arquitetura   Mapa do
                    Anti-                               Intenção                     Driven
                                        Conceituais                     Ubíqua                    em Camadas    Contexto
                  corrupção                             Revelada                     Design


                            Fechamento Funções sem
       Caminhos                                                Núcleo        Núcleo                      Objetos de
                                de       Efeitos                                           Entidades
       Separados                                               Abstrato     Segregado                     Valores

                                               Isso não é tudo
                             Operações  Colaterais


                    Classes                           Subdomínios     Núcleo do    Mecanismos
                                         Asserções                                                 Serviços     Módulos
                    Isoladas                           Genéricos      Domínio       Coesivos


                              Nível de                       Sentença da
                                                Ordem                        Núcleo
                              Conheci-                        Visão do                    Agregados       Fábricas
                                               que Evolui                   Destacado
                               mento                          Domínio


                                         Arcabouço Camadas de
                                                                       Metáfora
                                        Componente Responsa-                       Repositórios
                                                                      de Sistema
                                          Plugável  bilidade



quinta-feira, 26 de fevereiro de 2009
Referências

              ✦Evans, Eric - Domain Driven Design, Addison-
              Wesley - 2004
              ✦http://www.infoq.com/resource/minibooks/
              domain-driven-design-quickly/en/pdf/
              DomainDrivenDesignQuicklyOnline.pdf


                                             38

quinta-feira, 26 de fevereiro de 2009

Mais conteúdo relacionado

PPTX
Security Metrics Program
PPTX
IBM QRadar BB & Rules
PDF
04.a sis to be_정보보호체계 제언1
PPT
Quantitative Project Risk Analysis
PPTX
Evaluating System-Level Cyber Security vs. ANSI/ISA-62443-3-3
PPTX
Understanding asset management
PPT
Planning and Deploying an Effective Vulnerability Management Program
PPTX
Threat Hunting Web Shells Using Splunk
Security Metrics Program
IBM QRadar BB & Rules
04.a sis to be_정보보호체계 제언1
Quantitative Project Risk Analysis
Evaluating System-Level Cyber Security vs. ANSI/ISA-62443-3-3
Understanding asset management
Planning and Deploying an Effective Vulnerability Management Program
Threat Hunting Web Shells Using Splunk

Mais procurados (20)

PPTX
Understanding Active Directory Enumeration
PPTX
Detecting modern PowerShell attacks with SIEM
PDF
How to Reduce the Attack Surface Created by Your Cyber-Tools
PPTX
Vulnerability Management: What You Need to Know to Prioritize Risk
PPTX
Cross site scripting XSS
PDF
Modern security using graphs, automation and data science
PPTX
Vulnerability Assesment
PPTX
Creating an experimental GraphQL formatter using Clojure, Instaparse, and Gra...
PPTX
Security Champions - Introduce them in your Organisation
PPTX
Vulnerability Management
PDF
QRadar Architecture.pdf
PPTX
An introduction to SOC (Security Operation Center)
PDF
Critical infrastructure
PPTX
Aplicaciones offline sd conceptos avanzados
PDF
EBIOS RM - Cryptovirus & COVID-19
PDF
2022 Cybersecurity Predictions
PDF
Penetration Testing Procedures & Methodologies.pdf
PPTX
Multi cloud security architecture
PPTX
Best Practices and ROI for Risk-based Vulnerability Management
PDF
Conix - EBIOS Risk Manager
Understanding Active Directory Enumeration
Detecting modern PowerShell attacks with SIEM
How to Reduce the Attack Surface Created by Your Cyber-Tools
Vulnerability Management: What You Need to Know to Prioritize Risk
Cross site scripting XSS
Modern security using graphs, automation and data science
Vulnerability Assesment
Creating an experimental GraphQL formatter using Clojure, Instaparse, and Gra...
Security Champions - Introduce them in your Organisation
Vulnerability Management
QRadar Architecture.pdf
An introduction to SOC (Security Operation Center)
Critical infrastructure
Aplicaciones offline sd conceptos avanzados
EBIOS RM - Cryptovirus & COVID-19
2022 Cybersecurity Predictions
Penetration Testing Procedures & Methodologies.pdf
Multi cloud security architecture
Best Practices and ROI for Risk-based Vulnerability Management
Conix - EBIOS Risk Manager
Anúncio

Destaque (12)

PPTX
Bolovo - problema antigo de arquitetura de software - não use por aí
PPTX
Domain driven design - Visão Geral
PDF
Domain-Driven-Design
PDF
Treinamento DDD .Net
PDF
Domain Driven Design - Aplicando estrategias e padrões
PPTX
DDD - Domain Driven Design
PDF
Entendendo Domain-Driven Design
PDF
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
PDF
DDD – Domain Driven Design
PDF
Bounded Context e CQRS na evolução de aplicações .NET legadas
PDF
Atacando as complexidades no coração do software
PPT
Padrões Arquiteturais de Sistemas
Bolovo - problema antigo de arquitetura de software - não use por aí
Domain driven design - Visão Geral
Domain-Driven-Design
Treinamento DDD .Net
Domain Driven Design - Aplicando estrategias e padrões
DDD - Domain Driven Design
Entendendo Domain-Driven Design
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
DDD – Domain Driven Design
Bounded Context e CQRS na evolução de aplicações .NET legadas
Atacando as complexidades no coração do software
Padrões Arquiteturais de Sistemas
Anúncio

Semelhante a DDD - Domain Driven Design (15)

PDF
Flisol 2012
PDF
PDF
Desenvolvimento Ágil com SCRUM
PDF
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
PPTX
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
PDF
Amazon Web Services Trends
PPTX
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
PDF
M2TI - EAIC
KEY
2. Abordagens Ágeis
PDF
Desenvolvendo Interfaces de Usuário Multiplataformas utilizando MDA
PPTX
Domain Driven Design : Pensando Fora da Caixa
PDF
A importância da arquitetura de software
PDF
Case Usiminas
Flisol 2012
Desenvolvimento Ágil com SCRUM
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Amazon Web Services Trends
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
M2TI - EAIC
2. Abordagens Ágeis
Desenvolvendo Interfaces de Usuário Multiplataformas utilizando MDA
Domain Driven Design : Pensando Fora da Caixa
A importância da arquitetura de software
Case Usiminas

Mais de Daniel Cukier (20)

PDF
Solidity: Zero to Hero Corporate Training
PDF
Spring e Injeção de Dependência
PDF
Pair programming
PDF
Eficiency and Low Cost: Pro Tips for you to save 50% of your money with Googl...
PDF
Startup Communities: From Nascence to Maturity
PDF
Technology Startups Ecosystem in China - Lessons to other ecosystems
PDF
Software Startup Ecosystems Evolution - The New York City Case Study
PDF
Maturity model for Startup Ecosystems
PDF
Why Google Cloud is so special? Stories from a cloud user
PDF
Software Architectures for a Single Person Team
PDF
Startup Communities
PDF
Introduction to Functional Programming with Scala
PDF
Play vs Rails
PDF
O dia a dia de uma Startup
KEY
Injeção de Dependência e Testes com Dublês
PDF
Selecting Empirical Methods for Software Engineering
PDF
Is Computer Science Science?
PDF
Ruby Robots
PDF
Better Science Through Art
PDF
Designed as Designer
Solidity: Zero to Hero Corporate Training
Spring e Injeção de Dependência
Pair programming
Eficiency and Low Cost: Pro Tips for you to save 50% of your money with Googl...
Startup Communities: From Nascence to Maturity
Technology Startups Ecosystem in China - Lessons to other ecosystems
Software Startup Ecosystems Evolution - The New York City Case Study
Maturity model for Startup Ecosystems
Why Google Cloud is so special? Stories from a cloud user
Software Architectures for a Single Person Team
Startup Communities
Introduction to Functional Programming with Scala
Play vs Rails
O dia a dia de uma Startup
Injeção de Dependência e Testes com Dublês
Selecting Empirical Methods for Software Engineering
Is Computer Science Science?
Ruby Robots
Better Science Through Art
Designed as Designer

Último (19)

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

DDD - Domain Driven Design

  • 1. Uma introdução a Domain Driven Design Daniel Cukier danicuki@ime.usp.br IME-USP quinta-feira, 26 de fevereiro de 2009
  • 2. Padrões Um padrão é uma regra de três partes que expressa a relação entre um certo contexto1, um problema 2 e uma solução 3 2 quinta-feira, 26 de fevereiro de 2009
  • 3. O que é DDD ✦ Livro de Eric Evans (2004) ✦ Padrões ✦ Boas práticas ✦ Experiência 3 quinta-feira, 26 de fevereiro de 2009
  • 4. Foco: Domínio ✦ Alinhamento com negócio ✦ Isolamento entre domínios ✦ Reutilização ✦ Mínimo acoplamento ✦ Independente de tecnologia 4 quinta-feira, 26 de fevereiro de 2009
  • 5. DDD A volta da Orientação a Objetos? 5 quinta-feira, 26 de fevereiro de 2009
  • 6. Padrões no DDD [Contexto.] [Discussão do problema.] Resumo do problema. Discussão da solução. Por esta razão: Resumo da solução. Conseqüências, implementação, exemplos. [Contexto resultante.]6 quinta-feira, 26 de fevereiro de 2009
  • 7. DDD Colocando o Blocos de modelo de construção do domínio para MDD funcionar Refatorando para compreender Projeto profundamente o estratégico modelo 7 quinta-feira, 26 de fevereiro de 2009
  • 8. Colocando o modelo de domínio para funcionar quinta-feira, 26 de fevereiro de 2009
  • 9. Linguagem Ubíqua 9 quinta-feira, 26 de fevereiro de 2009
  • 10. Model Driven Design Domínio guia Modelo Refatoração Design Desenvolvedores Software não serve perdidos e tecnologia para o domínio inadequada aperfeiçoa 10 quinta-feira, 26 de fevereiro de 2009
  • 11. Blocos de Construção do Model Driven Design quinta-feira, 26 de fevereiro de 2009
  • 12. Arquitetura em Camadas Interface de Usuário Aplicação Domínio DDD Infra-estrutura 12 quinta-feira, 26 de fevereiro de 2009
  • 13. Entidades 13 quinta-feira, 26 de fevereiro de 2009
  • 14. Objetos de Valores ✦ Pra quem não precisa de identidade ✦ Imutáveis ✦ Descrevem coisas ✦ Ciclo de vida rápido ✦ Exemplos: Strings, números, cores 14 quinta-feira, 26 de fevereiro de 2009
  • 15. Agregados Interface Entidade Agregado Objeto de Objeto de Entidade Valor Valor quinta-feira, 26 de fevereiro de 2009
  • 16. Fábricas ✦ Quando construir (Agregados) for complexo ✦ Devem ser sempre abstratas ✦ Não fazem parte do modelo, mas do domínio 16 quinta-feira, 26 de fevereiro de 2009
  • 17. Serviços 1. A operação não faz parte de nenhuma Entidade ou Objeto de Valor 2. Interface fala a língua do Domínio 3. Sem estado 17 quinta-feira, 26 de fevereiro de 2009
  • 18. Módulos ✦ Agrupe conceitos do modelo, não código ✦ Baixo acoplamento / alta coesão ✦ Nomes da Linguagem Ubíqua Modelo = História Módulo = Capítulo Módulo = Capítulo Módulo = Capítulo Módulo = Capítulo Módulo = Capítulo Módulo = Capítulo 18 quinta-feira, 26 de fevereiro de 2009
  • 19. Repositórios Código b usca Cliente Repositório cria Entidade Agregados Agregados Agregados Agregados Agregados Entidades mo ve Entidades Entidades re Entidades Entidades Entidades 19 quinta-feira, 26 de fevereiro de 2009
  • 20. Linguagem Model Ubíqua Driven Design exp ress am ode nomes da lo c omo Módulos Serviços Objetos Entidades acess o com Valor antémde enc m sula integrida Repositórios ap comsul ncapm e co com m la a co psu ac ca es en ocs om Fábricas encapsula com Agregados 20 quinta-feira, 26 de fevereiro de 2009
  • 21. Refatorando para compreender profundamente o modelo quinta-feira, 26 de fevereiro de 2009
  • 22. Interfaces de Intenção Revelada Eu faço exatamente isso. Não precisa se preocupar como 22 quinta-feira, 26 de fevereiro de 2009
  • 23. Funções sem Efeitos Colaterais ✦ Colocar tudo que for possível em funções, principalmente em cálculos complexos ✦ Onde não der, usar Comandos que fazem poucas operações e não retornam objetos do domínio 23 quinta-feira, 26 de fevereiro de 2009
  • 24. Asserções ✦ Testes de unidade ✦ Usar facilidades da linguagem ✦ Testam o comportamento dos Comandos 24 quinta-feira, 26 de fevereiro de 2009
  • 25. Linguagem Model Driven Design Ubíqua dese expressa n usanhadas modelo do através de Interfaces de Intenção Revelada torna efeitos cria seguras colaterais e simples explícitos com Funções sem Efeitos Asserções Colaterais torna composição segura quinta-feira, 26 de fevereiro de 2009
  • 26. Projeto Estratégico 26 quinta-feira, 26 de fevereiro de 2009
  • 27. Contexto Delimitado As células existem porque sua membrana define o que está dentro ou fora e determina o que pode entrar 27 quinta-feira, 26 de fevereiro de 2009
  • 28. Integração Contínua Testes codificação Novo Elemento do Modelo Implementação ✦ Testes automatizados ✦ Processo de build automático ✦ Sincronização diária ✦ Relatórios 28 quinta-feira, 26 de fevereiro de 2009
  • 29. Mapa do Contexto Modelo no Mapa de Contexto Modelo no Tradução Contexto 29 quinta-feira, 26 de fevereiro de 2009
  • 30. Núcleo Compartilhado Compartilhado Mapa de Tradução ✦ É mais difícil fazer mudanças ✦ Evita (mas não elimina) duplicações 30 quinta-feira, 26 de fevereiro de 2009
  • 31. Produtor-Consumidor ✦ Testes automatizados ✦ Cliente-Fornecedor 31 quinta-feira, 26 de fevereiro de 2009
  • 32. Conformista ✦ Time fornecedor não tem interesse em ajudar ✦ Tira complexidade de tradução entre contextos ✦ Mesma linguagem ubíqua ✦ Parecido com Núcleo Compartilhado, mas cliente não tem poder de modificação 32 quinta-feira, 26 de fevereiro de 2009
  • 33. Camada Anti-corrupção Seu sistema Camada Anti-corrupção Outro Sistema Classe Serviço Adaptador Interface elegante A A complicada Outras coisas Tradutor 1 Coisas bem feitas irrelevantes Fachada Classe Classe cara Tradutor 2 bagunçada Ok, isso a Serviço Adaptador Você nem gente tem que B B quer saber refatorar 33 quinta-feira, 26 de fevereiro de 2009
  • 34. Caminhos Separados ✦ Quando integrar custa caro e o benefício é pequeno ✦ Contexto delimitado que não tem nenhuma conexão com os outros 34 quinta-feira, 26 de fevereiro de 2009
  • 35. Resumindo 1. Trabalhando com um modelo 2. Blocos de construção 3. Refatorando e evoluindo 4. Refinando, destilando 35 quinta-feira, 26 de fevereiro de 2009
  • 36. quinta-feira, 26 de fevereiro de 2009
  • 37. Núcleo Serviço de Linguagem Contexto Integração Conformista Compar- Hospedagem Publicada Delimitado Contínua tilhado Aberto Camada Interfaces de Model Contornos Linguagem Arquitetura Mapa do Anti- Intenção Driven Conceituais Ubíqua em Camadas Contexto corrupção Revelada Design Fechamento Funções sem Caminhos Núcleo Núcleo Objetos de de Efeitos Entidades Separados Abstrato Segregado Valores Isso não é tudo Operações Colaterais Classes Subdomínios Núcleo do Mecanismos Asserções Serviços Módulos Isoladas Genéricos Domínio Coesivos Nível de Sentença da Ordem Núcleo Conheci- Visão do Agregados Fábricas que Evolui Destacado mento Domínio Arcabouço Camadas de Metáfora Componente Responsa- Repositórios de Sistema Plugável bilidade quinta-feira, 26 de fevereiro de 2009
  • 38. Referências ✦Evans, Eric - Domain Driven Design, Addison- Wesley - 2004 ✦http://www.infoq.com/resource/minibooks/ domain-driven-design-quickly/en/pdf/ DomainDrivenDesignQuicklyOnline.pdf 38 quinta-feira, 26 de fevereiro de 2009