SlideShare uma empresa Scribd logo
1 de 31
Domain-Driven Design A Utilização das Práticas do DDD Aplicada a um Estudo de Caso. Danillo César de Oliveira Melo Fábio Brasil Fernandes de Araújo Jairo Barros Junior Orientador: MSc. Ricardo Rubens FACULDADE DE ALAGOAS - FAL
A utilização da linguagem ubíqua Construção do modelo de domínio Padrões de projeto Ciclo de vida de um objeto de domínio Estudo de caso Conclusão Apresentação
Falha na comunicação Domínios complexos Alto acoplamento Baixa coesão Problemática
Conjunto de práticas Ideal para domínios complexos Desenvolvimento centrado no domínio Linguagem onipresente Domain-Driven Design
Por onde começar?
Comunicação em torno do domínio Manutenção da linguagem Modelo do domínio expressado no software Linguagem ubíqua
Qual o Próximo passo?
Isolando o domínio Arquitetura em camadas Fonte: Imagemextraída e adaptada do livro, Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans (2004, p. 68).
Com a arquitetura em camadas  não existe o alto acoplamento. Anti-padrão
Camada do domínio
Deve ser dividida em módulos
Criado a partir das conversas dos desenvolvedores com os especialistas de domínio. Representado diretamente no código. Modelo do Domínio
Possui identificação única Possui características próprias dentro do modelo. Responsabilidade e associações baseadas na sua identificação e não em seus atributos. Entidade
Somente transporta informações Não possui identificação única Imutável Possuem somente métodos de acesso Objeto de Valor
Coordenam os trabalhos dos objetos do domínio Aplicação Domínio Infra-estrutura Serviço
Ciclo de vida de um objeto Fonte: Imagemextraída e adaptada do livro, Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans (2004, p. 123).
Início do ciclo de vida Criação de objetos complexos e agregações Encapsula complexidade Fábricas
Agregações
Repositório
Mapa de navegação Fonte: Imagemextraída e adaptada do livro, Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans (2004, p. 65).
Requisitos do projeto Estrutura do projeto Camada do domínio Estudo de caso
  “O sistema deve ter reserva e hospedagem, de forma que os clientes possam realizar suas reservas por telefone ou via internet. Uma reserva não é uma hospedagem, pois na hora da hospedagem a reserva feita pode ser alterada, mas caso isso não ocorra ela se torna uma hospedagem. Cada quarto possui um único identificador, existem cinco tipos de quarto, são eles: simples, casal, duplo, triplo e família. O hotel possui um amplo restaurante, que pode ser utilizado por qualquer cliente, mas existe uma área do restaurante só para os hospedes, assim como também existe uma área só para os fumantes, que conseguimos identificar no seu cadastro.” Requisitos do projeto
Estrutura do projeto
Estrutura do projeto
Estrutura do projeto
Camadas do domínio
Camadas do domínio
Camadas do domínio
A Comunicação A linguagem onipresente Desenvolvimento centrado no domínio Conclusão
AVRAM, Abel; MARINESCU, Floyd. Domain-Driven Design Quickly.InfoQ. 2007;    DDD. Domain-Driven Design, disponível em http://domaindrivendesign.org/. Acessoem 3 de Julho de 2008;   EVANS, Eric. Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley. 2004;    FREEMAN, Elisabeth; FREEMAN, Eric; BATES, Bert; SIERRA, Kathy. Head First Design Patterns.O'REILLY. 2004;   METSKER, Steven John. Padrões de Projeto em Java.Bookman. 2004;    MCCARTHY, Tim. .NET Domain-Driven Design with C#: Problem - Design - Solution.Wrox. 2008;   NILSSON, Jimmy. Applying Domain-Driven Design and Patterns: With Examples in C# and .NET.Addison-Wesley. 2006;   SITEFANE, João Pedro Manaças. Desenvolvimento de software centrado no domínio. Lisboa. Dissertação de Mestrado. 2007; Referências
Obrigado.

Mais conteúdo relacionado

