entendendo domain-driven design

Post on 06-Jun-2015

18.274 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

EntendendoDomain-Driven Design

Rafael Pontehttp://www.rponte.com.brrponte@gmail.com

Quem?

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

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

O que é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.

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.

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.

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

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.

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

......

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

Ubiquitous Language

Layered architecture

Layered architecture

Domain patterns

Entity

Value Object

Repository

Service

Modelando Objetos

Para implementar um Domain Model...

...fuja da arquitetura BOLOVO

BOBusiness Object

LOLayer Object

VOValue Object

Arquitetura Orientada a BOLOVO

ContaAction

ContaForm

ContaVO

ContaBO

DBContaDAO

Arquitetura Orientada a BOLOVO

ContaAction

ContaForm

ContaVO

ContaBO

DBContaDAO

ContaVO ContaBO

Quais as vantagens ao adotar DDD?

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

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

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/

Obrigado!

rponte@gmail.comhttp://www.rponte.com.br/

top related