Software complexo? Entenda o seu domínio e desenhe um modelo<br />Abordagem sobre o Desenho Dirigido ao Domínio (Domain-Dr...
Quem sou eu?<br />Thiago Holder<br />Software Developer<br />Estudante de Sistemas da Informação<br />
Objetivo<br />Entender a importância de se pensar em um domínio, a linguagem que você usa para falar sobre ele.<br />
“O desafio da complexidade”<br />
O que é DDD?<br />“ É uma maneira de pensar e um conjunto de prioridades, voltado para a aceleração de projetos de softwar...
O que o DDD apresenta?<br />Boas práticas<br />Padrões<br />Experiência<br />
Qual o foco do DDD?<br />Regras de negócio complexos<br />Isolamento entre domínios<br />Reutilização<br />Domínio<br />Ba...
Padrões do DDD<br />Contexto<br />Resumo do problema<br />Por esta Razão<br />Discussão da solução<br />Discussão do probl...
Partes do DDD<br />
O que é Domínio?<br />Esfera de conhecimento, influência ou atividade.<br />A área em que o usuário utiliza o software.<br />
Modelo?<br />Não<br />Não<br />
Excesso de informação atrapalha<br />
Modelo<br />
Os ingredientes  de uma modelagem eficaz<br />
Ligando o modelo e a implementação<br />Consulta<br />Paciente<br />*<br />*<br />Protótipo rudimentar<br />
Cultivando uma linguagem baseada no modelo<br />Consulta A<br />Agenda()<br />Paciente<br />Consulta B<br />Agenda()<br />...
Desenvolvendo um modelo rico em conhecimento<br />Consulta<br />Agendamento<br />Secretária<br />Paciente<br />Atendido<br...
Destilando o modelo<br />Agenda Médica<br />Secretária<br />Verifica<br />Paciente<br />Atendido<br />Agenda a consulta<br...
Colhendo idéia<br />
Linguagem Ubíqua<br />“ Quer dizer que estar em todos os lugares, ou seja onipresente”.<br />
ModelDriven Design (MDD)<br />Modelo<br />Domínio<br />Guia<br />Design<br />Refatoração<br />Evolui<br />Software perdido...
Distância no o contexto do domínio<br />Analista de Negócio<br />Analista de <br />Sistemas<br />Arquiteto<br />Desenvolve...
Tijolos de construção<br />
Arquitetura em camadas<br />Camadas dever ter sentido<br />“Verifique suas responsabilidades”<br />As camadas tem que ter ...
Arquitetura proposta no DDD<br />
Blocos que compõe o modelo<br />
Entidade<br />Entidade: têm significado no domínio<br />Entidade: possuem identidades<br />
Objeto de valor<br />não tem identidade para o negócio<br />São imutaveis<br />Descrevem coisas, tipos...<br />Ciclo de vi...
Agregados<br />Entidade<br />Entidade<br />Objeto de valor<br />Objeto de valor<br />
Exemplo<br /><<Raiz>><br />Motor<br /><<Raiz>><br />Carro<br />Roda<br />Cliente<br />Posição<br />Posição<br />
Algumas regras<br />
Fábricas<br />Quando a criação de um objeto, ou AGREGADO inteiro, se torna complicada ou revela uma grande parte da estrut...
Interação básica com uma fábrica<br />A FÁBRICA faz o objeto que satisfaz o cliente e as regras internas<br />O cliente es...
Serviços<br />Não tem estado próprio<br />Fica isolado do modelo<br />Definido como o que ele pode fazer por um “cliente”<...
Módulos ou Pacotes<br />Os módulos existentes na camada de domínio devem surgir como uma parte significativa do modelo.<br...
Código Cliente<br />Entidade<br />Repositório<br />Repositórios<br />Busca<br />Agregado<br />Entidade<br />Entidade<br />...
Linguagem Ubíqua<br />Design Dirigido por Modelos<br />Expressar o modelo<br />Nomes entram em<br />Isolar o modelo<br />A...
Obrigado<br />E-mail:thiagoholder@gmail.com<br />Blog:http//thiagoholder.wordpress.com<br />Msn: thiagoholder<br />Skype: ...
Próximos SlideShares
Carregando em…5
×

Uma introdução ao Domain Driven Design

2.387 visualizações

Publicada em

0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.387
No SlideShare
0
A partir de incorporações
0
Número de incorporações
12
Ações
Compartilhamentos
0
Downloads
60
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Uma introdução ao Domain Driven Design

  1. 1. Software complexo? Entenda o seu domínio e desenhe um modelo<br />Abordagem sobre o Desenho Dirigido ao Domínio (Domain-Driven Design ou DDD)<br />
  2. 2. Quem sou eu?<br />Thiago Holder<br />Software Developer<br />Estudante de Sistemas da Informação<br />
  3. 3. Objetivo<br />Entender a importância de se pensar em um domínio, a linguagem que você usa para falar sobre ele.<br />
  4. 4. “O desafio da complexidade”<br />
  5. 5. O que é DDD?<br />“ É uma maneira de pensar e um conjunto de prioridades, voltado para a aceleração de projetos de softwares com domínios complicados ” Eric Evans.<br />
  6. 6. O que o DDD apresenta?<br />Boas práticas<br />Padrões<br />Experiência<br />
  7. 7. Qual o foco do DDD?<br />Regras de negócio complexos<br />Isolamento entre domínios<br />Reutilização<br />Domínio<br />Baixo acoplamento<br />Independente de tecnologia<br />
  8. 8. Padrões do DDD<br />Contexto<br />Resumo do problema<br />Por esta Razão<br />Discussão da solução<br />Discussão do problema<br />Conseqüências, Implementações e exemplo<br />Resumo do problema<br />Contexto resultante<br />
  9. 9. Partes do DDD<br />
  10. 10. O que é Domínio?<br />Esfera de conhecimento, influência ou atividade.<br />A área em que o usuário utiliza o software.<br />
  11. 11. Modelo?<br />Não<br />Não<br />
  12. 12. Excesso de informação atrapalha<br />
  13. 13. Modelo<br />
  14. 14. Os ingredientes de uma modelagem eficaz<br />
  15. 15. Ligando o modelo e a implementação<br />Consulta<br />Paciente<br />*<br />*<br />Protótipo rudimentar<br />
  16. 16. Cultivando uma linguagem baseada no modelo<br />Consulta A<br />Agenda()<br />Paciente<br />Consulta B<br />Agenda()<br />Agenda()<br />Consulta C<br />Frases consistentes com a estrutura do modelo e ser entendido sem ambigüidade e sem tradução<br />
  17. 17. Desenvolvendo um modelo rico em conhecimento<br />Consulta<br />Agendamento<br />Secretária<br />Paciente<br />Atendido<br />Médico<br />Verifica<br />Disponibilidade<br />Agenda<br />Captar vários tipos de conhecimento<br />
  18. 18. Destilando o modelo<br />Agenda Médica<br />Secretária<br />Verifica<br />Paciente<br />Atendido<br />Agenda a consulta<br />Médico<br />Consulta<br />Realiza<br />Novo modelo que distingue o conceito essencial<br />
  19. 19. Colhendo idéia<br />
  20. 20. Linguagem Ubíqua<br />“ Quer dizer que estar em todos os lugares, ou seja onipresente”.<br />
  21. 21. ModelDriven Design (MDD)<br />Modelo<br />Domínio<br />Guia<br />Design<br />Refatoração<br />Evolui<br />Software perdido, dependente de tecnologia.<br />Desenvolvedores perdidos.<br />
  22. 22. Distância no o contexto do domínio<br />Analista de Negócio<br />Analista de <br />Sistemas<br />Arquiteto<br />Desenvolvedor<br />
  23. 23. Tijolos de construção<br />
  24. 24. Arquitetura em camadas<br />Camadas dever ter sentido<br />“Verifique suas responsabilidades”<br />As camadas tem que ter separação.<br />
  25. 25. Arquitetura proposta no DDD<br />
  26. 26. Blocos que compõe o modelo<br />
  27. 27. Entidade<br />Entidade: têm significado no domínio<br />Entidade: possuem identidades<br />
  28. 28. Objeto de valor<br />não tem identidade para o negócio<br />São imutaveis<br />Descrevem coisas, tipos...<br />Ciclo de vida rápido<br />Exemplo: cores, especialidade, tipo de dados.<br />
  29. 29.
  30. 30. Agregados<br />Entidade<br />Entidade<br />Objeto de valor<br />Objeto de valor<br />
  31. 31. Exemplo<br /><<Raiz>><br />Motor<br /><<Raiz>><br />Carro<br />Roda<br />Cliente<br />Posição<br />Posição<br />
  32. 32. Algumas regras<br />
  33. 33. Fábricas<br />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<br />
  34. 34. Interação básica com uma fábrica<br />A FÁBRICA faz o objeto que satisfaz o cliente e as regras internas<br />O cliente especifica o que quer<br />Cliente<br />Fábrica<br />Produto<br />novos(parâmetros)<br />criar<br />produto<br />
  35. 35. Serviços<br />Não tem estado próprio<br />Fica isolado do modelo<br />Definido como o que ele pode fazer por um “cliente”<br />“Verbo em vez de substantivo”<br />Fala a linguagem ubíqua<br />
  36. 36. Módulos ou Pacotes<br />Os módulos existentes na camada de domínio devem surgir como uma parte significativa do modelo.<br />Modelos = Histórias<br />Módulos = Capítulos<br />Módulos = Capítulos<br />Módulos = Capítulos<br />Módulos = Capítulos<br />Módulos = Capítulos<br />Módulos = Capítulos<br />
  37. 37. Código Cliente<br />Entidade<br />Repositório<br />Repositórios<br />Busca<br />Agregado<br />Entidade<br />Entidade<br />Cria<br />Entidade<br />Remover<br />Agregado<br />Entidade<br />Agregado<br />
  38. 38. Linguagem Ubíqua<br />Design Dirigido por Modelos<br />Expressar o modelo<br />Nomes entram em<br />Isolar o modelo<br />Arquitetura em camadas<br />Módulos<br />Serviços<br />Entidades<br />Objeto de Valor<br />Integridade<br />Encapsula<br />Encapsular<br />Repositórios<br />Fábricas<br />Acessar<br />Agregados<br />
  39. 39. Obrigado<br />E-mail:thiagoholder@gmail.com<br />Blog:http//thiagoholder.wordpress.com<br />Msn: thiagoholder<br />Skype: thiagoholder<br />

×