SlideShare uma empresa Scribd logo
Stone.Tech.Labs
DOMAIN-DRIVEN DESIGN - 365
Felipe Batista
2019
Stone Tech Labs
Ladies and gentlemen, fasten
your seat belts.
Stone Tech Labs
What is
DOMAIN-DRIVEN DESIGN ?
Stone Tech Labs
Software development
in the “PAST”
Stone Tech Labs
Software development
in the PRESENT
Stone Tech Labs
MODELS
Stone Tech Labs
What is Model ?
MODELS
Stone Tech Labs
“Representação, em escala reduzida, de
objeto, obra de arquitetura, etc.
reproduzida em dimensões normais.”
MODELS
Stone Tech Labs
BOARD GAME
MODELS
Stone Tech Labs
MODELS
What is
DOMAIN MODEL ?
Stone Tech Labs
PILLARS
Stone Tech Labs
●Strategic Design
●Tatical Design
●Architecture
O conceito de estratégia, em grego
strateegia, em latim strategi, em francês
stratégie […] em inglês strategy, em alemão
strategie, em italiano strategia, em
espanhol estrategia.
Capitão Nascimento
Stone Tech Labs
What is
Strategic Design ?
Stone Tech Labs
DOMAIN
Stone Tech Labs
SUB-DOMAINS
Stone Tech Labs
CORE OR BASIC
SUB_DOMAINS
Stone Tech Labs
AUXILIARY OR SUPPORT
SUB_DOMAINS
Stone Tech Labs
GENERIC
SUB_DOMAINS
Stone Tech Labs
BOUNDED
CONTEXT
Stone Tech Labs
“A Bounded Context is primarily a
linguistic delimitation.”
Vaughn Vernon
BOUNDED CONTEXT
Stone Tech Labs
BOUNDED CONTEXT
Stone Tech Labs
Bounded Context
<>
Sub-Domain
BOUNDED CONTEXT
Stone Tech Labs
- Deve haver uma equipe designada para trabalhar em um Contexto
Delimitado.
- Deve haver um repositório de código-fonte separado para cada
Contexto Delimitado.
- É possível que uma equipe possa trabalhar em vários Contexto
Delimitado. Mas, Várias equipes não devem trabalhar em um único
Contexto Delimitado.
BOUNDED CONTEXT
Stone Tech Labs
UBIQUITOUS
LANGUAGE
Stone Tech Labs
UBIQUITOUS LANGUAGE
Stone Tech Labs
- Linguagem Ubíqua deve ser expressa no modelo de domínio.
- Une as pessoas da equipe do projeto.
- Elimina imprecisões e contradições.
- Não é uma linguagem usada nas indústrias.
- Não é uma linguagem de negócios imposta por especialistas de
domínio.
- Evolui ao longo do tempo, não é definida inteiramente em uma
única reunião.
- Conceitos que não fazem parte da Linguagem Ubíqua devem ser
rejeitados.
UBIQUITOUS LANGUAGE
Stone Tech Labs
- A falta de uma linguagem comum, gerando “traduções”.
- Membros da equipe usando termos de maneira diferente sem
perceber, por falta de um idioma comum.
- Comunicação sem usar a linguagem ubíqua, mesmo que ela exista.
- Criação de abstração pela equipe técnica.
- Equipe técnica desconsiderando a participação de especialistas de
domínio, mas quem poderá validar o modelo ?.
UBIQUITOUS LANGUAGE
Stone Tech Labs
Developing the
Ubiquitous Language
DRAW
GLOSSARY
EVENT STORMING
TIME FOR REVIEW
Stone Tech Labs
“O código é a expressão permanente da Ubiquitous
Language, esteja preparado para abandonar desenhos,
glossários e outras documentações que serão difíceis de
manter atualizadas.”
Vaughn Vernon
UBIQUITOUS LANGUAGE
EXEMPLO VIAGEM 2016
Stone Tech Labs
CONTEXT MAPS
Stone Tech Labs
CONTEXT MAPS
Stone Tech Labs
Shared Kernel
CONTEXT MAPS
Stone Tech Labs
Customer / Supplier
CONTEXT MAPS
Stone Tech Labs
Conformist
CONTEXT MAPS
Stone Tech Labs
Partner
CONTEXT MAPS
Stone Tech Labs
Anti Corruption Layer
CONTEXT MAPS
BIG BALL OF MUD
Stone Tech Labs
“Big Ball of Mud, é um código bagunçado que é mal
estruturado, desleixado e muitas vezes amarrado com
fita adesiva.”
Brian Foote e Joseph Yoder
BIG BALL OF MUD
DISTILLING A DOMAIN
DISTILLING A DOMAIN
Stone Tech Labs
- O Pedido pode conter vários Produtos
- Um Produto é composto por vários Componentes
- Há um sistema responsável por gerenciar o
Estoque de Componentes
- Quando um Pedido é emitido é feita a reserva dos
Componentes disponíveis
DISTILLING A DOMAIN
Stone Tech Labs
- Quando um Pedido é feita a emissão do Pedido de
Compra em caso de Componentes indisponíveis
- A Ordem de Serviço é emitida quando todos os
Componentes estão disponíveis
- Após a conclusão da Ordem de Serviço é feita a
emissão da Nota Fiscal e cadastramento no
sistema de Transportes.
DISTILLING A DOMAIN
Stone Tech Labs
DISTILLING A DOMAIN
Stone Tech Labs
DISTILLING A DOMAIN
Stone Tech Labs
DISTILLING A DOMAIN
Stone Tech Labs
What is Tatical Design ?
Stone Tech Labs
Entities
TATICAL DESIGN
Stone Tech Labs
Value Objects
TATICAL DESIGN
Stone Tech Labs
Aggregates
TATICAL DESIGN
Stone Tech Labs
Domain Services
TATICAL DESIGN
Stone Tech Labs
Application Services
TATICAL DESIGN
Stone Tech Labs
Repositories
TATICAL DESIGN
Stone Tech Labs
Events
TATICAL DESIGN
Stone Tech Labs
Factories, Modules, etc..
TATICAL DESIGN
SHOW ME THE CODE!
Stone Tech Labs
Preciso alocar um Item de Backlog a um Sprint.
Se já foi alocado para um Sprint diferente, ele
deve primeiro ser desalocado.
Após a conclusão da alocação,
notifique as partes interessadas.
SHOW ME THE CODE!
Stone Tech Labs
SHOW ME THE CODE!
Sprint
Backlog Item
Task
ANEMIC MODEL
Stone Tech Labs
SHOW ME THE CODE!
Stone Tech Labs
SHOW ME THE CODE!
Stone Tech Labs
SHOW ME THE CODE!
RICH MODEL
Stone Tech Labs
SHOW ME THE CODE!
Stone Tech Labs
REFERENCES
Stone Tech Labs
That's All Folks!
thedomaindrivendesign.io
DDD
OBRIGADO
Felipe Batista
felipe.freitas@stone.com.br