Mais procurados

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
 
Bolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aíBolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aíPriscila Mayumi
 
Uma introdução ao Domain Driven Design
Uma introdução ao Domain Driven DesignUma introdução ao Domain Driven Design
Uma introdução ao Domain Driven DesignLambda3
 
Domain Driven Design – DDD além da teoria!, por Paulo Victor Gomes
Domain Driven Design – DDD além da teoria!, por Paulo Victor GomesDomain Driven Design – DDD além da teoria!, por Paulo Victor Gomes
Domain Driven Design – DDD além da teoria!, por Paulo Victor GomesiMasters
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven DesignJonatas Saraiva
 
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
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gofYan Justino
 
Bounded Context e CQRS na evolução de aplicações .NET legadas
Bounded Context e CQRS na evolução de aplicações .NET legadasBounded Context e CQRS na evolução de aplicações .NET legadas
Bounded Context e CQRS na evolução de aplicações .NET legadasYan Justino
 
Feira de Emprego 2015 - Universidade de Coimbra
Feira de Emprego 2015 - Universidade de Coimbra Feira de Emprego 2015 - Universidade de Coimbra
Feira de Emprego 2015 - Universidade de Coimbra Dellent Consulting
 

Mais procurados (10)

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
 
Bolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aíBolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aí
 
Uma introdução ao Domain Driven Design
Uma introdução ao Domain Driven DesignUma introdução ao Domain Driven Design
Uma introdução ao Domain Driven Design
 
Domain Driven Design – DDD além da teoria!, por Paulo Victor Gomes
Domain Driven Design – DDD além da teoria!, por Paulo Victor GomesDomain Driven Design – DDD além da teoria!, por Paulo Victor Gomes
Domain Driven Design – DDD além da teoria!, por Paulo Victor Gomes
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – 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
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gof
 
Bounded Context e CQRS na evolução de aplicações .NET legadas
Bounded Context e CQRS na evolução de aplicações .NET legadasBounded Context e CQRS na evolução de aplicações .NET legadas
Bounded Context e CQRS na evolução de aplicações .NET legadas
 
Feira de Emprego 2015 - Universidade de Coimbra
Feira de Emprego 2015 - Universidade de Coimbra Feira de Emprego 2015 - Universidade de Coimbra
Feira de Emprego 2015 - Universidade de Coimbra
 
Automatic programming
Automatic programmingAutomatic programming
Automatic programming
 

Semelhante a Domain-Driven Design - Aplicada a um estudo de caso

Construindo aplicativos SharePoint 2013 com AngularJS
Construindo aplicativos SharePoint 2013 com AngularJSConstruindo aplicativos SharePoint 2013 com AngularJS
Construindo aplicativos SharePoint 2013 com AngularJSWilliam S. Rodriguez
 
Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...Isaac de Souza
 
Webdesign Revisão 2019-01
Webdesign Revisão 2019-01Webdesign Revisão 2019-01
Webdesign Revisão 2019-01Renato Melo
 
Revisão Webdesign
Revisão WebdesignRevisão Webdesign
Revisão WebdesignRenato Melo
 
Qualificação MACC- Entities
Qualificação MACC- EntitiesQualificação MACC- Entities
Qualificação MACC- EntitiesMarcius Brandão
 
Micro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viuMicro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viuWagner Souza
 
Webdesign revisãao 2018-02
Webdesign revisãao 2018-02Webdesign revisãao 2018-02
Webdesign revisãao 2018-02Renato Melo
 
NITECH - EVENT STORM
NITECH - EVENT STORM NITECH - EVENT STORM
NITECH - EVENT STORM NitechAcademy
 
NITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdfNITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdfNitechAcademy
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012Luís Cobucci
 
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheirasAprensentacao oo-trincheiras
Aprensentacao oo-trincheirasHigor César
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Renato Groffe
 
Desafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidDesafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidNatanael Fonseca
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 

