O documento apresenta os principais conceitos do Domain Driven Design (DDD). O DDD é uma abordagem para desenvolvimento de software que coloca o domínio do problema como foco central. Ele prega que os modelos devem ser baseados em abstrações do domínio e refletir a linguagem e lógica desse domínio.
8. FOCO
DO
DDD
FOCO
NO
DOMÍNIO
DO
PROBLEMA
8
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
9. DDD
–
PREMISSAS
Desenhos
complexos
Para
maioria
dos
projetos
devem
ser
baseados
de
soWware
o
foco
deve
em
um
modelo.
ser
no
domínio
e
na
lógica
do
domínio.
ERIC
EVANS
9
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
10. DOMÍNIO
ÁREA
DE
CONHECIMENTO
DO
SOFTWARE
10
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
15. MODELO
GOOGLE
MAPS
15
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
16. MODELO
–
RESUMINDO
• Modelos
são
abstrações,
isto
é,
o
que
não
for
interessante
para
a
solução
do
problema
não
deve
pertencer
ao
modelo.
• Modelos
deve
reflekr
código
e,
o
código,
deve
reflekr
o
modelo.
• Se
a
quankdade
de
informações
apresentadas
no
modelo
for
suficiente,
o
modelo
está
bom.
• Não
há
padrão
para
um
modelo.
• SIMPLICIDADE.
16
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
17. DDD
–
DOMAIN
DRIVEN
DESIGN
FÁBRICA
OBJETOS
DE
SERVIÇOS
VALOR
MODELO
REPOSITÓRIO
ENTIDADES
17
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
18. LINGUAGEM
UBÍQUA
• Ubíqua
quer
dizer
estar
em
todo
lugar.
• É
reflekda
no
modelo.
• A
linguagem
vem
do
business
expert.
• Falada
por
todo
o
kme.
18
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
19. LINGUAGEM
UBÍQUA
Analista
de
Negócio
Analista
Arquiteto
de
Sistema
Desenvolvedor
19
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
20. CAMADAS
VERIFIQUE
AS
RESPONSABILIDADES
DAS
SUAS
CAMADAS
20
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
21. DDD
–
CAMADAS
A
camada
de
domínio
é
o
coração
de
um
soWware
de
negócio.
21
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
22. POCOS
BOM
E
VELHO
OBJETO
DO
CLR
22
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
23. ENTIDADES
EnZdades
têm
significado
para
o
domínio.
EnZdades
possuem
idenkdade
para
o
domínio.
IDENTIDADE
PARA
O
DOMÍNIO
≠
IDENTIDADE
PARA
O
DB
23
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
24. OBJETOS
DE
VALOR
Objetos
de
valor
não
tem
Idenkdade
para
o
negócio.
São
reconhecidos
pelos
seus
atributos.
Frequentemente
são
imutáveis.
24
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
25. AGREGAÇÃO
Agregação
é
um
conjunto
de
enkdades
e
objetos
de
valores
que
se
relacionam
no
domínio.
Define
fronteiras
para
o
domínio.
Toda
agregação
tem
uma
raiz
para
controlar
o
acesso.
25
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
27. AGREGAÇÃO
NÃO
HÁ
REFERÊNCIAS
TODA
DIRETAS
PARA
ATUALIZAÇÃO
OBJETOS
DEVE
PASSA
PELA
RAIZ
CONTIDOS
NO
INTERIOR
DA
AGRAGAÇÃO
UMA
EXCLUSÃO
OS
OBJETOS
QUE
DEVE
APAGAR
DEVEM
TODOS
OS
ESPECIFICAR
AS
OBJETOS
DA
REGRAS
DE
AGRAGAÇÃO
NEGÓCIO
27
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
28. SERVIÇOS
Serviços
resolvem
problemas
de
negócio.
Não
são
enkdades
nem
objetos
de
valor.
É
comum
ter
somente
um
método
e
nenhum
atributo.
28
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
29. FÁBRICA
Fábricas
criam
objetos
complexos
do
domínio.
Um
carro
não
anda
com
sua
fábrica.
29
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
31. REPOSITÓRIOS
Repositórios
fantasiam
dados
em
memória.
Para
o
consumidor
não
há
diferença
onde
está
o
objeto.
São
responsáveis
por
persiskr
e
destruir
os
objetos.
31
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
32. CICLO
DE
VIDA
DOS
OBJETOS
FÁBRICAS
REPOSITÓRIOS
REPOSITÓRIOS
REPOSITÓRIOS
CRIAM
RECUPERAM
ALTERAM
DESTROEM
32
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
33. PROJETO
–
CASCATA
ANÁLISE
PROJETO
IMPLEMENTAÇÃO
VERIFICAÇÃO
MANUTENÇÃO
33
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
34. PROJETO
–
ÁGIL
Projeto
que
uklizam
DDD
são
capazes
de
aceitas
as
mudanças.
Feedback
constante.
34
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES
35. REFERÊNCIAS
[1]
–
Eric
Evans,
Domain
Driven
Design
–
Atacando
as
Complexidades
no
Coração
do
SoWware.
[2]
–
Leandro
Daniel,
htp://www.leandrodaniel.com/reverb/category/DDD.aspx
35
CIÊNCIA
DA
COMPUTAÇÃO
-‐
UFES