Projeto orientado a domínios
24 Janeiro 2020
atualizado em: 6 Novembro 2026
Projeto orientado a domínios
O Design Orientado a Domínios (DDD) é uma abordagem para o desenvolvimento de aplicativos baseada na identificação de domínios e na modelagem de software em torno deles.

Domínio
Um domínio é a área de conhecimento ou atividade para a qual um aplicativo é desenvolvido. Os advogados, claramente, têm seus próprios termos e conceitos-chave, que diferem do vocabulário da indústria de petróleo e gás. Não se trata apenas de palavras: elas refletem processos e relações que são importantes para o cliente. É por isso que é importante prestar atenção aos termos utilizados em um determinado campo. Isso é alcançado por meio da comunicação constante entre as duas partes: os desenvolvedores da aplicação e os clientes. Essa abordagem reflete o princípio fundamental do DDD: o desenvolvimento não deve estar dissociado dos objetivos de negócios. O DDD não é um conjunto de instruções ou uma metodologia, mas sim uma coleção de princípios e diretrizes.
Para produtos de software pequenos e simples, o DDD, assim como outros princípios de projeto de arquitetura, tem menor importância. Porém, domínios restritos com especificidades complexas exigem uma reflexão cuidadosa no nível mais alto. O DDD sugere a criação de modelos de domínio que capturem a lógica de negócios complexa.
Modelo
Um modelo é um sistema de abstrações que descreve características selecionadas de um domínio. Assim como um modelo físico torna um objeto mais fácil de entender e estudar, um modelo de domínio ajuda a resolver problemas relacionados a esse domínio.
Modelagem de domínio
A modelagem de domínio é uma técnica de desenvolvimento de software, utilizada especialmente no design orientado a domínio (DDD), para representar os conceitos centrais, as regras e as relações de um domínio de negócios específico.
Agregado
Um agregado é um conjunto de entidades e objetos de valor com limites claramente definidos, tratado como uma única unidade. Cada agregado possui uma entidade raiz, e o mundo externo interage com o agregado apenas por meio dessa raiz. Por exemplo, um pedido com suas linhas de pedido pode formar um agregado: você não altera uma linha de pedido diretamente, mas solicita ao pedido que a adicione ou remova, para que o pedido possa aplicar suas regras, como um valor total máximo.
Serviço
Um serviço de domínio é uma operação que não pertence naturalmente a nenhuma entidade ou objeto de valor específico. Em termos gerais, trata-se de uma ação autônoma, como a transferência de dinheiro entre duas contas.
Repositórios
Um repositório fornece acesso a agregados por meio de uma interface simples, semelhante a uma coleção: é possível adicionar um agregado, localizá-lo por seu identificador ou removê-lo, sem saber como e onde ele está armazenado. Por exemplo, um repositório de pedidos permite que o aplicativo carregue e salve pedidos, ocultando os detalhes do banco de dados.
O uso do design orientado a domínio (DDD) ao projetar arquitetura de software e sistemas de informação corporativos complexos pode facilitar o gerenciamento de mudanças em um projeto e tornar os testes de novas versões mais eficazes.