uma introdução ao domain driven design

Post on 06-Jun-2015

2.140 Views

Category:

Documents

18 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related