SlideShare uma empresa Scribd logo
1 de 87
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 DDD-Domain-Driven Design Overview

Testes em projetos usando Scrum
Testes em projetos usando ScrumTestes em projetos usando Scrum
Testes em projetos usando ScrumPablo 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 SaldanhaLumis
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven DesignAndré Borgonovo
 
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 VercesiEDIT. - Disruptive Digital Education
 
Apresentacao ADDs Cases Alfresco
Apresentacao ADDs Cases AlfrescoApresentacao ADDs Cases Alfresco
Apresentacao ADDs Cases AlfrescoADDs 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 AlegreIT4biz 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 AlegreCaio 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 SoftwareNorberto 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 NubankLetticia Nicoli
 
Ux for Developers - Build Better Products
Ux for Developers - Build Better ProductsUx for Developers - Build Better Products
Ux for Developers - Build Better ProductsPedro 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 EnterpriseGlobalcode
 
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 2011Caio Moreno
 

Semelhante a DDD-Domain-Driven Design Overview (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
 

DDD-Domain-Driven Design Overview