This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| domain-driven_design:part_4_strategic_design:15_distillation [2024/07/22 12:33] – [SEGREGATED CORE] ledyx | domain-driven_design:part_4_strategic_design:15_distillation [2024/07/29 10:27] (current) – [ABSTRACT CORE] 링크 오류 수정 ledyx | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| = 15 디스틸레이션 = | = 15 디스틸레이션 = | ||
| - | 폭넓은 일련의 모델을 구분하고 도메인 모델의 정수를 추출하는 방법 | + | 폭넓은 일련의 모델을 구분하고 도메인 모델의 정수인 **CORE DOMAIN**을 |
| {{tag> | {{tag> | ||
| Line 380: | Line 380: | ||
| === SEGREGATED CORE를 만드는 데 드는 비용 === | === SEGREGATED CORE를 만드는 데 드는 비용 === | ||
| + | |||
| + | * 특정 MODULE의 CORE DOMAIN의 응집도를 이끌어내기 위해 Cohesion이 희생될 수도 있는데, 엔터프라이즈 소프트웨어의 가장 큰 부가가치는 모델의 기업별 측면에서 나오기 때문에, 이를 CORE DOMAIN으로 이끌어내면 오히려 이득이다. | ||
| + | * CORE를 분리하려면 해야 할 일이 많기 때문에 개발자가 많은 시간을 보낸다. | ||
| + | |||
| + | <note important> | ||
| + | SEGREGATED CORE를 노출시켜야 할 때는 | ||
| + | 규모가 큰 BOUNDED CONTEXT가 시스템에 결정적인 역할을 하지만 | ||
| + | 많은 양의 보조적인 기능 탓에 **모델의 근본적인 부분이 가려지는 경우다.** | ||
| + | </ | ||
| + | |||
| === 발전하는 팀의 의사결정 === | === 발전하는 팀의 의사결정 === | ||
| + | |||
| + | 의사소통은 모든 사람이 CORE라는 하나의 시각을 함께 유지할 수 있을 만큼 효과적으로 이뤄져야 한다. | ||
| + | |||
| == ABSTRACT CORE == | == ABSTRACT CORE == | ||
| + | |||
| + | <note important> | ||
| + | 모델의 가장 근본적인 개념을 식별해서 | ||
| + | 그것을 별도의 클래스나 추상 클래스, 또는 인터페이스로 추출하라. | ||
| + | 이 추상 모델이 중요 컴포넌트 간에 발생하는 **상호작용**을 대부분 표현할 수 있게끔 설계하라. | ||
| + | 특화되고 세부적인 구현 클래스는 | ||
| + | 하위 도메인을 기준으로 정의된 자체적인 MODULE에 남겨둔 상태에서 | ||
| + | 이 추상적이면서 전체적인 모델을 자체적인 MODULE에 배치하라. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ABSTRACT CORE를 모델링하려면 | ||
| + | 핵심 개념과 해당 개념이 시스템의 주요 **상호작용**에서 수행하는 역할을 심층적으로 이해해야 한다. | ||
| + | 다시 말해, 이것은 [[domain-driven_design: | ||
| + | 그리고 __대개 여기에는 상당한 양의 재설계가 필요하다.__ | ||
| + | |||
| == 심층 모델의 디스틸레이션 == | == 심층 모델의 디스틸레이션 == | ||
| + | |||
| + | < | ||
| + | flowchart | ||
| + | |||
| + | subgraph subCoreDomain[" | ||
| + | deepModel[" | ||
| + | end | ||
| + | |||
| + | </ | ||
| + | |||
| == 리팩터링의대상 선택 | == 리팩터링의대상 선택 | ||
| + | CORE DOMAIN 분리에 집중. | ||
| + | |||
| + | - 고통 주도적(pain-driven) 리팩터링에서는 \\ 문제의 근원에 CORE DOMAIN이나, | ||
| + | - 마음껏 리팩터링할 수 있는 상황이라면 \\ 제일 먼저 CORE DOMAIN을 더 잘 분해하고, | ||