SlideShare una empresa de Scribd logo
1 de 144
Descargar para leer sin conexión
Domain-Driven
                       Design
                       Workshop 2009




http://fragmental.tw    http://blog.fragmental.com.br   http://www.caelum.com.br
Modelando




http://fragmental.tw    http://blog.fragmental.com.br   http://www.caelum.com.br
Notação

       Classe                                            Classe
     atributo A                                        atributo A
     operação B                                        operação B




           Classe                                           Classe
       atributo A                                        atributo A

       operação B                                        operação B



http://fragmental.tw   http://blog.fragmental.com.br                http://www.caelum.com.br
Modelando
     • Aplicação Web
     • Utilizando cartões CRC-like
     • Da Interface até a base de dados/infra-
            estrutura
     • Apenas para fins didáticos - não
            façam isso em casa


http://fragmental.tw     http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Atendente,
           Eu quero registrar a entrada
           em um estacionamento,
           Para que possa cobrar pelo
           tempo utilizado



http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Atendente,
           Eu quero registrar a saída do
           estacionamento,
           Para que possa cobrar pelo
           tempo utilizado



http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Apresentação


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Parte I: Decisões




http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Problema:




http://fragmental.tw     http://blog.fragmental.com.br   http://www.caelum.com.br
Problema:


                Como um Usuário,
                Eu quero me cadastrar no
                site sistema,
                Para que possa utilizá-lo

http://fragmental.tw     http://blog.fragmental.com.br   http://www.caelum.com.br
Reflexão


http://fragmental.tw     http://blog.fragmental.com.br   http://www.caelum.com.br
Decisão em Três Níveis

                        Qual?
                       Como?
http://fragmental.tw
                       O Quê?
                        http://blog.fragmental.com.br   http://www.caelum.com.br
Qual material?



http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Qual material?
   nçõ  es
Fu
       Proc
Ob          edim
   jet          ento
       os           s
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Como
eles
colaboram?
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Como Tabelas?




http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Como Procedimentos?




 http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Como Uma Sociedade?




 http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Reflexão


http://fragmental.tw     http://blog.fragmental.com.br   http://www.caelum.com.br
O que são
estes objetos?


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
O que são
estes objetos?


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Mais Cartões




http://fragmental.tw      http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Atendente,
           Eu quero indicar a vaga mais
           apropriada para meu cliente,
           Para que possa otimizar a
           distribuição de carros



http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Atendente,
           Eu quero ver um relógio
           marcando o tempo que o
           cliente está estacionado,
           Para que eu tome decisões
           rapidamente


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Apresentação


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Camadas?

http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Mudança
Mudança
Mudança
Mudança
Mudança
Mudança
Mudança
Mudança
Mudança
Mudança
Mudança
Mudança
Apresentação



  Aplicação



   Negócios



Infra-Estrutura
Domain-Driven
   Design
Identificando Camadas




http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Identificando Camadas



     • Separe as classes do modelo em suas
            respectivas Camadas
     • Refatore, se necessário


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Apresentação


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Parte II: Linguagem




http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
*

                       B       C                           A




                                                           {
                                                           D




http://fragmental.tw       http://blog.fragmental.com.br       http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Ruído




 http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Usuário,
Eu quero me cadastrar no site
sistema,
Para que possa utilizá-lo




      http://fragmental.tw      http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Usuário,
Eu quero me cadastrar no site
sistema,
Para que possa utilizá-lo




Ruído




      http://fragmental.tw      http://blog.fragmental.com.br   http://www.caelum.com.br
Ruído Sintático

   Como um Usuário,
   Eu quero me cadastrar no site
   sistema,
   Para que possa utilizá-lo




http://fragmental.tw               http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Ruído




 http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Ruído Semântico




http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Reflexão


http://fragmental.tw     http://blog.fragmental.com.br   http://www.caelum.com.br
Ruído
Sintático
  Ruído
Semântico




 http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Ruído
Sintático
  Ruído
Semântico               }   Domain-Driven
                            Design




 http://fragmental.tw          http://blog.fragmental.com.br   http://www.caelum.com.br
}
  Ruído
