Linguagem Ubíqua e Glossário do Domínio
Índice
- Principais Características e Benefícios
- Como é Criado e Mantido?
- Exemplo Prático: E-commerce de Seguros

Em Domain-Driven Design (DDD), o conceito central é a Linguagem Ubíqua, não um dicionário isolado. Eric Evans a define como uma linguagem estruturada em torno do modelo de domínio e usada pelos integrantes da equipe dentro de um Bounded Context. Um glossário pode registrar termos importantes, mas é apenas um artefato de apoio.
A linguagem é desenvolvida colaborativamente por desenvolvedores, especialistas do domínio e outras pessoas que trabalham no mesmo contexto. Ela aparece nas conversas, nos cenários, nos diagramas e no código que expressa o modelo.
O objetivo é tornar ambiguidades e divergências visíveis para que a equipe possa discuti-las e refinar o modelo. Isso reduz problemas de tradução, mas não garante entendimento idêntico. O limite do Bounded Context também importa: um mesmo termo pode ter significados diferentes em contextos distintos.
A definição usada aqui segue a referência de DDD de Eric Evans.
Principais Características e Benefícios
-
Reduz Ambiguidades: Quando negócio e desenvolvimento usam termos diferentes, a equipe precisa traduzir conceitos continuamente. A Linguagem Ubíqua oferece um vocabulário comum dentro de um contexto, enquanto as conversas e o modelo revelam onde ainda existem interpretações incompatíveis.
- Exemplo: O termo “Cliente” pode significar coisas diferentes para Vendas, Marketing e Suporte. Em vez de forçar uma definição corporativa única, identifique em qual Bounded Context cada significado é válido.
-
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.
-
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.
-
Em vez de: class CustMgr { void processOrder(data) }
-
Usa-se: class Cliente { void RealizarPedido(Pedido pedido) }
-
-
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.
-
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): Um glossário em uma wiki ou documento compartilhado pode registrar definições e questões abertas. Ele não substitui o uso e o refinamento da linguagem nas conversas, nos exemplos e 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 são candidatos a aparecer no código se o modelo confirmar que representam conceitos relevantes naquele contexto. O exemplo não basta para demonstrar que sejam classes, entidades ou a representação definitiva do processo real.