Mais conteúdo relacionado

Semelhante a Domain Driven Design

2ºAgileTalk - Criação de uma metodologia baseada em Scrum para escritórios de...
2ºAgileTalk - Criação de uma metodologia baseada em Scrum para escritórios de...2ºAgileTalk - Criação de uma metodologia baseada em Scrum para escritórios de...
2ºAgileTalk - Criação de uma metodologia baseada em Scrum para escritórios de...
Eng. Alysson Ribeiro das Neves, MBA, PMP, PMI-ACP, CSPO, CSM, GreenBelt
 
Scrum na sua Empresa
Scrum na sua EmpresaScrum na sua Empresa
Scrum na sua Empresa
Fabiano Milani
 
Testes em projetos usando Scrum
Testes em projetos usando ScrumTestes em projetos usando Scrum
Testes em projetos usando Scrum
Pablo Quiroga
 
Apresentação Workshop Executivo Lumis | Evolução Digital | Por Ricardo Saldanha
Apresentação Workshop Executivo Lumis | Evolução Digital | Por Ricardo SaldanhaApresentação Workshop Executivo Lumis | Evolução Digital | Por Ricardo Saldanha
Apresentação Workshop Executivo Lumis | Evolução Digital | Por Ricardo Saldanha
Lumis
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
André Borgonovo
 
Proposta de Inovação (1)
Proposta de Inovação (1)Proposta de Inovação (1)
Proposta de Inovação (1)
Daniel Takabayashi, MSc
 
Continuous Delivery e DevOps
Continuous Delivery e DevOpsContinuous Delivery e DevOps
Continuous Delivery e DevOps
Wagner Roberto dos Santos
 
Industry Sessios by EDIT. - Talk #5 - Mike Sousa & Ricardo Vercesi
Industry Sessios by EDIT. - Talk #5 - Mike Sousa & Ricardo VercesiIndustry Sessios by EDIT. - Talk #5 - Mike Sousa & Ricardo Vercesi
Industry Sessios by EDIT. - Talk #5 - Mike Sousa & Ricardo Vercesi
EDIT. - Disruptive Digital Education
 
