Files
2nd/10_Wiki/Topics_Dev/Ubiquitous_Language.md
T

47 lines
4.0 KiB
Markdown

---
id: P-REINFORCE-WIKI-DEV-UBIQUITOUS-LANGUAGE
title: "보편적 언어와 지식의 공유 모델 (Ubiquitous Language)"
category: "10_Wiki/💻 Topics_Dev"
status: verified
canonical_id: ""
aliases: ["Ubiquitous Language", "보편적 언어", "공유 언어", "도메인 언어", "용어 사전"]
duplicate_of: ""
source_trust_level: A
confidence_score: 1.0
tags: ["DDD", "Communication", "Modeling", "Clean_Code", "Team_Collaboration"]
raw_sources: ["Datacollector_Export_2026-05-02"]
last_reinforced: 2026-05-02
github_commit: ""
---
# [[보편적 언어와 지식의 공유 모델 (Ubiquitous Language)]]
## 1. 개요
보편적 언어(Ubiquitous Language)는 도메인 주도 설계(DDD)에서 개발자와 비즈니스 전문가(도메인 전문가)가 서로의 지식 격차를 해소하고 하나의 팀으로 기능하기 위해 프로젝트 전체에서 공통으로 사용하는 공유 언어이다. 이 언어는 단순한 회의용 어휘를 넘어, 소프트웨어의 설계 문서, 모델링 다이어그램, 그리고 실제 소스 코드의 명명 규칙(클래스, 변수, 메서드 등)에까지 일관되게 반영되어야 한다.
## 2. 핵심 원칙 및 실천 방안
- **공통 어휘 도출**: 비즈니스 프로세스에서 사용하는 용어를 기술적인 용어(예: UserTable, DataObject)로 치환하지 않고, 도메인 전문가가 사용하는 비즈니스 용어(예: Customer, Order)를 그대로 채택.
- **코드와 모델의 일치**: 보편적 언어의 변경은 즉시 코드의 리팩토링으로 이어져야 하며, 코드의 변화 역시 언어의 갱신을 의미해야 함. "코드가 곧 언어이고, 언어가 곧 모델"이라는 철학 유지.
- **컨텍스트별 격리**: 동일한 단어라도 바운디드 컨텍스트(Bounded Context)에 따라 의미가 달라질 수 있음을 인정하고, 각 컨텍스트 내에서만 유효한 언어 세트를 관리.
- **시각화 및 도구 활용**: 이벤트 스토밍(Event Storming) 워크숍이나 공유 용어 사전(Glossary)을 통해 언어의 정의를 명시화하고 지속적으로 업데이트.
## 3. 엔지니어링 가치
- **의사소통 비용 절감**: 개발자와 기획자 간의 '번역' 과정을 없애 오해를 줄이고, 요구사항이 코드로 정확히 전이되도록 보장.
- **코드의 자가 문서화 (Self-Documenting)**: 코드가 비즈니스 용어로 작성되어 있어, 기술 지식이 부족한 사람도(혹은 도메인 지식만 있는 신규 개발자도) 코드의 의도를 훨씬 빠르게 파악 가능.
- **지식의 무결성 유지**: 비즈니스 규칙이 변경될 때 어떤 코드를 수정해야 하는지 명확히 매핑되므로, 유지보수의 정확성과 속도 향상.
## 4. 트레이드오프 및 주의사항
- **초기 합의 비용**: 비즈니스 전문가의 적극적인 참여와 용어 정의를 위한 심도 있는 토론 과정이 필요하며, 이는 초기 프로젝트 속도를 늦출 수 있음.
- **언어의 부패 방지**: 비즈니스가 진화함에 따라 언어도 변하므로, 코드와 언어 사이의 동기화를 유지하기 위한 끊임없는 리팩토링 규율이 요구됨.
- **기술적 용어와의 균형**: 모든 것을 비즈니스 용어로 명명할 수는 없다. 인프라스트럭처나 프레임워크 수준의 코드는 기술적 명명법을 따르되, 도메인 핵심 로직(Domain Core)만큼은 보편적 언어를 엄격히 준수해야 함.
## 5. 지식 연결 (Related)
- [[Domain_Driven_Design]]: 보편적 언어를 필요로 하는 상위 설계 방법론.
- [[Bounded_Context]]: 보편적 언어가 유효한 범위를 한정하는 논리적 경계.
- [[Event_Storming]]: 보편적 언어를 효과적으로 도출하기 위한 협업 워크숍.
## 🧪 검증 상태 (Validation)
- **정보 상태**: 검증 완료 (Verified)
- **출처 신뢰도**: A
- **검토 이유**: 비즈니스 지식을 코드의 구조로 직접 치환하여 소프트웨어의 가치와 정확성을 극대화하기 위한 DDD의 가장 근본적인 실천 지침 정립.