도메인 주도 설계

도메인 주도 설계(, DDD)는 도메인에 따라 소프트웨어를 모델링하는 데 중점을 둔 소프트웨어 설계 접근 방식이다. 도메인 주도 설계는 단일한 모델 대신, 큰 체계를 각각 정해진 맥락에 따라 각자의 모델을 갖는 부분들로 나눈다.

도메인 주도 설계에서 소프트웨어 코드의 구조와 언어(클래스 이름, 클래스 메서드, 클래스 변수)는 비즈니스 도메인과 일치되어야 한다. 예를 들어 소프트웨어가 대출 응용프로그램을 처리해야 한다면 "대출 애플리케이션(loan application)", "고객(customers)"을 클래스 이름으로, "거래 수락(accept offer)"이나 "인출(withdraw)"과 같은 이름을 메서드 이름으로 사용할 것이다.

도메인 주도 설계는 다음과 같은 목표를 상정한다.

 프로젝트의 주요 초점을 핵심 도메인과 도메인 논리층에 둔다.
 복잡한 설계를 도메인 모델에 기반하여 수행한다.
 특정 도메인 문제를 다루는 개념적 모델을 지속적으로 개선하기 위해 기술 전문가와 도메인 전문가 간의 창의적 협업을 촉진한다.

DDD는 계속해서 발전하는 모델의 구현에 초점을 맞춘다..

도메인 기반 설계에 대한 비판은 개발자가 일반적으로 모델을 순수하고 유용한 구성으로 유지하기 위해 상당한 양의 격리 및 캡슐화를 구현해야 한다고 지적한다. 도메인 기반 설계는 유지 관리 용이성과 같은 이점을 제공하지만 마이크로소프트는 모델이 도메인에 대한 공통 이해를 공식화하는 데 명확한 이점을 제공하는 복잡한 도메인에만 권장한다.Microsoft Application Architecture Guide, 2nd Edition. Retrieved from http://msdn.microsoft.com/en-us/library/ee658117.aspx#DomainModelStyle.

이 용어는 에릭 에반스(Eric Evans)가 2003년에 출판한 동명의 책에서 가져왔다.

 같이 보기 
 온톨로지
 C4 모델
 시스템 과학
 각주 

분류:소프트웨어 개발 철학
분류:소프트웨어 설계
분류:소프트웨어 구조