Post on 06-Jun-2015
Software complexo? Entenda o seu domínio e desenhe um modeloAbordagem sobre o Desenho Dirigido ao Domínio (Domain-Driven Design ou DDD)
Quem sou eu?
•Thiago Holder▫Software Developer▫Estudante de Sistemas da Informação
Objetivo
•Entender a importância de se pensar em um domínio, a linguagem que você usa para falar sobre ele.
“O desafio da complexidade”
O que é DDD?
“ É uma maneira de pensar e um conjunto de prioridades, voltado para a aceleração de projetos de softwares com domínios complicados ” Eric Evans.
O que o DDD apresenta?
Padrões
Boas práticas
Experiência
Qual o foco do DDD?
Domínio
Regras de negócio complexos
Isolamento entre domínios
Reutilização
Baixo acoplamento
Independente de tecnologia
Discussão da
solução
Discussão do
problema
Padrões do DDD
Contexto
Resumo do
problemaPor esta Razão
Resumo do
problema
Conseqüência
s,
Implementaçõ
es e exemplo
Contexto resultante
Partes do DDD
Colocando o modelo de
domínio em ação
Os tijolos de construção
de um design baseado em
modelos
Refatorando para um melhor
entendimento
Design Estratégico
O que é Domínio?
•Esfera de conhecimento, influência ou atividade.
•A área em que o usuário utiliza o software.
Modelo?
NãoNão
Excesso de informação atrapalha
Modelo
Os ingredientes de uma modelagem eficaz
Ligando o modelo e a implementação
Paciente
Consulta
Protótipo rudimentar
**
Cultivando uma linguagem baseada no modelo
Paciente
Frases consistentes com a estrutura do modelo e ser entendido sem ambigüidade e sem tradução
Consulta A
Consulta B
Consulta C
Agenda()
Agenda()
Agenda()
Desenvolvendo um modelo rico em conhecimento
Paciente
Captar vários tipos de conhecimento
Médico
Consulta
Agenda
Secretária
Atendido
Verifica Disponibilida
de
Agendamento
Destilando o modelo
Paciente
Consulta
Agenda MédicaSecretár
iaAtendido Verifica
Agen
da
a co
nsu
lta
MédicoRealiza
Novo modelo que distingue o conceito essencial
Colhendo idéia
Linguagem Ubíqua
“ Quer dizer que estar em todos os lugares, ou seja onipresente”.
Model Driven Design (MDD)
Domínio
Modelo
Design
Desenvolvedores perdidos.Software perdido, dependente de tecnologia.
Guia
Evolui
Refatoração
Distância no o contexto do domínio
Analista de Negócio
Analista de
SistemasArquiteto
Desenvolvedor
Tijolos de construção
Arquitetura em camadas•Camadas dever ter sentido▫“Verifique suas
responsabilidades”
•As camadas tem que ter separação.
Arquitetura proposta no DDD
Blocos que compõe o modelo
Modelo
Entidades
Objeto de Valor
FactoriesServiços
Repositórios
Entidade
Entidade: têm significado no domínio
Entidade: possuem identidades
Objeto de valor
•não tem identidade para o negócio•São imutaveis•Descrevem coisas, tipos...•Ciclo de vida rápido•Exemplo: cores, especialidade, tipo de dados.
Agregados
Entidade
EntidadeObjeto de
valorObjeto de
valor
Exemplo
<<Raiz>>
Motor
<<Raiz>>
CarroRoda Cliente
Posição Posição
Algumas regras
Todas as atualizações passam pela
raiz
Sem referências diretas que não sejam a
raiz
Uma exclusão
deve apagar todos os
objetos da agregação
Regras de negócio são garantidas em todo o conjunto
Fábricas
•Quando a criação de um objeto, ou AGREGADO inteiro, se torna complicada ou revela uma grande parte da estrutura interna, as FÁBRICAS fornecem o encapsulamento
Interação básica com uma fábrica
Cliente Fábrica Produto
novos(parâmetros) criar
produto
O cliente especifica o que quer
A FÁBRICA faz o objeto que satisfaz o cliente e as regras internas
Serviços
•Não tem estado próprio•Fica isolado do modelo•Definido como o que ele pode fazer por
um “cliente”•“Verbo em vez de substantivo”•Fala a linguagem ubíqua
Módulos ou Pacotes
•Os módulos existentes na camada de domínio devem surgir como uma parte significativa do modelo.
Modelos = HistóriasMódulos =
CapítulosMódulos = Capítulos
Módulos = Capítulos
Módulos = Capítulos
Módulos = Capítulos
Módulos = Capítulos
Repositório EntidadeCódigo Cliente
Repositórios
Agregado
Entidade
Entidade
Agregado
Agregado
Entidade
Busca
Entidade
Cria
Remover
Linguagem Ubíqua
Design Dirigido
por Modelos
Serviços Objeto
de Valor
Entidades
Módulos
Expressar o modeloNomes entram em
Agregados
Encapsular
Integridade
RepositóriosAc
essa
rFábricas
Encapsula
Arquitetura em
camadas
Isolar o modelo
ObrigadoE-mail:thiagoholder@gmail.comBlog:http//thiagoholder.wordpress.comMsn: thiagoholderSkype: thiagoholder