entendendo domain-driven design

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

Upload: rafael-ponte

Post on 06-Jun-2015

18.277 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Entendendo Domain-Driven Design

EntendendoDomain-Driven Design

Rafael Pontehttp://[email protected]

Page 2: Entendendo Domain-Driven Design

Quem?

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

Page 3: Entendendo Domain-Driven Design

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

Page 4: Entendendo Domain-Driven Design

O que éDomain-Driven Design?

Page 5: Entendendo Domain-Driven Design

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.

Page 6: Entendendo Domain-Driven Design

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.

Page 7: Entendendo Domain-Driven Design

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.

Page 8: Entendendo Domain-Driven Design

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

Page 9: Entendendo Domain-Driven Design

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.

Page 10: Entendendo Domain-Driven Design

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 LanguageLanguage

Layered Layered architecturearchitecture

Domain Domain patternspatterns

Domain-Specific Domain-Specific Language (DSL)Language (DSL)

Supple Supple DesignDesign

Strategic Strategic DesignDesign

OOOO

......

...... ......

Page 11: Entendendo Domain-Driven Design

Ubiquitous Language

Page 12: Entendendo Domain-Driven Design

Layered architecture

Page 13: Entendendo Domain-Driven Design

Layered architecture

Page 14: Entendendo Domain-Driven Design

Domain patterns

Page 15: Entendendo Domain-Driven Design

Entity

Page 16: Entendendo Domain-Driven Design

Value Object

Page 17: Entendendo Domain-Driven Design

Repository

Page 18: Entendendo Domain-Driven Design

Service

Page 19: Entendendo Domain-Driven Design

Modelando Objetos

Page 20: Entendendo Domain-Driven Design

Para implementar um Domain Model...

...fuja da arquitetura BOLOVO

Page 21: Entendendo Domain-Driven Design

BOBusiness Object

LOLayer Object

VOValue Object

Page 22: Entendendo Domain-Driven Design

Arquitetura Orientada a BOLOVO

ContaAction

ContaForm

ContaVO

ContaBO

DBContaDAO

Page 23: Entendendo Domain-Driven Design

Arquitetura Orientada a BOLOVO

ContaAction

ContaForm

ContaVO

ContaBO

DBContaDAO

Page 24: Entendendo Domain-Driven Design

ContaVO ContaBO

Page 25: Entendendo Domain-Driven Design
Page 26: Entendendo Domain-Driven Design
Page 27: Entendendo Domain-Driven Design

Quais as vantagens ao adotar DDD?

Page 28: Entendendo Domain-Driven Design

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

Page 29: Entendendo Domain-Driven Design

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

Page 30: Entendendo Domain-Driven Design

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/