"도메인 주도 설계 DDD"의 두 판 사이의 차이

 
(사용자 2명의 중간 판 20개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{다른뜻|장거리 직통 전화}}
==개요==
==개요==
;domain-driven design; DDD
;domain-driven design (DDD)
;도메인 주도 설계, 도메인 주도 디자인, 도메인 구동 디자인
;도메인 주도 설계, 도메인 주도 디자인, 도메인 구동 디자인
* 소프트웨어 설계 기법의 하나
* 소프트웨어 설계 기법의 하나
* 복잡한 도메인의 설계는 모델 기준으로 해야
* 복잡한 도메인의 설계는 모델 기준으로 해야 한다.
* 시스템을 구현하기 위해 특정 기술이 아니라 도메인과 그 로직에 초점을 두어야 함
* 데이터와 애플리케이션을 설계할 때 업무 도메인별로 분리하여 설계한다.
* 시스템 요구를 기술하기 위해 도메인 전문가가 도메인 모델 제공
* 시스템을 구현하기 위해 특정 기술이 아니라 도메인과 그 로직에 초점을 둔다.
* 사용자, 개발자가 참고할 수 있는 공통 언어를 형성해야
* 시스템 요구를 기술하기 위해 도메인 전문가가 [[도메인 모델]]을 제공한다.
* 다층 아키텍처의 객체지향 시스템에서 도메인층을 기술하는 것에 중점을
* 사용자, 개발자가 참고할 수 있는 공통 언어를 형성해야 한다.
* 다층 아키텍처의 객체지향 시스템에서 도메인층을 기술하는 것에 중점을 둔다.


==도메인 모델 요소==
==도메인 모델 요소==
13번째 줄: 15번째 줄:
! 요소(한국어) !! 요소(영어) !! 설명
! 요소(한국어) !! 요소(영어) !! 설명
|-
|-
| [[개체]] || entity || 도메인 모델 내의 객체. 속성이 아니라 연속성, 식별성에 의해 정의
| [[엔티티]] || entity ||
* 도메인 모델 내의 객체
* 고유식별자를 가짐
* 자신의 수명주기를 가짐
* 속성이 아니라 연속성, 식별성에 의해 정의됨
* 예: 주문(Order), 회원(Member), 상품(Product)
|-
|-
| [[값 객체]] || value object || 사물의 특성을 기술하는 객체. 보통 식별자 없이, 읽기 전용 객체. [[Flyweight 패턴]]을 이용해 공유
| [[값 객체]] || value object ||
* 사물의 속성을 기술하는 객체
* 보통 식별자 없음
* 읽기 전용 객체
* [[Flyweight 패턴]]을 이용해 공유
* 예시: 주소(Address), 금액(Money)
|-
|-
| [[서비스]] || service || 조작이 객체에 속하지 않는 경우에 서비스로 구현
| [[서비스]] || service || 조작이 객체에 속하지 않는 경우에 서비스로 구현
|-
|-
| [[리파지토리]] || repository || 도메인 객체 취득은, 저장소 변경이 용이하도록, 레파지토리 객체가 전담 처리
| [[리파지토리]] || repository || 도메인 객체 취득은, 저장소 변경이 용이하도록, 리파지토리 객체가 전담 처리
|-
|-
| [[팩토리]] || factory || 도메인 객체 생성 메소드는, 변경이 용이하도록 팩토리 오브젝트가 전담 처리
| [[팩토리]] || factory || 도메인 객체 생성 메소드는, 변경이 용이하도록 팩토리 오브젝트가 전담 처리
|}
|}


https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Maintaining_Model_Integrity.png/550px-Maintaining_Model_Integrity.png
https://cdn-images-1.medium.com/max/1000/1*BlLLGEuH7Wtj2AIyFYzdUw.png
 
https://upload.wikimedia.org/wikipedia/commons/7/73/Maintaining_Model_Integrity.png


==같이 보기==
==같이 보기==
* [[Bounded context]]
* [[도메인 (소프트웨어 공학)]]
* [[Continuous integration]]
* [[연결된 컨텍스트]] (bounded context)
* [[지속적인 통합]] (continuous integration)
* [[Context map]]
* [[Context map]]
* [[마이크로서비스]]
* [[마이크로서비스]]
* [[도메인 분석, 도메인 모델]]
* [[관점지향프로그래밍 AOP]]


==참고 자료==
==참고==
* https://en.wikipedia.org/wiki/Domain-driven_design
* https://en.wikipedia.org/wiki/Domain-driven_design
* http://www.zdnet.co.kr/news/news_view.asp?artice_id=00000039170212
* http://www.zdnet.co.kr/news/news_view.asp?artice_id=00000039170212
* http://www.slideshare.net/baejjae93/ss-27536729 YoungHo Cho - 도메인 주도 설계의 본질


[[분류: 설계]]
[[분류: 설계]]

2021년 10월 8일 (금) 21:17 기준 최신판

  다른 뜻에 대해서는 장거리 직통 전화 문서를 참조하십시오.

1 개요[ | ]

domain-driven design (DDD)
도메인 주도 설계, 도메인 주도 디자인, 도메인 구동 디자인
  • 소프트웨어 설계 기법의 하나
  • 복잡한 도메인의 설계는 모델 기준으로 해야 한다.
  • 데이터와 애플리케이션을 설계할 때 업무 도메인별로 분리하여 설계한다.
  • 시스템을 구현하기 위해 특정 기술이 아니라 도메인과 그 로직에 초점을 둔다.
  • 시스템 요구를 기술하기 위해 도메인 전문가가 도메인 모델을 제공한다.
  • 사용자, 개발자가 참고할 수 있는 공통 언어를 형성해야 한다.
  • 다층 아키텍처의 객체지향 시스템에서 도메인층을 기술하는 것에 중점을 둔다.

2 도메인 모델 요소[ | ]

요소(한국어) 요소(영어) 설명
엔티티 entity
  • 도메인 모델 내의 객체
  • 고유식별자를 가짐
  • 자신의 수명주기를 가짐
  • 속성이 아니라 연속성, 식별성에 의해 정의됨
  • 예: 주문(Order), 회원(Member), 상품(Product)
값 객체 value object
  • 사물의 속성을 기술하는 객체
  • 보통 식별자 없음
  • 읽기 전용 객체
  • Flyweight 패턴을 이용해 공유
  • 예시: 주소(Address), 금액(Money)
서비스 service 조작이 객체에 속하지 않는 경우에 서비스로 구현
리파지토리 repository 도메인 객체 취득은, 저장소 변경이 용이하도록, 리파지토리 객체가 전담 처리
팩토리 factory 도메인 객체 생성 메소드는, 변경이 용이하도록 팩토리 오브젝트가 전담 처리

 

 

3 같이 보기[ | ]

4 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}