Entendendo DDD - Domain-Driven Design

Entendendo DDD - Domain-Driven Design

(Palestra ministrada no evento CCT do CEJUG em MAI-2008)

Introdução a Domain-Driven Design (DDD), discutindo seus dois principais conceitos, Ubiquitous Language e Domain Model, além de discutir como podemos aplicar os principais patterns abordados no livro do Eric Evans em sistemas corporativos.

F853760c988228c4a153333407e64f09?s=128

Rafael Ponte

May 17, 2008
Tweet

Transcript

  1. Entendendo Domain-Driven Design Rafael Ponte http://www.rponte.com.br rponte@gmail.com

  2. Quem? • Desenvolvedor • Atualmente trabalha na IVIA • Sócio

    fundador da Triadworks • Entusiasta Java, JSF e DDD • Coordenador do grupo JSF
  3. Software design is art “Software design is an art, and

    like any art it cannot be taught and learned as a precise science, by means of theorems and formulas.” Floyd Marinescu
  4. O que é Domain-Driven Design?

  5. Domain-Driven Design não é uma tecnologia ou metodologia, mas sim

    uma abordagem de design de software disciplinada que reúne um conjunto de conceitos, técnicas e princípios com foco no domínio e na lógica do domínio para criar um domain model.
  6. Domain-Driven Design não é uma tecnologia ou metodologia, mas sim

    uma abordagem de design de software disciplinada que reúne um conjunto de conceitos, técnicas e princípios com foco no domínio e na lógica do domínio para criar um domain model.
  7. Domain-Driven Design não é uma tecnologia ou metodologia, mas sim

    uma abordagem de design de software disciplinada que reúne um conjunto de conceitos, técnicas e princípios com foco no domínio e na lógica do domínio para criar um domain model.
  8. Domain-Driven Design não é uma tecnologia ou metodologia, mas sim

    uma abordagem de design de software disciplinada que reúne um conjunto de conceitos, técnicas e princípios com foco no domínio e na lógica do domínio para criar um domain model. O modelo pode ser O modelo pode ser expresso de várias formas, expresso de várias formas, como uma apresentação como uma apresentação em PowerPoint, diagramas em PowerPoint, diagramas em UML, rascunho de em UML, rascunho de papel, peças de Lego, ou papel, peças de Lego, ou mesmo o código da mesmo o código da aplicação.. aplicação..
  9. Domain-Driven Design não é uma tecnologia ou metodologia, mas sim

    uma abordagem de design de software disciplinada que reúne um conjunto de conceitos, técnicas e princípios com foco no domínio e na lógica do domínio para criar um domain model.
  10. Domain-Driven Design não é uma tecnologia ou metodologia, mas sim

    uma abordagem de design de software disciplinada que reúne um conjunto de conceitos, técnicas e princípios com foco no domínio e na lógica do domínio para criar um domain model. Ubiquitous Ubiquitous Language Language Layered Layered architecture architecture Domain Domain patterns patterns Domain-Specific Domain-Specific Language (DSL) Language (DSL) Supple Supple Design Design Strategic Strategic Design Design OO OO ... ... ... ... ... ...
  11. Ubiquitous Language

  12. Layered architecture

  13. Layered architecture

  14. Domain patterns

  15. Entity

  16. Value Object

  17. Repository

  18. Service

  19. Modelando Objetos

  20. Para implementar um Domain Model... ...fuja da arquitetura BOLOVO

  21. BO Business Object LO Layer Object VO Value Object

  22. Arquitetura Orientada a BOLOVO ContaAction ContaForm ContaVO ContaBO DB ContaDAO

  23. Arquitetura Orientada a BOLOVO ContaAction ContaForm ContaVO ContaBO DB ContaDAO

  24. ContaVO ContaBO

  25. None
  26. None
  27. Quais as vantagens ao adotar DDD?

  28. Podemos destacar... • Quanto mais próximo você está do negócio

    menos sofre com mudanças • O entendimento do desenvolvedor sobre o negócio, evitando assim erros e ajudando no negócio em si, questionando e sugerindo otimizações • Código menos acoplado e mais coeso
  29. Concluindo • Procure utilizar DDD em aplicações com domínios complexos

    • Ubiquitous Language e Domain Model são o cerne da DDD • Não se apegue a rigidez conceitual, e claro, não lute contra os frameworks • Leia, mas leia muito sobre o assunto
  30. Referências • Livro Domain-Driven Design, 2004 (Eric Evans) • Domain-Driven

    Design: http://domaindrivendesign.org/ • GUJ: http://www.guj.com.br/ • Caelum: http://www.caelum.com.br • Shoes' blog: http://blog.fragmental.com.br • Fowler's patterns: http://martinfowler.com/eaaCatalog/ • Domain-Driven Design Quickly: http://www.infoq.com/minibooks/domain-driven-design-quickly • MundoJava Nº 17 e Nº 28: http://www.mundojava.com.br/
  31. Obrigado! rponte@gmail.com http://www.rponte.com.br/