Domain-Driven DesignA Utilização das Práticas do DDD Aplicada a um Estudo de Caso.Danillo César de Oliveira MeloFábio Brasil Fernandes de AraújoJairo Barros JuniorOrientador: MSc. Ricardo RubensFACULDADE DE ALAGOAS - FAL
A utilização da linguagem ubíquaConstrução do modelo de domínioPadrões de projetoCiclo de vida de um objeto de domínioEstudo de casoConclusãoApresentação
Falha na comunicaçãoDomínios complexosAlto acoplamentoBaixa coesãoProblemática
Conjunto de práticasIdeal para domínios complexosDesenvolvimento centrado no domínioLinguagem onipresenteDomain-Driven Design
Por onde começar?
Comunicação em torno do domínioManutenção da linguagemModelo do domínio expressado no softwareLinguagem ubíqua
Qual o Próximo passo?
Isolando o domínioArquitetura em camadasFonte: 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 únicaPossui 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çõesNão possui identificação únicaImutávelPossuem somente métodos de acessoObjeto de Valor
Coordenam os trabalhos dos objetos do domínioAplicaçãoDomínioInfra-estruturaServiço
Ciclo de vida de um objetoFonte: 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 vidaCriação de objetos complexos e agregaçõesEncapsula complexidadeFábricas
Agregações
Repositório
Mapa de navegaçãoFonte: Imagemextraída e adaptada do livro, Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans (2004, p. 65).
Requisitos do projetoEstrutura do projetoCamada do domínioEstudo 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çãoA linguagem onipresenteDesenvolvimento centrado no domínioConclusã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.

Domain-Driven Design - Aplicada a um estudo de caso

  • 1.
    Domain-Driven DesignA Utilizaçãodas Práticas do DDD Aplicada a um Estudo de Caso.Danillo César de Oliveira MeloFábio Brasil Fernandes de AraújoJairo Barros JuniorOrientador: MSc. Ricardo RubensFACULDADE DE ALAGOAS - FAL
  • 2.
    A utilização dalinguagem ubíquaConstrução do modelo de domínioPadrões de projetoCiclo de vida de um objeto de domínioEstudo de casoConclusãoApresentação
  • 3.
    Falha na comunicaçãoDomínioscomplexosAlto acoplamentoBaixa coesãoProblemática
  • 4.
    Conjunto de práticasIdealpara domínios complexosDesenvolvimento centrado no domínioLinguagem onipresenteDomain-Driven Design
  • 5.
  • 6.
    Comunicação em tornodo domínioManutenção da linguagemModelo do domínio expressado no softwareLinguagem ubíqua
  • 7.
  • 8.
    Isolando o domínioArquiteturaem camadasFonte: Imagemextraída e adaptada do livro, Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans (2004, p. 68).
  • 9.
    Com a arquiteturaem camadas não existe o alto acoplamento.Anti-padrão
  • 10.
  • 11.
  • 12.
    Criado a partirdas conversas dos desenvolvedores com os especialistas de domínio.Representado diretamente no código.Modelo do Domínio
  • 13.
    Possui identificação únicaPossuicaracterí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çõesNãopossui identificação únicaImutávelPossuem somente métodos de acessoObjeto de Valor
  • 15.
    Coordenam os trabalhosdos objetos do domínioAplicaçãoDomínioInfra-estruturaServiço
  • 16.
    Ciclo de vidade um objetoFonte: Imagemextraída e adaptada do livro, Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans (2004, p. 123).
  • 17.
    Início do ciclode vidaCriação de objetos complexos e agregaçõesEncapsula complexidadeFábricas
  • 18.
  • 19.
  • 20.
    Mapa de navegaçãoFonte:Imagemextraída e adaptada do livro, Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans (2004, p. 65).
  • 21.
    Requisitos do projetoEstruturado projetoCamada do domínioEstudo de caso
  • 22.
    “Osistema 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
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
    A ComunicaçãoA linguagemonipresenteDesenvolvimento centrado no domínioConclusã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
  • 31.