Domain-Driven Design (DDD)
Vamos ver como funciona o Domain-Driven Design (DDD) para extrair classes de requisitos, porém,
antes, vamos ver um pouco de DDD.
É uma abordagem de desenvolvimento de software que coloca forte ênfase na compreensão e
modelagem do domínio ou espaço de problema em que o software opera.
O DDD se concentra na colaboração entre especialistas do domínio e equipes de desenvolvimento
para obter compreensão profunda do domínio de negócios. Ele incentiva o uso de uma linguagem
onipresente compartilhada que preenche a lacuna entre o jargão técnico e a terminologia de
domínio. Ao fazer isso, o DDD ajuda a criar um entendimento comum entre as partes interessadas,
permitindo uma comunicação eficaz e promovendo um melhor design de software.
No centro do DDD, está a noção de modelo de domínio, que representa os principais conceitos e
comportamentos do domínio. O modelo de domínio consiste em entidades, objetos de valor,
agregações e serviços que capturam a essência do domínio do problema. Esses blocos de
construção são identificados por meio de uma extensa análise de domínio e servem como base para
o design do software.
Certo. Vamos ver como isso ocorre na prática.
Sistema Bancário
Em um sistema bancário, o modelo de domínio pode incluir o seguinte:
Cliente: representa um indivíduo ou organização que detém uma conta;
Conta: representa uma conta bancária e seus atributos associados, como saldo e
número da conta;
Transação: representa uma transação financeira, incluindo detalhes como valor, data e
tipo de transação;
Depósito: representa um tipo específico de transação, que aumenta o saldo da conta;
Saque: representa um tipo específico de transação, que diminui o saldo da conta;
Transferência: representa um tipo específico de transação, que envolve a
movimentação de fundos entre contas;
Serviço de conta: fornece operações para gerenciar atividades relacionadas à conta,
como abrir uma conta, fazer depósitos ou saques e transferir fundos.
Plataforma de E-commerce
Para uma plataforma de comércio eletrônico, o modelo de domínio pode incluir o seguinte:
Produto: representa um produto disponível para venda, incluindo atributos como nome,
descrição e preço;
Carrinho de compras: representa um contêiner temporário no qual os usuários podem
adicionar produtos para compra;
Pedido: representa a intenção de um cliente de comprar um ou mais produtos,
incluindo detalhes como endereço de entrega e informações de pagamento;
Pagamento: representa o processo de autorização e captura de pagamento para um
pedido;
Estoque: representa a disponibilidade de produtos no sistema, rastreando quantidades
e níveis de estoque;
Catálogo: fornece operações para procurar e pesquisar produtos;
Serviço de carrinho: lida com operações relacionadas ao carrinho de compras, como
adicionar ou remover produtos;
Serviço de pedidos: gerencia o processo de criação e o processamento de pedidos,
incluindo atualizações de estoque e processamento de pagamentos.