Semelhante a Domain-Driven Design - Aplicada a um estudo de caso (20)

Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Construindo aplicativos SharePoint 2013 com AngularJS
Construindo aplicativos SharePoint 2013 com AngularJSConstruindo aplicativos SharePoint 2013 com AngularJS
Construindo aplicativos SharePoint 2013 com AngularJS
 
Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...
 
Webdesign Revisão 2019-01
Webdesign Revisão 2019-01Webdesign Revisão 2019-01
Webdesign Revisão 2019-01
 
Revisão Webdesign
Revisão WebdesignRevisão Webdesign
Revisão Webdesign
 
Qualificação MACC- Entities
Qualificação MACC- EntitiesQualificação MACC- Entities
Qualificação MACC- Entities
 
Frameworks PHP @edgarsandi
Frameworks PHP @edgarsandiFrameworks PHP @edgarsandi
Frameworks PHP @edgarsandi
 
Micro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viuMicro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viu
 
Webdesign revisãao 2018-02
Webdesign revisãao 2018-02Webdesign revisãao 2018-02
Webdesign revisãao 2018-02
 
NITECH - EVENT STORM
NITECH - EVENT STORM NITECH - EVENT STORM
NITECH - EVENT STORM
 
NITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdfNITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdf
 
Framework usar ou não usar
Framework usar ou não usarFramework usar ou não usar
Framework usar ou não usar
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012
 
Aprensentacao oo-trincheiras
Aprensentacao oo-trincheirasAprensentacao oo-trincheiras
Aprensentacao oo-trincheiras
 
Apresentação web2py
Apresentação web2pyApresentação web2py
Apresentação web2py
 
DDD
DDDDDD
DDD
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
 
Desafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidDesafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma Android
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 

Mais de Jairo Junior

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareJairo Junior
 
Profissionais de TI: Desafios e Oportunidades
Profissionais de TI:  Desafios e OportunidadesProfissionais de TI:  Desafios e Oportunidades
Profissionais de TI: Desafios e OportunidadesJairo Junior
 
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebFrameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebJairo Junior
 
Fatores (Des)Motivadores na Adoção de Metodologias Ágeis no Desenvolvimento d...
Fatores (Des)Motivadores na Adoção de Metodologias Ágeis no Desenvolvimento d...Fatores (Des)Motivadores na Adoção de Metodologias Ágeis no Desenvolvimento d...
Fatores (Des)Motivadores na Adoção de Metodologias Ágeis no Desenvolvimento d...Jairo Junior
 
A educação mediada pelo computador: ferramentas do século XXI
A educação mediada pelo computador: ferramentas do século XXIA educação mediada pelo computador: ferramentas do século XXI
A educação mediada pelo computador: ferramentas do século XXIJairo Junior
 
Certificação Digital (Conceitos e Tendências)
Certificação Digital (Conceitos e Tendências)Certificação Digital (Conceitos e Tendências)
Certificação Digital (Conceitos e Tendências)Jairo Junior
 

Mais de Jairo Junior (6)

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Profissionais de TI: Desafios e Oportunidades
Profissionais de TI:  Desafios e OportunidadesProfissionais de TI:  Desafios e Oportunidades
Profissionais de TI: Desafios e Oportunidades
 
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebFrameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
 
Fatores (Des)Motivadores na Adoção de Metodologias Ágeis no Desenvolvimento d...
Fatores (Des)Motivadores na Adoção de Metodologias Ágeis no Desenvolvimento d...Fatores (Des)Motivadores na Adoção de Metodologias Ágeis no Desenvolvimento d...
Fatores (Des)Motivadores na Adoção de Metodologias Ágeis no Desenvolvimento d...
 
A educação mediada pelo computador: ferramentas do século XXI
A educação mediada pelo computador: ferramentas do século XXIA educação mediada pelo computador: ferramentas do século XXI
A educação mediada pelo computador: ferramentas do século XXI
 
Certificação Digital (Conceitos e Tendências)
Certificação Digital (Conceitos e Tendências)Certificação Digital (Conceitos e Tendências)
Certificação Digital (Conceitos e Tendências)
 

