Slide 1

Slide 1 text

Entendendo Domain-Driven Design Rafael Ponte http://www.rponte.com.br [email protected]

Slide 2

Slide 2 text

Quem? ● Desenvolvedor ● Atualmente trabalha na IVIA ● Sócio fundador da Triadworks ● Entusiasta Java, JSF e DDD ● Coordenador do grupo JSF

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

O que é Domain-Driven Design?

Slide 5

Slide 5 text

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.

Slide 6

Slide 6 text

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.

Slide 7

Slide 7 text

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.

Slide 8

Slide 8 text

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..

Slide 9

Slide 9 text

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.

Slide 10

Slide 10 text

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 ... ... ... ... ... ...

Slide 11

Slide 11 text

Ubiquitous Language

Slide 12

Slide 12 text

Layered architecture

Slide 13

Slide 13 text

Layered architecture

Slide 14

Slide 14 text

Domain patterns

Slide 15

Slide 15 text

Entity

Slide 16

Slide 16 text

Value Object

Slide 17

Slide 17 text

Repository

Slide 18

Slide 18 text

Service

Slide 19

Slide 19 text

Modelando Objetos

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

BO Business Object LO Layer Object VO Value Object

Slide 22

Slide 22 text

Arquitetura Orientada a BOLOVO ContaAction ContaForm ContaVO ContaBO DB ContaDAO

Slide 23

Slide 23 text

Arquitetura Orientada a BOLOVO ContaAction ContaForm ContaVO ContaBO DB ContaDAO

Slide 24

Slide 24 text

ContaVO ContaBO

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

Quais as vantagens ao adotar DDD?

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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/

Slide 31

Slide 31 text

Obrigado! [email protected] http://www.rponte.com.br/