SlideShare una empresa de Scribd logo
1 de 39
Software complexo? Entenda o seu domínio e desenhe um modelo Abordagem 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? Boas práticas Padrões Experiência
Qual o foco do DDD? Regras de negócio complexos Isolamento entre domínios Reutilização Domínio Baixo acoplamento Independente de tecnologia
Padrões do DDD Contexto Resumo do problema Por esta Razão Discussão da solução Discussão do problema Conseqüências, Implementações e exemplo Resumo do problema Contexto resultante
Partes do DDD
O que é Domínio? Esfera de conhecimento, influência ou atividade. A área em que o usuário utiliza o software.
Modelo? Não Não
Excesso de informação atrapalha
Modelo
Os ingredientes  de uma modelagem eficaz
Ligando o modelo e a implementação Consulta Paciente * * Protótipo rudimentar
Cultivando uma linguagem baseada no modelo Consulta A Agenda() Paciente Consulta B Agenda() Agenda() Consulta C Frases consistentes com a estrutura do modelo e ser entendido sem ambigüidade e sem tradução
Desenvolvendo um modelo rico em conhecimento Consulta Agendamento Secretária Paciente Atendido Médico Verifica Disponibilidade Agenda Captar vários tipos de conhecimento
Destilando o modelo Agenda Médica Secretária Verifica Paciente Atendido Agenda a consulta Médico Consulta Realiza Novo modelo que distingue o conceito essencial
Colhendo idéia
Linguagem Ubíqua “ Quer dizer que estar em todos os lugares, ou seja onipresente”.
ModelDriven Design (MDD) Modelo Domínio Guia Design Refatoração Evolui Software perdido, dependente de tecnologia. Desenvolvedores perdidos.
Distância no o contexto do domínio Analista de Negócio Analista de  Sistemas Arquiteto 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
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 Entidade Objeto de valor Objeto de valor
Exemplo <<Raiz>> Motor <<Raiz>> Carro Roda Cliente Posição Posição
Algumas regras
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 A FÁBRICA faz o objeto que satisfaz o cliente e as regras internas O cliente especifica o que quer Cliente Fábrica Produto novos(parâmetros) criar produto
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órias Módulos = Capítulos Módulos = Capítulos Módulos = Capítulos Módulos = Capítulos Módulos = Capítulos Módulos = Capítulos
Código Cliente Entidade Repositório Repositórios Busca Agregado Entidade Entidade Cria Entidade Remover Agregado Entidade Agregado
Linguagem Ubíqua Design Dirigido por Modelos Expressar o modelo Nomes entram em Isolar o modelo Arquitetura em camadas Módulos Serviços Entidades Objeto de Valor Integridade Encapsula Encapsular Repositórios Fábricas Acessar Agregados
Obrigado E-mail:thiagoholder@gmail.com Blog:http//thiagoholder.wordpress.com Msn: thiagoholder Skype: thiagoholder

Más contenido relacionado

La actualidad más candente

Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven DesignAndré Borgonovo
 
Design Thinking - Prototipação
Design Thinking  - PrototipaçãoDesign Thinking  - Prototipação
Design Thinking - PrototipaçãoUFPA
 
Atacando as complexidades no coração do software
Atacando as complexidades no coração do softwareAtacando as complexidades no coração do software
Atacando as complexidades no coração do softwareYan Justino
 
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TIDNAD
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwarePeter Jandl Junior
 
CPBR7 - Pensamento Visual e Prototipagem
CPBR7 - Pensamento Visual e PrototipagemCPBR7 - Pensamento Visual e Prototipagem
CPBR7 - Pensamento Visual e PrototipagemNei Grando
 

La actualidad más candente (7)

Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Design Thinking - Prototipação
Design Thinking  - PrototipaçãoDesign Thinking  - Prototipação
Design Thinking - Prototipação
 
Atacando as complexidades no coração do software
Atacando as complexidades no coração do softwareAtacando as complexidades no coração do software
Atacando as complexidades no coração do software
 
Automatic programming
Automatic programmingAutomatic programming
Automatic programming
 
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de Software
 
CPBR7 - Pensamento Visual e Prototipagem
CPBR7 - Pensamento Visual e PrototipagemCPBR7 - Pensamento Visual e Prototipagem
CPBR7 - Pensamento Visual e Prototipagem
 

Destacado

Domain-Driven-Design
 Domain-Driven-Design Domain-Driven-Design
Domain-Driven-DesignWende Mendes
 
Criandeiros - Grupo de estudos: MVC
Criandeiros - Grupo de estudos: MVCCriandeiros - Grupo de estudos: MVC
Criandeiros - Grupo de estudos: MVCBruno Bemfica
 
Design de software com ASP.NET MVC
Design de software com ASP.NET MVCDesign de software com ASP.NET MVC
Design de software com ASP.NET MVCWaldyr Felix
 
Domain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem IntrodutóriaDomain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem Introdutóriaarmeniocardoso
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven DesignÍtalo Bandeira
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHGiovanni Bassi
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvcleopp
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelRyan Padilha
 

Destacado (10)

Domain-Driven-Design
 Domain-Driven-Design Domain-Driven-Design
Domain-Driven-Design
 
Criandeiros - Grupo de estudos: MVC
Criandeiros - Grupo de estudos: MVCCriandeiros - Grupo de estudos: MVC
Criandeiros - Grupo de estudos: MVC
 
Design de software com ASP.NET MVC
Design de software com ASP.NET MVCDesign de software com ASP.NET MVC
Design de software com ASP.NET MVC
 
Domain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem IntrodutóriaDomain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem Introdutória
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven Design
 
Arquitetura de Sofware
Arquitetura de SofwareArquitetura de Sofware
Arquitetura de Sofware
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvc
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
 

Similar a DDD Modelar Domínio Software

ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDOARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDOYan Justino
 
tdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdftdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdfDouglas Siviotti
 
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)Luciano Condé
 
Domain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da CaixaDomain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da CaixaThiago Bertuzzi
 
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Taller Negócio Digitais
 
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...Isaac de Souza
 
A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!Isaac de Souza
 
Separando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestãoSeparando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestãoRafael Chaves
 
Domain-Driven-Design
Domain-Driven-DesignDomain-Driven-Design
Domain-Driven-DesignWende Mendes
 
Php Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsPhp Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsWildtech
 
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaUtilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaCleiton Felipe Moraes
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
DDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquiteturaDDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquiteturaGraziella Bonizi
 

Similar a DDD Modelar Domínio Software (20)

DDD
DDDDDD
DDD
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDOARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
 
tdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdftdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdf
 
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Domain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da CaixaDomain Driven Design : Pensando Fora da Caixa
Domain Driven Design : Pensando Fora da Caixa
 
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
 
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
 
A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!
 
clean code
clean codeclean code
clean code
 
Separando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestãoSeparando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestão
 
Domain-Driven-Design
Domain-Driven-DesignDomain-Driven-Design
Domain-Driven-Design
 
Php Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsPhp Conf08 Enterprise Patterns
Php Conf08 Enterprise Patterns
 
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaUtilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Introdução a Domain-Driven Design
Introdução a Domain-Driven DesignIntrodução a Domain-Driven Design
Introdução a Domain-Driven Design
 
Carlos Eduardo Capparelli
Carlos Eduardo CapparelliCarlos Eduardo Capparelli
Carlos Eduardo Capparelli
 
DDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquiteturaDDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquitetura
 
DDD - Step by Step
DDD - Step by StepDDD - Step by Step
DDD - Step by Step
 

DDD Modelar Domínio Software

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