Sintático                                               Domain-Specific
                                                        Languages
  Ruído
Semântico




 http://fragmental.tw   http://blog.fragmental.com.br      http://www.caelum.com.br
Ruído
Semântico               }               Domain-Driven
                                        Design


 http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Técnico                                                    Negócios
                                                                                 Reserva
       Herança
                                                                        Vaga
                       Composição                                                  Manutenção
    Objeto                          Classe                 Ocupante

                        Thread
         DAO                                                  Carro            Funcionário
                              Framework
                                                                                   Manutenção
         Teste Unitário                                    Imposto

                                                                                  Conta
                             Segurança                                Moto
          Patterns
                                                                       Gerente




http://fragmental.tw                  http://blog.fragmental.com.br                 http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Negócios




                       Técnico
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Técnico                                     Negócios




                       Linguagem



http://fragmental.tw   http://blog.fragmental.com.br        http://www.caelum.com.br
Obrigado
                       Até a próxima!

http://fragmental.tw       http://blog.fragmental.com.br   http://www.caelum.com.br
Identificando Ruído




http://fragmental.tw     http://blog.fragmental.com.br   http://www.caelum.com.br
Identificando Ruído


     • Identifique o que no Modelo faz parte
            do domínio técnico e de negócios
     • Escreva um esboço do que seria a
            Linguagem deste domínio




http://fragmental.tw     http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Atendente,
           Eu quero registrar a entrada
           em um estacionamento,
           Para que possa cobrar pelo
           tempo utilizado



http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Atendente,
           Eu quero registrar a saída do
           estacionamento,
           Para que possa cobrar pelo
           tempo utilizado



http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Atendente,
           Eu quero indicar a vaga mais
           apropriada para meu cliente,
           Para que possa otimizar a
           distribuição de carros



http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Atendente,
           Eu quero ver um relógio
           marcando o tempo que o
           cliente está estacionado,
           Para que eu tome decisões
           rapidamente


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Apresentação


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Parte III: Base




http://fragmental.tw       http://blog.fragmental.com.br   http://www.caelum.com.br
Nomeando Bovinos


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Objetos com identidade                                  Entity


     Objetos definidos por
                                                       Value Object
          seu valor

  Lugar de onde obtemos
                                                       Repository
         objetos

 Interações entre objetos
                                                         Service
   em uma dada ordem


http://fragmental.tw   http://blog.fragmental.com.br               http://www.caelum.com.br
Value Object



          Saldo A = 100
          Saldo B = 10 + 80 + 5 + 5
          Saldo C = 90 - 12 + 6 + 6


http://fragmental.tw      http://blog.fragmental.com.br   http://www.caelum.com.br
Value Object



          Data A = 25/12/1983
          Data B = Natal de 1983
          Data C = 6 dias para 1984


http://fragmental.tw      http://blog.fragmental.com.br   http://www.caelum.com.br
Conta                                            Conta
Vencimento: 21/02/2008
Valor: R$4.000,00
                           ==                     Vencimento: 21/02/2008
                                                  Valor: R$4.000,00
                                                                                          ?
Credor: Casas da Banha                            Credor: Casas da Banha




   http://fragmental.tw   http://blog.fragmental.com.br            http://www.caelum.com.br
Entity

                       Cliente                                         Serviço




                       Toca Música                                   Recomenda Música




http://fragmental.tw                 http://blog.fragmental.com.br                http://www.caelum.com.br
Entity

                       Cliente                                   Serviço




Los Hermanos!
http://fragmental.tw             http://blog.fragmental.com.br             http://www.caelum.com.br
Entity

                       Cliente                                   Serviço




  ✓
Los Hermanos!
http://fragmental.tw             http://blog.fragmental.com.br             http://www.caelum.com.br
Entity

                       Cliente                                   Serviço




  ✓
Los Hermanos!
http://fragmental.tw             http://blog.fragmental.com.br             http://www.caelum.com.br
Entity

                       Cliente                                   Serviço




  ✓
Los Hermanos!                                                    Los Hermanos?
http://fragmental.tw             http://blog.fragmental.com.br             http://www.caelum.com.br
Entity

                       Cliente                                   Serviço




  ✓                                                                  ?
