목차 일부
01부 동작하는 도메인 모델 만들기
<B><FONT color ... #0000
소프트웨어의 본질 ... 4
01장 지식 탐구 ... 7
효과적인 모델링의 요소 ... 13
지식 탐구 ... 14
지속적인 학습 ... 16
지식이 풍부한 설계 ... 17
심층 모델 ... 21
02...
더보기
목차 전체
01부 동작하는 도메인 모델 만들기
<B><FONT color ... #0000
소프트웨어의 본질 ... 4
01장 지식 탐구 ... 7
효과적인 모델링의 요소 ... 13
지식 탐구 ... 14
지속적인 학습 ... 16
지식이 풍부한 설계 ... 17
심층 모델 ... 21
02장 의사소통과 언어 사용 ... 23
UBIQUITOUS LANGUAGE (보편 언어) ... 24
크게 소리내어 모델링하기 ... 31
한 팀, 한 언어 ... 32
문서와 다이어그램 ... 35
글로 쓴 설계 문서 ... 37
실행 가능한 기반 ... 40
설명을 위한 모델 ... 41
03장 모델과 구현의 연계 ... 45
MODEL-DRIVEN DESIGN (모델 주도 설계) ... 47
모델링 패러다임과 도구 지원 ... 51
내부 드러내기: 왜 모델이 사용자에게 중요한가 ... 58
HANDS-ON MODELER (실천적 모델러) ... 60
02부 모델 주도 설계의 기본 요소
04장 도메인의 격리 ... 69
LAYERED ARCHITECTURE (계층형 아키텍처) ... 70
계층 간 관계 설정 ... 74
아키텍처 프레임워크 ... 76
도메인 계층은 모델이 살아가는 곳 ... 77
SMART UI(지능형 UI) "안티 패턴" ... 78
다른 종류의 격리 ... 82
05장 소프트웨어에서 표현되는 모델 ... 83
연관관계 ... 85
ENTITY (엔티티, 참조객체라고도 함) ... 91
ENTITY 모델링 ... 95
식별 연산의 설계 ... 96
VALUE OBJECT (값 객체) ... 99
VALUE OBJECT의 설계 ... 102
VALUE OBJECT를 포함한 연관관계 설계 ... 106
SERVICE(서비스) ... 107
SERVICE와 격리된 도메인 계층 ... 109
구성 단위 ... 111
SERVICE에 접근하기 ... 112
MODULE(모듈, 패키지라고도 함) ... 113
기민한 MODULE ... 115
인프라스트럭처 주도 패키지화의 함정 ... 117
모델링 패러다임 ... 120
객체 패러다임이 지배적인 이유 ... 121
객체 세계에서 객체가 아닌 것들 ... 123
패러다임이 혼재할 때 MODEL-DRIVEN DESIGN 고수하기 ... 124
06장 도메인 객체의 생명주기 ... 127
AGGREGATE (집합) ... 129
FACTORY (팩터리) ... 140
FACTORY와 FACTORY의 위치 선정 ... 143
생성자만으로 충분한 경우 ... 146
인터페이스 설계 ... 147
불변식 로직의 위치 ... 148
ENTITY FACTORY와 VALUE OBJECT FACTORY ... 149
저장된 객체의 재구성 ... 149
REPOSITORY (리파지터리) ... 152
REPOSITORY에 질의하기 ... 158
클라이언트 코드가 REPOSITORY 구현을 무시한다 (개발자는 그렇지 않지만) ... 159
REPOSITORY 구현 ... 160
프레임워크의 활용 ... 162
FACTORY와의 관계 ... 163
관계형 데이터베이스를 위한 객체 설계 ... 165
07장 언어의 사용(확장 예제) ... 169
화물 해운 시스템 소개 ... 169
도메인 격리: 응용 기능 소개 ... 172
ENTITY와 VALUE OBJECT의 구분 ... 173
역할과 그 밖의 속성 ... 175
해운 도메인의 연관관계 설계 ... 175
AGGREGATE의 경계 ... 177
REPOSITORY의 선정 ... 178
시나리오 연습 ... 180
예제 애플리케이션 기능: 화물의 목적지 변경 ... 180
예제 애플리케이션 기능: 반복 업무 ... 180
객체 생성 ... 181
Cargo에 대한 FACTORY와 생성자 ... 181
Handling Event 추가 ... 182
리팩터링할 시간: Cargo AGGREGATE의 설계 대안 ... 184
해운 모델의 MODULE ... 187
새로운 기능 도입: 할당량 검사 ... 190
두 시스템의 연계 ... 191
모델 강화: 업무 분야 나누기 ... 192
성능 최적화 ... 194
최종 검토 ... 195
03부 더 심층적인 통찰력을 향한 리팩터링
리팩터링 수준 ... 198
심층 모델 ... 199
심층 모델/유연한 설계 ... 201
발견 과정 ... 201
08장 도약 ... 2033
도약에 관한 일화 ... 204
괜찮은 모델이기는 하지만…… ... 204
도약 ... 207
더 심층적인 모델 ... 209
냉정한 결정 ... 211
결말 ... 213
기회 ... 213
기본에 집중하라 ... 213
후기 : 연이은 새로운 통찰력의 출현 ... 214
09장 암시적인 개념을 명확하게 ... 217
개념 파헤치기 ... 218
언어에 귀 기울여라 ... 218
어색한 부분을 조사하라 ... 223
모순점에 대해 깊이 고민하라 ... 229
서적을 참고하라 ... 230
시도하고 또 시도하라 ... 232
다소 불명확한 개념의 모델링 ... 232
명시적인 제약조건 ... 233
도메인 객체로서의 프로세스 ... 236
SPECIFICATION (명세) ... 238
SPECIFICATION의 적용과 구현 ... 242
10장 유연한 설계 ... 257
INTENTION-REVEALING INTERFACE (의도를 드러내는 인터페이스) ... 261
SIDE-EFFECT-FREE FUNCTION (부수효과가 없는 함수) ... 266
ASSERTION (단정) ... 272
CONCEPTUAL CONTOUR (개념적 윤곽) ... 277
STANDALONE CLASS (독립형 클래스) ... 283
CLOSURE OF OPERATION (연산의 닫힘) ... 286
선언적 설계 ... 289
도메인 특화 언어 ... 290
선언적인 형식의 설계 ... 292
SPECIFICATION을 선언적인 형식으로 확장하기 ... 292
받음각 ... 302
하위 도메인으로 분할하라 ... 302
가능하다면 정립된 정형화를 활용하라 ... 302
11장 분석 패턴의 적용 ... 313
12장 모델과 디자인 패턴의 연결 ... 329
STRATEGY (POLICY라고도 함) ... 331
COMPOSITE (복합체) ... 336
그렇다면 FLYWEIGHT는? ... 343
13장 더 심층적인 통찰력을 향한 리팩터링 ... 345
시작 ... 346
조사팀 ... 346
선행 기술 ... 347
개발자를 위한 설계 ... 348
타이밍 ... 349
위기를 기회로 ... 350
04부 전략적 설계
14장 모델의 무결성 유지 ... 357
BOUNDED CONTEXT (제한된 컨텍스트) ... 361
BOUNDED CONTEXT 안의 균열 인식 ... 365
CONTINUOUS INTEGRATION (지속적인 통합) ... 367
CONTEXT MAP (컨텍스트 맵) ... 370
CONTEXT 경계에서의 테스트 ... 378
CONTEXT MAP의 조직화와 문서화 ... 378
BOUNDED CONTEXT 간의 관계 ... 379
SHARED KERNEL (공유 커널) ... 381
CUSTOMER/SUPPLIER DEVELOPMENTTEAM (고객/공급자 개발 팀) ... 383
CONFORMIST (준수자) ... 388
ANTICORRUPTION LAYER (오류 방지 계층) ... 391
ANTICORRUPTION LAYER의 인터페이스 설계 ... 393
ANTICORRUPTION LAYER의 구현 ... 393
교훈적인 이야기 ... 397
SEPARATE WAYS (각자의 길) ... 399
OPEN HOST SERVICE (공개 호스트 서비스) ... 402
PUBLISHED LANGUAGE (공표된 언어) ... 404
코끼리 통일하기 ... 407
모델의 컨텍스트 전략 선택 ... 412
팀 의사결정 또는 그 이상 ... 412
우리 자신을 컨텍스트에 배치하기 ... 412
경계의 변형 ... 413
변경할 수 없다는 사실을 인정하기: 외부 시스템의 묘사 ... 414
외부 시스템과의 관계 ... 414
설계 중인 시스템 ... 415
개별 모델의 특수한 요구사항 충족하기 ... 416
배치 ... 417
타협점 ... 418
프로젝트가 이미 진행 중일 때 ... 419
변형 ... 419
CONTEXT 병합: SEPARATE WAYS→SHARED KERNEL ... 420
CONTEXT 병합: SHARED KERNEL→CONTINUOUS INTEGRATION ... 422
레거시 시스템의 단계적 폐기 ... 423
OPEN HOST SERVICE→PUBLISHED LANGUAGE ... 425
15장 디스틸레이션 ... 427
CORE DOMAIN (핵심 도메인) ... 430
CORE 선택 ... 432
누가 그 일을 할 것인가? ... 433
디스틸레이션의 단계적 확대 ... 435
GENERIC SUBDOMAIN (일반 하위 도메인) ... 436
일반화가 재사용 가능하다는 의미는 아니다 ... 443
프로젝트 위험 관리 ... 444
DOMAIN VISION STATEMENT (도메인 비전 선언문) ... 446
HIGHLIGHTED CORE (강조된 핵심) ... 448
디스틸레이션 문서 ... 449
표시된 CORE ... 450
프로세스 도구로서의 디스틸레이션 문서 ... 451
COHESIVE MECHANISM (응집력 있는 메커니즘) ... 453
GENERIC SUBDOMAIN과 COHESIVE MECHANISM ... 455
MECHANISM이 CORE DOMAIN의 일부인 경우 ... 456
선언적 형식의 디스틸레이션 ... 457
SEGREGATED CORE (분리된 핵심) ... 458
SEGREGATED CORE를 만드는 데 드는 비용 ... 459
발전하는 팀의 의사결정 ... 460
ABSTRACT CORE (추상화된 핵심) ... 467
심층 모델의 디스틸레이션 ... 469
리팩터링의 대상 선택 ... 469
16장 대규모 구조 ... 471
EVOLVING ORDER (발전하는 질서) ... 475
SYSTEM METAPHOR (시스템 은유) ... 478
미숙한 은유와 그것이 필요 없는 이유 ... 480
RESPONSIBILITY LAYER (책임 계층) ... 481
적절한 계층의 선택 ... 493
KNOWLEDGE LEVEL (지식 수준) ... 497
PLUGGABLE COMPONENT FRAMEWORK (착탈식 컴포넌트 프레임워크) ... 507
구조는 얼마나 제약성을 지녀야 하는가? ... 512
잘 맞아떨어지는 구조를 향한 리팩터링 ... 513
최소주의 ... 514
의사소통과 자기 훈련 ... 514
재구조화가 유연한 설계를 낳는다 ... 515
디스틸레이션은 부하를 줄인다 ... 515
17장 전략의 종합 ... 517
대규모 구조와 BOUNDED CONTEXT와의 결합 ... 517
대규모 구조와 디스틸레이션과의 결합 ... 521
평가 먼저 ... 523
누가 전략을 세우는가? ... 523
애플리케이션 개발에서 창발하는 구조 ... 524
고객(애플리케이션 개발팀) 중심의 아키텍처 팀 ... 525
전략적 설계 결정을 위한 6가지 필수 요소 ... 525
기술 프레임워크도 마찬가지다 ... 528
종합계획을 조심하라 ... 529
결론
맺음말 ... 534
앞을 내다보며 ... 539
이 책에 포함된 패턴의 사용법
패턴 이름 ... 541
용어 설명 ... 547
참고 문헌 ... 555
사진 협찬 ... 557
찾아보기 ... 559
더보기 닫기