Introdução ao Domain Driven Design - DDD


Domain-Driven Design (DDD) é uma abordagem de desenvolvimento de software que prioriza o entendimento profundo do domínio de negócios. Introduzida por Eric Evans em seu livro Domain-Driven Design: Tackling Complexity in the Heart of Software, publicado em 2003, ela propõe que o software seja projetado em alinhamento com as regras e processos do negócio que ele serve. O resultado é um sistema mais coeso, compreensível e adaptável às mudanças.

O Que é DDD?

A essência do DDD está em criar um modelo de software que espelhe o domínio do negócio, ou seja, os conceitos, processos e regras que definem a área de atuação da aplicação, como finanças, saúde ou logística. Esse alinhamento reduz a distância entre o código e a realidade do negócio, facilitando a manutenção e evolução do sistema.

Para alcançar esse objetivo, o DDD oferece um conjunto de conceitos e práticas que orientam tanto desenvolvedores quanto especialistas de negócio. O principal deles é a linguagem ubíqua, um vocabulário comum que promove clareza e transparência na comunicação entre as equipes técnica e de negócios.

Pilares do DDD

O DDD é estruturado em dois grandes pilares, que guiam sua aplicação:

Design Estratégico

O design estratégico foca na organização do sistema em contextos delimitados, que são partes distintas do domínio com modelos próprios. Essa divisão evita a confusão de conceitos e facilita a gestão de sistemas complexos. Além disso, o mapeamento de contexto define como esses contextos interagem, garantindo integração sem comprometer a independência de cada um.

Design Tático

O design tático oferece padrões práticos para modelar o domínio no código. Entre os principais, destacam-se:

  • Entidades: Objetos com identidade única, como um “Cliente”, que possuem comportamento e estado.
  • Objetos de Valor: Elementos imutáveis, sem identidade, como um “Endereço”, usados para representar conceitos específicos.
  • Agregados: Grupos de objetos com uma entidade raiz, como um “Pedido” com itens, que garantem consistência e integridade.

Referências


https://pt.stackoverflow.com/questions/19548/o-que-realmente-%C3%A9-ddd-e-quando-ele-se-aplica