Los Hermanos!                                                    Los Hermanos?
http://fragmental.tw             http://blog.fragmental.com.br             http://www.caelum.com.br
Entity



                   ✓Identidade
                   ✓Ciclo de Vida

http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Entity


                       ✓Identidade
     Chave Primária
       Object ID
       Hashcode
     Definida pela
Linguagem do Domínio
http://fragmental.tw      http://blog.fragmental.com.br   http://www.caelum.com.br
Service
                        Mensagem




             Módulo A                                   Módulo B
http://fragmental.tw    http://blog.fragmental.com.br      http://www.caelum.com.br
Service
                        Mensagem




                                     ?




             Módulo A                                   Módulo B
http://fragmental.tw    http://blog.fragmental.com.br      http://www.caelum.com.br
Service
                        Mensagem




                         Roteador




             Módulo A                                   Módulo B
http://fragmental.tw    http://blog.fragmental.com.br      http://www.caelum.com.br
Service


✓Parte da Linguagem
✓Fluxo de ações sobre outros
objetos do domínio
✓Sem estado

 http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Service
            Atenção!
           92,9245% do
         que você achar
         que são Services
             não são!
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Repository




              (de onde vêm os bebês?)

http://fragmental.tw    http://blog.fragmental.com.br   http://www.caelum.com.br
Cliente


                         Repositório


  http://fragmental.tw    http://blog.fragmental.com.br   http://www.caelum.com.br
Cliente


                                                             Código que Acessa
                         Repositório                         o Banco de Dados

  http://fragmental.tw       http://blog.fragmental.com.br        http://www.caelum.com.br
Repository

✓Parte da Linguagem
✓Não deixa vazar detalhes de
implementação
✓Tenha o menor número
possível

 http://fragmental.tw    http://blog.fragmental.com.br   http://www.caelum.com.br
Identificando Padrões




http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Identificando Padrões



     • Marque usando tags os padrões no seu
            domínio




http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Apresentação


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Parte IV: Escalando




http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Integrando




http://fragmental.tw     http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Contador,
           Eu que as transações sejam
           gerenciadas pelo meu
           sistema,
           Para evitar duplicação de
           dados


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Sistema Contábil

                                                                  Envolvido



                                                    Credor
Transação


                                                   Devedor




   http://fragmental.tw        http://blog.fragmental.com.br   http://www.caelum.com.br
Apresentação


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
A


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
A               B


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
A               B                               C


http://fragmental.tw   http://blog.fragmental.com.br       http://www.caelum.com.br
A                                             B


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
A                                             B


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
A                                             B


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
A                                             B


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
A                                             B


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Mapa


     A                                                  B


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Desenhando o Mapa




http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Desenhando o Mapa



     • Estabeleça a relação entre os dois
            domínios em um diagrama




http://fragmental.tw    http://blog.fragmental.com.br   http://www.caelum.com.br
Apresentação


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Mudanças do
                        Lado de Lá




http://fragmental.tw     http://blog.fragmental.com.br   http://www.caelum.com.br
Sistema Contábil

                                                                  Envolvido



                                                    Credor
Transação


                                                   Devedor




   http://fragmental.tw        http://blog.fragmental.com.br   http://www.caelum.com.br
Sistema Contábil

                                                                  Envolvido



                                                    Credor
Transação


                                                   Devedor




   http://fragmental.tw        http://blog.fragmental.com.br   http://www.caelum.com.br
Sistema Contábil


 Conta                                                   Devedor




Transação                                                 Credor



  http://fragmental.tw        http://blog.fragmental.com.br        http://www.caelum.com.br
Apresentação


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Anti-Corrupção




     A                                                 B


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Contexts, Map & Anti-Corruption

✓Nomes dos Bounded Contexts
são parte da Linguagem
✓Mapa precisa ser executável e
verificável
✓Anti-Corruption Layer não faz
parte da Linguagem, deve ser
abstraída
  http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
O que são “Outros
                Domínios”?
‣“Pedaços” com linguagem diferente
‣Sistemas legados
‣Bases de dados legadas
‣Serviços remotos
‣Qualquer “pedaço” que você não controle

   http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Introduza
                       Anti-Corrupção