Domain-Driven Design - Aplicada a um estudo de caso

  • 1. Domain-Driven Design A Utilização das Práticas do DDD Aplicada a um Estudo de Caso. Danillo César de Oliveira Melo Fábio Brasil Fernandes de Araújo Jairo Barros Junior Orientador: MSc. Ricardo Rubens FACULDADE DE ALAGOAS - FAL
  • 2. A utilização da linguagem ubíqua Construção do modelo de domínio Padrões de projeto Ciclo de vida de um objeto de domínio Estudo de caso Conclusão Apresentação
  • 3. Falha na comunicação Domínios complexos Alto acoplamento Baixa coesão Problemática
  • 4. Conjunto de práticas Ideal para domínios complexos Desenvolvimento centrado no domínio Linguagem onipresente Domain-Driven Design
  • 6. Comunicação em torno do domínio Manutenção da linguagem Modelo do domínio expressado no software Linguagem ubíqua
  • 8. Isolando o domínio Arquitetura em camadas Fonte: Imagemextraída e adaptada do livro, Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans (2004, p. 68).
  • 9. Com a arquitetura em camadas não existe o alto acoplamento. Anti-padrão
  • 11. Deve ser dividida em módulos
  • 12. Criado a partir das conversas dos desenvolvedores com os especialistas de domínio. Representado diretamente no código. Modelo do Domínio
  • 13. Possui identificação única Possui características próprias dentro do modelo. Responsabilidade e associações baseadas na sua identificação e não em seus atributos. Entidade
  • 14. Somente transporta informações Não possui identificação única Imutável Possuem somente métodos de acesso Objeto de Valor
  • 15. Coordenam os trabalhos dos objetos do domínio Aplicação Domínio Infra-estrutura Serviço
  • 16. Ciclo de vida de um objeto Fonte: Imagemextraída e adaptada do livro, Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans (2004, p. 123).
  • 17. Início do ciclo de vida Criação de objetos complexos e agregações Encapsula complexidade Fábricas
  • 20. Mapa de navegação Fonte: Imagemextraída e adaptada do livro, Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans (2004, p. 65).
  • 21. Requisitos do projeto Estrutura do projeto Camada do domínio Estudo de caso
  • 22. “O sistema deve ter reserva e hospedagem, de forma que os clientes possam realizar suas reservas por telefone ou via internet. Uma reserva não é uma hospedagem, pois na hora da hospedagem a reserva feita pode ser alterada, mas caso isso não ocorra ela se torna uma hospedagem. Cada quarto possui um único identificador, existem cinco tipos de quarto, são eles: simples, casal, duplo, triplo e família. O hotel possui um amplo restaurante, que pode ser utilizado por qualquer cliente, mas existe uma área do restaurante só para os hospedes, assim como também existe uma área só para os fumantes, que conseguimos identificar no seu cadastro.” Requisitos do projeto
  • 29. A Comunicação A linguagem onipresente Desenvolvimento centrado no domínio Conclusão
  • 30. AVRAM, Abel; MARINESCU, Floyd. Domain-Driven Design Quickly.InfoQ. 2007;    DDD. Domain-Driven Design, disponível em http://domaindrivendesign.org/. Acessoem 3 de Julho de 2008;   EVANS, Eric. Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley. 2004;    FREEMAN, Elisabeth; FREEMAN, Eric; BATES, Bert; SIERRA, Kathy. Head First Design Patterns.O'REILLY. 2004;   METSKER, Steven John. Padrões de Projeto em Java.Bookman. 2004;    MCCARTHY, Tim. .NET Domain-Driven Design with C#: Problem - Design - Solution.Wrox. 2008;   NILSSON, Jimmy. Applying Domain-Driven Design and Patterns: With Examples in C# and .NET.Addison-Wesley. 2006;   SITEFANE, João Pedro Manaças. Desenvolvimento de software centrado no domínio. Lisboa. Dissertação de Mestrado. 2007; Referências