domain driven design

35
Rodolfo Signorelli Spalenza @rodolfospalenza [email protected] DOMAIN DRIVEN DESIGN UFES CIÊNCIA DA COMPUTAÇÃO – 2011/2 CIÊNCIA DA COMPUTAÇÃO UFES 1 DDD – DOMAIN DRIVEN DESIGN

Upload: rodolfo-spalenza

Post on 18-Jul-2015

209 views

Category:

Education


3 download

TRANSCRIPT

Rodolfo  Signorelli  Spalenza  @rodolfospalenza  

[email protected]  

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  3  

FUTURO  

DDD  –  DOMAIN  DRIVEN  DESIGN  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  4  

DISCAGEM  DIRETA  A  DISTÂNCIA  

DDD  –  DOMAIN  DRIVEN  DESIGN  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  5  

“DDD  é  uma  abordagem    para  desenvolvimento    

de  soWware.”  

DDD  –  DOMAIN  DRIVEN  DESIGN  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  6  

 BLA,  BLA,  BLA...    

ERIC  EVANS  

FOCO  DO  DDD  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  7  

FOCO  DO  DDD  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  8  

FOCO  NO  DOMÍNIO  DO  PROBLEMA  

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.  

DOMÍNIO  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  10  

ÁREA  DE  CONHECIMENTO  DO  SOFTWARE  

MODELO  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  11  

?  

MODELO  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  12  

CHINA  MUNDO  

NÃO  PRECISA  SER    IMPECAVELMENTE  REALISTA  

MODELO  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  13  

MAPA  MUNDI  –  MODELO  POLÍTICO  

MODELO  SÃO  BASEADOS    EM  ABSTRAÇÕES  

MODELO  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  14  

MODELO  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  15  

GOOGLE  MAPS  

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  

CAMADAS  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  20  

VERIFIQUE  AS  RESPONSABILIDADES    DAS  SUAS  CAMADAS  

DDD  –  CAMADAS  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  21  

A  camada  de  domínio  é  o  coração  de  um  soWware  

de  negócio.  

POCOS  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  22  

BOM  E  VELHO  OBJETO  DO  CLR  

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  26  

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.  

FÁBRICA  

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  30  

BOA  PRÁTRICA  

?  

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.  

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  

 

CIÊNCIA  DA  COMPUTAÇÃO  -­‐  UFES  35