http://fragmental.tw       http://blog.fragmental.com.br   http://www.caelum.com.br
Apresentação


http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Conclusão:


      Melhore sua
     comunicação.

http://fragmental.tw     http://blog.fragmental.com.br   http://www.caelum.com.br
Referências




http://fragmental.tw    http://blog.fragmental.com.br   http://www.caelum.com.br
Créditos de Fotos


http://www.flickr.com/photos/ orbitgal
                                                          bernatcg
                                                          sykossa
                                                          januszbc
                                                          mdumlao98
                                                          8471692@N07
                                                          beija-flor
                                                          clarissa
                                                          londonmummy
                                                          neilharvey
                                                          rodrigobertolino
                                                          niallkennedy
                                                          aoneill
                                                          ericeslinger
http://fragmental.tw      http://blog.fragmental.com.br            http://www.caelum.com.br
http://creativecommons.org/licenses/by-nc-nd/2.5/br/


 http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br
Como um Usuário,
           Eu quero consultar minha
           conta na Internet,
           Para que possa pagá-la




http://fragmental.tw   http://blog.fragmental.com.br   http://www.caelum.com.br

Más contenido relacionado

Similar a DDD Workshop 2009 Domain-Driven Design

Palestra / SDD / Crossbrowsing
Palestra / SDD / CrossbrowsingPalestra / SDD / Crossbrowsing
Palestra / SDD / Crossbrowsinghugodiasneto
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 
Introdução ao Web Design: Aula 5 - HTML (part. 1)
Introdução ao Web Design: Aula 5 - HTML (part. 1)Introdução ao Web Design: Aula 5 - HTML (part. 1)
Introdução ao Web Design: Aula 5 - HTML (part. 1)Gustavo Zimmermann
 
HTML5 Básico: Marcação (aula 1)
HTML5 Básico: Marcação (aula 1)HTML5 Básico: Marcação (aula 1)
HTML5 Básico: Marcação (aula 1)Gustavo Zimmermann
 
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info
 
Performance e boas_praticas_de_web
Performance e boas_praticas_de_webPerformance e boas_praticas_de_web
Performance e boas_praticas_de_webThiago Verly
 
Webinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosWebinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosEmbarcados
 
ECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.jsECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.jsWaldyr Felix
 
Arquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaArquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaBreno Vitorino
 
Os 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSFOs 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSFRafael Ponte
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline AppsByclosure
 
Nem tudo é Pepino: Cucumber x Robot Framework
Nem tudo é Pepino: Cucumber x Robot FrameworkNem tudo é Pepino: Cucumber x Robot Framework
Nem tudo é Pepino: Cucumber x Robot FrameworkRodrigo Matola
 
Javascript State of the Union 2015
Javascript State of the Union 2015Javascript State of the Union 2015
Javascript State of the Union 2015Huge
 
Tutorial sobre Bootstrap
Tutorial sobre BootstrapTutorial sobre Bootstrap
Tutorial sobre BootstrapIvo Calado
 
Apresentação blogs
Apresentação blogsApresentação blogs
Apresentação blogsluizaselis
 
Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produçãothomasdacosta
 

Similar a DDD Workshop 2009 Domain-Driven Design (20)

Palestra / SDD / Crossbrowsing
Palestra / SDD / CrossbrowsingPalestra / SDD / Crossbrowsing
Palestra / SDD / Crossbrowsing
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
Introdução ao Web Design: Aula 5 - HTML (part. 1)
Introdução ao Web Design: Aula 5 - HTML (part. 1)Introdução ao Web Design: Aula 5 - HTML (part. 1)
Introdução ao Web Design: Aula 5 - HTML (part. 1)
 
Guia4
Guia4Guia4
Guia4
 
HTML5 Básico: Marcação (aula 1)
HTML5 Básico: Marcação (aula 1)HTML5 Básico: Marcação (aula 1)
HTML5 Básico: Marcação (aula 1)
 
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
 
Performance e boas_praticas_de_web
Performance e boas_praticas_de_webPerformance e boas_praticas_de_web
Performance e boas_praticas_de_web
 
Webinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosWebinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcados
 
Apresentando o CakePHP
Apresentando o CakePHPApresentando o CakePHP
Apresentando o CakePHP
 
ECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.jsECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.js
 
Arquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaArquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em Java
 
Os 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSFOs 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSF
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline Apps
 
Divida tecnica
Divida tecnicaDivida tecnica
Divida tecnica
 
Nem tudo é Pepino: Cucumber x Robot Framework
Nem tudo é Pepino: Cucumber x Robot FrameworkNem tudo é Pepino: Cucumber x Robot Framework
Nem tudo é Pepino: Cucumber x Robot Framework
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3
 
Javascript State of the Union 2015
Javascript State of the Union 2015Javascript State of the Union 2015
Javascript State of the Union 2015
 
Tutorial sobre Bootstrap
Tutorial sobre BootstrapTutorial sobre Bootstrap
Tutorial sobre Bootstrap
 
Apresentação blogs
Apresentação blogsApresentação blogs
Apresentação blogs
 
Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 

Más de Phil Calçado

the afterparty: refactoring after 100x hypergrowth
the afterparty: refactoring after 100x hypergrowththe afterparty: refactoring after 100x hypergrowth
the afterparty: refactoring after 100x hypergrowthPhil Calçado
 
don't try this at home: self-improvement as a senior leader
don't try this at home: self-improvement as a senior leaderdon't try this at home: self-improvement as a senior leader
don't try this at home: self-improvement as a senior leaderPhil Calçado
 
The Economics of Microservices (redux)
The Economics of Microservices (redux)The Economics of Microservices (redux)
The Economics of Microservices (redux)Phil Calçado
 
From microservices to serverless - Chicago CTO Summit 2019
From microservices to serverless - Chicago CTO Summit 2019From microservices to serverless - Chicago CTO Summit 2019
From microservices to serverless - Chicago CTO Summit 2019Phil Calçado
 
The Not-So-Straightforward Road From Microservices to Serverless
The Not-So-Straightforward Road From Microservices to ServerlessThe Not-So-Straightforward Road From Microservices to Serverless
The Not-So-Straightforward Road From Microservices to ServerlessPhil Calçado
 
Ten Years of Failing Microservices
Ten Years of Failing MicroservicesTen Years of Failing Microservices
Ten Years of Failing MicroservicesPhil Calçado
 
The Next Generation of Microservices
The Next Generation of MicroservicesThe Next Generation of Microservices
The Next Generation of MicroservicesPhil Calçado
 
The Next Generation of Microservices — YOW 2017 Brisbane
The Next Generation of Microservices — YOW 2017 BrisbaneThe Next Generation of Microservices — YOW 2017 Brisbane
The Next Generation of Microservices — YOW 2017 BrisbanePhil Calçado
 
The Economics of Microservices (2017 CraftConf)
The Economics of Microservices  (2017 CraftConf)The Economics of Microservices  (2017 CraftConf)
The Economics of Microservices (2017 CraftConf)Phil Calçado
 
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...Phil Calçado
 
Finagle @ SoundCloud
Finagle @ SoundCloudFinagle @ SoundCloud
Finagle @ SoundCloudPhil Calçado
 
A Brief Talk On High-Performing Organisations
A Brief Talk On High-Performing OrganisationsA Brief Talk On High-Performing Organisations
A Brief Talk On High-Performing OrganisationsPhil Calçado
 
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Phil Calçado
 
Rhein-Main Scala Enthusiasts — Your microservice as a Function
Rhein-Main Scala Enthusiasts — Your microservice as a FunctionRhein-Main Scala Enthusiasts — Your microservice as a Function
Rhein-Main Scala Enthusiasts — Your microservice as a FunctionPhil Calçado
 
ScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a FunctionScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a FunctionPhil Calçado
 
Finagle-Based Microservices at SoundCloud
Finagle-Based Microservices at SoundCloudFinagle-Based Microservices at SoundCloud
Finagle-Based Microservices at SoundCloudPhil Calçado
 
An example of Future composition in a real app
An example of Future composition in a real appAn example of Future composition in a real app
An example of Future composition in a real appPhil Calçado
 