Apresentacao ADDs Cases Alfresco
Apresentacao ADDs Cases AlfrescoApresentacao ADDs Cases Alfresco
Apresentacao ADDs Cases Alfresco
ADDs Solutions
 
Workshop Bny Mellon
Workshop   Bny MellonWorkshop   Bny Mellon
Workshop Bny Mellon
Tullio Bertoldi Christianini
 
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto AlegreInteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
IT4biz IT Solutions
 
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto AlegreInteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
Caio Moreno
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
Norberto Santos
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
Igor Abade
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no Nubank
Letticia Nicoli
 
Ux for Developers - Build Better Products
Ux for Developers - Build Better ProductsUx for Developers - Build Better Products
Ux for Developers - Build Better Products
Pedro Marques
 
O futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java EnterpriseO futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java Enterprise
Globalcode
 
DDD
DDDDDD
SAFe - Como escalar algo artesanal?
SAFe - Como escalar algo artesanal?SAFe - Como escalar algo artesanal?
SAFe - Como escalar algo artesanal?
Manoel Pimentel Medeiros
 
Pentaho inteligência de negócios utilizando software livre campus party 2011
Pentaho  inteligência de negócios utilizando software livre   campus party 2011Pentaho  inteligência de negócios utilizando software livre   campus party 2011
Pentaho inteligência de negócios utilizando software livre campus party 2011
Campus Party Brasil
 

Semelhante a Domain Driven Design (20)

2ºAgileTalk - Criação de uma metodologia baseada em Scrum para escritórios de...
2ºAgileTalk - Criação de uma metodologia baseada em Scrum para escritórios de...2ºAgileTalk - Criação de uma metodologia baseada em Scrum para escritórios de...
2ºAgileTalk - Criação de uma metodologia baseada em Scrum para escritórios de...
 
Scrum na sua Empresa
Scrum na sua EmpresaScrum na sua Empresa
Scrum na sua Empresa
 
Testes em projetos usando Scrum
Testes em projetos usando ScrumTestes em projetos usando Scrum
Testes em projetos usando Scrum
 
Apresentação Workshop Executivo Lumis | Evolução Digital | Por Ricardo Saldanha
Apresentação Workshop Executivo Lumis | Evolução Digital | Por Ricardo SaldanhaApresentação Workshop Executivo Lumis | Evolução Digital | Por Ricardo Saldanha
Apresentação Workshop Executivo Lumis | Evolução Digital | Por Ricardo Saldanha
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Proposta de Inovação (1)
Proposta de Inovação (1)Proposta de Inovação (1)
Proposta de Inovação (1)
 
Continuous Delivery e DevOps
Continuous Delivery e DevOpsContinuous Delivery e DevOps
Continuous Delivery e DevOps
 
Industry Sessios by EDIT. - Talk #5 - Mike Sousa & Ricardo Vercesi
Industry Sessios by EDIT. - Talk #5 - Mike Sousa & Ricardo VercesiIndustry Sessios by EDIT. - Talk #5 - Mike Sousa & Ricardo Vercesi
Industry Sessios by EDIT. - Talk #5 - Mike Sousa & Ricardo Vercesi
 
Apresentacao ADDs Cases Alfresco
Apresentacao ADDs Cases AlfrescoApresentacao ADDs Cases Alfresco
Apresentacao ADDs Cases Alfresco
 
Workshop Bny Mellon
Workshop   Bny MellonWorkshop   Bny Mellon
Workshop Bny Mellon
 
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto AlegreInteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
 
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto AlegreInteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
Inteligência de Negócios (BI) utilizando Software Livre @ FISL 12 - Porto Alegre
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no Nubank
 
Ux for Developers - Build Better Products
Ux for Developers - Build Better ProductsUx for Developers - Build Better Products
Ux for Developers - Build Better Products
 
O futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java EnterpriseO futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java Enterprise
 
DDD
DDDDDD
DDD
 
SAFe - Como escalar algo artesanal?
SAFe - Como escalar algo artesanal?SAFe - Como escalar algo artesanal?
SAFe - Como escalar algo artesanal?
 
Pentaho inteligência de negócios utilizando software livre campus party 2011
Pentaho  inteligência de negócios utilizando software livre   campus party 2011Pentaho  inteligência de negócios utilizando software livre   campus party 2011
Pentaho inteligência de negócios utilizando software livre campus party 2011
 

Último

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 

Último (8)

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 

Domain Driven Design