BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias QCon London 2009: Um Exemplo completo de DDD

QCon London 2009: Um Exemplo completo de DDD

Favoritos

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

Conteúdo educacional

BT