APIs: The Problems with Eating your Own Dog Food
APIs: The Problems with Eating your Own Dog FoodAPIs: The Problems with Eating your Own Dog Food
APIs: The Problems with Eating your Own Dog FoodPhil Calçado
 
Evolutionary Architecture at Work
Evolutionary  Architecture at WorkEvolutionary  Architecture at Work
Evolutionary Architecture at WorkPhil Calçado
 
Structuring apps in Scala
Structuring apps in ScalaStructuring apps in Scala
Structuring apps in ScalaPhil Calçado
 

Más de Phil Calçado (20)

the afterparty: refactoring after 100x hypergrowth
the afterparty: refactoring after 100x hypergrowththe afterparty: refactoring after 100x hypergrowth
the afterparty: refactoring after 100x hypergrowth
 
don't try this at home: self-improvement as a senior leader
don't try this at home: self-improvement as a senior leaderdon't try this at home: self-improvement as a senior leader
don't try this at home: self-improvement as a senior leader
 
The Economics of Microservices (redux)
The Economics of Microservices (redux)The Economics of Microservices (redux)
The Economics of Microservices (redux)
 
From microservices to serverless - Chicago CTO Summit 2019
From microservices to serverless - Chicago CTO Summit 2019From microservices to serverless - Chicago CTO Summit 2019
From microservices to serverless - Chicago CTO Summit 2019
 
The Not-So-Straightforward Road From Microservices to Serverless
The Not-So-Straightforward Road From Microservices to ServerlessThe Not-So-Straightforward Road From Microservices to Serverless
The Not-So-Straightforward Road From Microservices to Serverless
 
Ten Years of Failing Microservices
Ten Years of Failing MicroservicesTen Years of Failing Microservices
Ten Years of Failing Microservices
 
The Next Generation of Microservices
The Next Generation of MicroservicesThe Next Generation of Microservices
The Next Generation of Microservices
 
The Next Generation of Microservices — YOW 2017 Brisbane
The Next Generation of Microservices — YOW 2017 BrisbaneThe Next Generation of Microservices — YOW 2017 Brisbane
The Next Generation of Microservices — YOW 2017 Brisbane
 
The Economics of Microservices (2017 CraftConf)
The Economics of Microservices  (2017 CraftConf)The Economics of Microservices  (2017 CraftConf)
The Economics of Microservices (2017 CraftConf)
 
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...
 
Finagle @ SoundCloud
Finagle @ SoundCloudFinagle @ SoundCloud
Finagle @ SoundCloud
 
A Brief Talk On High-Performing Organisations
A Brief Talk On High-Performing OrganisationsA Brief Talk On High-Performing Organisations
A Brief Talk On High-Performing Organisations
 
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015
 
Rhein-Main Scala Enthusiasts — Your microservice as a Function
Rhein-Main Scala Enthusiasts — Your microservice as a FunctionRhein-Main Scala Enthusiasts — Your microservice as a Function
Rhein-Main Scala Enthusiasts — Your microservice as a Function
 
ScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a FunctionScalaItaly 2015 - Your Microservice as a Function
ScalaItaly 2015 - Your Microservice as a Function
 
Finagle-Based Microservices at SoundCloud
Finagle-Based Microservices at SoundCloudFinagle-Based Microservices at SoundCloud
Finagle-Based Microservices at SoundCloud
 
An example of Future composition in a real app
An example of Future composition in a real appAn example of Future composition in a real app
An example of Future composition in a real app
 
APIs: The Problems with Eating your Own Dog Food
APIs: The Problems with Eating your Own Dog FoodAPIs: The Problems with Eating your Own Dog Food
APIs: The Problems with Eating your Own Dog Food
 
Evolutionary Architecture at Work
Evolutionary  Architecture at WorkEvolutionary  Architecture at Work
Evolutionary Architecture at Work
 
Structuring apps in Scala
Structuring apps in ScalaStructuring apps in Scala
Structuring apps in Scala
 

