BT

QCon London 2009: Um Exemplo completo de DDD

| por Ricardo Almeida Seguir 0 Seguidores em 25 mar 2009. Tempo estimado de leitura: 1 minuto |

Peter Backlund e Patrik Fredriksson estiveram no evento QCon London 2009, e falaram sobre DDD mostrando um exemplo completo com uma tecnologia atual.

Eles começaram com uma frase bem famosa do Eric Evans

    "A complexidade crítica de muitos projetos de software está no entendimento do próprio domínio"

O maior desafio está na transferência de conhecimento entre as pessoas.

Domain-Driven Design


É a maneira de aproximar os problemas da complexidade de software através da cooperação próxima entre desenvolvedores e experts no domínio (domain). A complexidade está no domínio. Usamos modelos para manipular o domínio.

Model

Um sistema de abstrações que descrevem aspectos selecionados de um  domínio e pode ser usado para resolver problemas relatados a esse domínio.

Ubiquitous Language

É uma linguagem estruturada dentro do domain model e usado por todos membros do time para melhorar a comunicação.

A modelagem acontece com um design iterativo

Mas para que serve o DDD para mim? Para um product owner pode significar entregas sem surpresas, alta produtividade, alta qualidade. Para um desenvolvedor pode significar um melhor entendimento para fazer melhores decisões, melhor manipulação das mudanças e foco no que é importante. Para Experts no domínio pode significar uma comunicação mais fácil sem termos técnicos.

Construindo blocos de um Model-Driven Design

    * Entities: Distingue pela sua identidade, ao invés de seus atributos. É mutável. Tem um ciclo de vida interessante.
    * Value Objects: Definidos somente por seus atributos, não pela identidade. É imutável. Não tem um ciclo de vida interessante.
    * Services: "As vezes, não é uma coisa"... e sim serviços.
    * Aggregates: Grupo de entidades e value objects com camadas definidas.
    * Repositories: Abstração de armazenamento de dados. Suporta buscas e armazenamentos de objetos. Para objetos que precisam de um acesso global, tipicamente um Aggregate Root.

Exemplo: DDDSample

Essa aplicação de exemplo tem vários usos:

    * Um exemplo "how to" para implementação de uma típica aplicação DDD
    * Suporte para discussão e práticas de implementação
    * Laboratório para experimentos controlados.

Tecnologia

    * Frameworks e componentes baseados em Open Source
    * Bom suporte para DDD e OO.
    * Java 6
    * Spring Core/ORM/JEE/Web
    * Hibernate
    * ActiveMQ JMS
    * Apache CXF Web Services
    * Jakarta Commons
    * Maven
 

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

DTO in DDD?! by Ari Garcia

A menos que tenha me referenciado errado, e se tiver vou aprender mais agora, falava-se que em DDD objetos "burros", assim definido por Fowler, não deveriam existir, diferente do que vi no exemplo.Poderia me explicar melhor a essência disto?!

Quanto a arquitetura, acredito que realmente ficou muito bem definida!

Vamos as discussões!! Obrigado!

Re: DTO in DDD?! by anderson freitas

No exemplo, os DTO's foram criados para fazer a conversão entre as entidades do domínio e a camada de persistencia.
Neste caso, seu único uso é o proposto pelo próprio Pattern DTO (Data Transfer Objects), ou seja, seu ciclo de vida é apenas durante o transporte de valores para (no caso) o 'armazenamento'.
Objetos anêmicos são condenados quando percorrem por todo o sistema, deixando de lado alguns conceitos primordiais da OO. Como exemplo, os muito comuns objetos get/set.
No caso aplicado, foi uma boa escolha para fazer o 'assembler' (onde são utilizados, e apenas lá) o uso dos DTO's.

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

2 Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT