top of page

O Dicionário Ubíquo: Eliminando a Ambiguidade

O Dicionário Ubíquo é a base do Design Orientado a Domínio (DDD - Domain-Driven Design), atuando como a ponte que une o mundo do negócio e o mundo da tecnologia para criar um software que resolve problemas reais de forma eficaz e compreensível.


Ele é uma linguagem comum, rigorosa e compartilhada, desenvolvida colaborativamente por todos os envolvidos em um projeto de software: desenvolvedores, especialistas do domínio (usuários, analistas de negócio, stakeholders) e gerentes de produto.


O objetivo principal é eliminar ambiguidades e garantir que todos tenham um entendimento unificado dos conceitos do negócio. Essa linguagem não é apenas falada em reuniões, mas é usada em todos os artefatos do projeto.


Principais Características e Benefícios


  1. Elimina a Ambiguidade: Em muitos projetos, a equipe de negócios usa uma terminologia e a equipe de desenvolvimento usa outra (muitas vezes mais técnica), exigindo uma "tradução" constante. O Dicionário Ubíquo cria uma única fonte de verdade para os termos do domínio, evitando mal-entendidos.

    1. Exemplo: O termo "Cliente" pode significar coisas diferentes para os departamentos de Vendas, Marketing e Suporte. O Dicionário Ubíquo força a equipe a definir precisamente o que "Cliente" significa no contexto do software que está sendo construído.

  2. Conecta o Código ao Negócio: A característica mais poderosa do Dicionário Ubíquo é que ele é usado diretamente no código-fonte. Nomes de classes, métodos, variáveis, módulos e bancos de dados devem refletir a linguagem do negócio.

    1. Isso torna o código mais expressivo e fácil de entender por novos desenvolvedores e até mesmo por analistas de negócio com alguma noção técnica. O código passa a ser um reflexo fiel do modelo de negócio.

    2. Em vez de: class CustMgr { void processOrder(data) }

    3. Usa-se: class Cliente { void RealizarPedido(Pedido pedido) }

  3. Facilita a Comunicação: Quando todos falam a mesma língua, a comunicação se torna mais fluida e eficiente. As conversas entre desenvolvedores e especialistas do domínio são mais ricas e focadas em resolver problemas de negócio, não em decifrar jargões.

  4. Evolução Contínua: O Dicionário Ubíquo não é estático. Ele evolui à medida que o entendimento do domínio pela equipe se aprofunda. Novas descobertas sobre o negócio levam a refinamentos na linguagem, que por sua vez são refletidos no código.


Como é Criado e Mantido?

  • Colaboração Intensa: Ele nasce de sessões de brainstorming, workshops e conversas contínuas entre desenvolvedores e especialistas do domínio.

  • Ouvir Ativamente: Os desenvolvedores devem prestar muita atenção aos termos que os especialistas usam para descrever os processos e as regras de negócio.

  • Questionar e Esclarecer: É crucial questionar termos vagos ou ambíuos até que um consenso seja alcançado.

  • Documentação (Leve): Pode ser útil manter um glossário em uma wiki ou em um documento compartilhado, mas o local principal onde o Dicionário Ubíquo deve "viver" é nas conversas e, principalmente, no código.


Exemplo Prático: E-commerce de Seguros

Imagine uma equipe construindo um portal de seguros.

  • Termo Vago: "Apólice"

  • Conversa Colaborativa:

    • Analista de Negócio: "O cliente compra uma apólice e depois a gente emite."

    • Desenvolvedor: "Ok, mas o que é 'comprar' versus 'emitir'? São a mesma coisa? O que acontece entre um e outro?"

    • Analista de Negócio: "Não. Primeiro, o cliente solicita uma cotação. Se ele aceitar, a proposta é gerada. A proposta passa por uma análise de risco. Se for aprovada, aí sim a apólice é emitida e entra em vigor."

  • Termos Resultantes para o Dicionário Ubíquo:

    • Cotação: Uma estimativa de preço para uma cobertura, sem compromisso.

    • Proposta: Uma solicitação formal de seguro feita pelo cliente com base em uma cotação aceita.

    • Análise de Risco: O processo de avaliação de uma Proposta.

    • Apólice: O contrato de seguro formal e emitido, que está em vigor.


Esses termos (Cotação, Proposta, AnáliseDeRisco, Apólice) se tornariam os nomes das classes e entidades principais no código, garantindo que o software modele com precisão o processo de negócio real.


Comentários


bottom of page