DDD Workshop 2009 Domain-Driven Design

  • 1. Domain-Driven Design Workshop 2009 http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 2. Modelando http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 3. Notação Classe Classe atributo A atributo A operação B operação B Classe Classe atributo A atributo A operação B operação B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 4. Modelando • Aplicação Web • Utilizando cartões CRC-like • Da Interface até a base de dados/infra- estrutura • Apenas para fins didáticos - não façam isso em casa http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 5. Como um Atendente, Eu quero registrar a entrada em um estacionamento, Para que possa cobrar pelo tempo utilizado http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 6. Como um Atendente, Eu quero registrar a saída do estacionamento, Para que possa cobrar pelo tempo utilizado http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 7. Apresentação http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 8. Parte I: Decisões http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 9. Problema: http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 10. Problema: Como um Usuário, Eu quero me cadastrar no site sistema, Para que possa utilizá-lo http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 11. Reflexão http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 12. Decisão em Três Níveis Qual? Como? http://fragmental.tw O Quê? http://blog.fragmental.com.br http://www.caelum.com.br
  • 13. Qual material? http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 14. Qual material? nçõ es Fu Proc Ob edim jet ento os s http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 15. Como eles colaboram? http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 16. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 17. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 18. Como Tabelas? http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 19. Como Procedimentos? http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 20. Como Uma Sociedade? http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 21. Reflexão http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 22. O que são estes objetos? http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 23. O que são estes objetos? http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 24. Mais Cartões http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 25. Como um Atendente, Eu quero indicar a vaga mais apropriada para meu cliente, Para que possa otimizar a distribuição de carros http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 26. Como um Atendente, Eu quero ver um relógio marcando o tempo que o cliente está estacionado, Para que eu tome decisões rapidamente http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 27. Apresentação http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 28. Camadas? http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 29.
  • 36.
  • 43.
  • 44.
  • 45. Apresentação Aplicação Negócios Infra-Estrutura
  • 46. Domain-Driven Design
  • 47. Identificando Camadas http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 48. Identificando Camadas • Separe as classes do modelo em suas respectivas Camadas • Refatore, se necessário http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 49. Apresentação http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 50. Parte II: Linguagem http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 51. * B C A { D http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 52. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 53. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 54. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 55. Ruído http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 56. Como um Usuário, Eu quero me cadastrar no site sistema, Para que possa utilizá-lo http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 57. Como um Usuário, Eu quero me cadastrar no site sistema, Para que possa utilizá-lo Ruído http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 58. Ruído Sintático Como um Usuário, Eu quero me cadastrar no site sistema, Para que possa utilizá-lo http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 59. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 60. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 61. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 62. Ruído http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 63. Ruído Semântico http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 64. Reflexão http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 65. Ruído Sintático Ruído Semântico http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 66. Ruído Sintático Ruído Semântico } Domain-Driven Design http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 67. } Ruído Sintático Domain-Specific Languages Ruído Semântico http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 68. Ruído Semântico } Domain-Driven Design http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 69. Técnico Negócios Reserva Herança Vaga Composição Manutenção Objeto Classe Ocupante Thread DAO Carro Funcionário Framework Manutenção Teste Unitário Imposto Conta Segurança Moto Patterns Gerente http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 70. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 71. Negócios Técnico http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 72. Técnico Negócios Linguagem http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 73. Obrigado Até a próxima! http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 74. Identificando Ruído http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 75. Identificando Ruído • Identifique o que no Modelo faz parte do domínio técnico e de negócios • Escreva um esboço do que seria a Linguagem deste domínio http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 76. Como um Atendente, Eu quero registrar a entrada em um estacionamento, Para que possa cobrar pelo tempo utilizado http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 77. Como um Atendente, Eu quero registrar a saída do estacionamento, Para que possa cobrar pelo tempo utilizado http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 78. Como um Atendente, Eu quero indicar a vaga mais apropriada para meu cliente, Para que possa otimizar a distribuição de carros http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 79. Como um Atendente, Eu quero ver um relógio marcando o tempo que o cliente está estacionado, Para que eu tome decisões rapidamente http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 80. Apresentação http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 81. Parte III: Base http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 82. Nomeando Bovinos http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 83. Objetos com identidade Entity Objetos definidos por Value Object seu valor Lugar de onde obtemos Repository objetos Interações entre objetos Service em uma dada ordem http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 84. Value Object Saldo A = 100 Saldo B = 10 + 80 + 5 + 5 Saldo C = 90 - 12 + 6 + 6 http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 85. Value Object Data A = 25/12/1983 Data B = Natal de 1983 Data C = 6 dias para 1984 http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 86. Conta Conta Vencimento: 21/02/2008 Valor: R$4.000,00 == Vencimento: 21/02/2008 Valor: R$4.000,00 ? Credor: Casas da Banha Credor: Casas da Banha http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 87. Entity Cliente Serviço Toca Música Recomenda Música http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 88. Entity Cliente Serviço Los Hermanos! http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 89. Entity Cliente Serviço ✓ Los Hermanos! http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 90. Entity Cliente Serviço ✓ Los Hermanos! http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 91. Entity Cliente Serviço ✓ Los Hermanos! Los Hermanos? http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 92. Entity Cliente Serviço ✓ ? Los Hermanos! Los Hermanos? http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 93. Entity ✓Identidade ✓Ciclo de Vida http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 94. Entity ✓Identidade Chave Primária Object ID Hashcode Definida pela Linguagem do Domínio http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 95. Service Mensagem Módulo A Módulo B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 96. Service Mensagem ? Módulo A Módulo B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 97. Service Mensagem Roteador Módulo A Módulo B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 98. Service ✓Parte da Linguagem ✓Fluxo de ações sobre outros objetos do domínio ✓Sem estado http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 99. Service Atenção! 92,9245% do que você achar que são Services não são! http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 100. Repository (de onde vêm os bebês?) http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 101. Cliente Repositório http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 102. Cliente Código que Acessa Repositório o Banco de Dados http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 103. Repository ✓Parte da Linguagem ✓Não deixa vazar detalhes de implementação ✓Tenha o menor número possível http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 104. Identificando Padrões http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 105. Identificando Padrões • Marque usando tags os padrões no seu domínio http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 106. Apresentação http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 107. Parte IV: Escalando http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 108. Integrando http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 109. Como um Contador, Eu que as transações sejam gerenciadas pelo meu sistema, Para evitar duplicação de dados http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 110. Sistema Contábil Envolvido Credor Transação Devedor http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 111. Apresentação http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 112. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 113. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 114. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 115. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 116. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 117. A http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 118. A B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 119. A B C http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 120. A B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 121. A B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 122. A B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 123. A B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 124. A B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 125. Mapa A B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 126. Desenhando o Mapa http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 127. Desenhando o Mapa • Estabeleça a relação entre os dois domínios em um diagrama http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 128. Apresentação http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 129. Mudanças do Lado de Lá http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 130. Sistema Contábil Envolvido Credor Transação Devedor http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 131. Sistema Contábil Envolvido Credor Transação Devedor http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 132. Sistema Contábil Conta Devedor Transação Credor http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 133. Apresentação http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 134. Anti-Corrupção A B http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 135. Contexts, Map & Anti-Corruption ✓Nomes dos Bounded Contexts são parte da Linguagem ✓Mapa precisa ser executável e verificável ✓Anti-Corruption Layer não faz parte da Linguagem, deve ser abstraída http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 136. O que são “Outros Domínios”? ‣“Pedaços” com linguagem diferente ‣Sistemas legados ‣Bases de dados legadas ‣Serviços remotos ‣Qualquer “pedaço” que você não controle http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 137. Introduza Anti-Corrupção http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 138. Apresentação http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 139. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 140. Conclusão: Melhore sua comunicação. http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 141. Referências http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 142. Créditos de Fotos http://www.flickr.com/photos/ orbitgal bernatcg sykossa januszbc mdumlao98 8471692@N07 beija-flor clarissa londonmummy neilharvey rodrigobertolino niallkennedy aoneill ericeslinger http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 143. http://creativecommons.org/licenses/by-nc-nd/2.5/br/ http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br
  • 144. Como um Usuário, Eu quero consultar minha conta na Internet, Para que possa pagá-la http://fragmental.tw http://blog.fragmental.com.br http://www.caelum.com.br