Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.

Rafael Ponte

May 17, 2008
Tweet

More Decks by Rafael Ponte

Other Decks in Technology

Transcript

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

    fundador da Triadworks • Entusiasta Java, JSF e DDD • Coordenador do grupo JSF
  2. 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
  3. 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.
  4. 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.
  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. 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..
  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. 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 ... ... ... ... ... ...
  9. 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
  10. 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
  11. 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/