domain driven design
TRANSCRIPT
Rodolfo Signorelli Spalenza @rodolfospalenza
DOMAIN DRIVEN DESIGN UFES
CIÊNCIA DA COMPUTAÇÃO – 2011/2
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 1
DDD – DOMAIN DRIVEN DESIGN
DDD – DOMAIN DRIVEN DESIGN
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 2
Camadas
Orientação ao Objetos
ORM
Linguagens Dinâmicas Agilidade
Injeção de Dependência
POJO
REST DDD
DDD – DOMAIN DRIVEN DESIGN
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 5
“DDD é uma abordagem para desenvolvimento
de soWware.”
DDD – PREMISSAS
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 9
ERIC EVANS
Para maioria dos projetos de soWware o foco deve ser no domínio e na lógica do domínio.
Desenhos complexos devem ser baseados em um modelo.
MODELO
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 13
MAPA MUNDI – MODELO POLÍTICO
MODELO SÃO BASEADOS EM ABSTRAÇÕES
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.
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 16
DDD – DOMAIN DRIVEN DESIGN
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 17
MODELO
FÁBRICA
OBJETOS DE VALOR
ENTIDADES REPOSITÓRIO
SERVIÇOS
LINGUAGEM UBÍQUA
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 18
• Ubíqua quer dizer estar em todo lugar.
• É reflekda no modelo. • A linguagem vem do business expert.
• Falada por todo o kme.
LINGUAGEM UBÍQUA
Analista de Negócio
Analista de
Sistema
Desenvolvedor
Arquiteto
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 19
DDD – CAMADAS
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 21
A camada de domínio é o coração de um soWware
de negócio.
ENTIDADES
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 23
EnZdades têm significado para o domínio.
EnZdades possuem idenkdade para o domínio.
IDENTIDADE PARA O DOMÍNIO ≠
IDENTIDADE PARA O DB
OBJETOS DE VALOR
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 24
Objetos de valor não tem Idenkdade para o negócio.
São reconhecidos pelos seus atributos. Frequentemente são imutáveis.
AGREGAÇÃO
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 25
Agregação é um conjunto de enkdades e objetos de valores que se relacionam no domínio.
Toda agregação tem uma raiz para controlar o acesso.
Define fronteiras para o domínio.
AGREGAÇÃO
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 27
TODA ATUALIZAÇÃO
DEVE PASSA PELA RAIZ
NÃO HÁ REFERÊNCIAS DIRETAS PARA
OBJETOS CONTIDOS NO INTERIOR DA AGRAGAÇÃO
UMA EXCLUSÃO DEVE APAGAR TODOS OS OBJETOS DA AGRAGAÇÃO
OS OBJETOS QUE DEVEM
ESPECIFICAR AS REGRAS DE NEGÓCIO
SERVIÇOS
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 28
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.
FÁBRICA
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 29
Fábricas criam objetos complexos do domínio.
Um carro não anda com sua fábrica.
REPOSITÓRIOS
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 31
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.
CICLO DE VIDA DOS OBJETOS
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 32
FÁBRICAS CRIAM
REPOSITÓRIOS RECUPERAM
REPOSITÓRIOS ALTERAM
REPOSITÓRIOS DESTROEM
PROJETO – CASCATA
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 33
ANÁLISE
PROJETO
IMPLEMENTAÇÃO
VERIFICAÇÃO
MANUTENÇÃO
PROJETO – ÁGIL
CIÊNCIA DA COMPUTAÇÃO -‐ UFES 34
Projeto que uklizam DDD são capazes de aceitas as mudanças.
Feedback constante.