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