목차
Part 1. 소개(INTRODUCTION) = 1
Chapter 1. 객체지향 분석 및 설계 = 3
1.1 OOA/D에서의 UML과 패턴 적용 = 3
1.2 책임 할당 = 6
1.3 분석과 설계란 무엇인가? = 7
1.4 객체지향 분석 및 설계란 무엇인가? = 8
1.5 예제 = 8
1.6 UML = 12
1.7 참고 자료 = 13
Chapter 2. 반복적인 개발과 Unified Process = 15
2.1 가장 중요한 UP 개념 : 반복적인 개발 = 17
2.2 기타 UP의 최선의 실행기술과 개념 = 21
2.3 UP의 단계와 스케줄지향의 용어 = 22
2.4 UP 분야(discipline) - 작업흐름(workflow) = 23
2.5 프로세스 맞춤과 개발 사례 = 26
2.6 민첩한 UP = 28
2.7 순차 "폭포수" 생명주기 = 29
2.8 UP를 이해하지 못했음을 알려주는 신호 = 29
2.9 참고 자료 = 30
Chapter 3. 사례 연구 : NextGen POS 시스템 = 33
3.1 NextGen POS 시스템 = 33
3.2 아키텍쳐 계층과 사례 연구 = 34
3.3 이 책의 전략 : 반복적인 학습과 개발 = 35
Part 2. 도입(INCEPTION) = 37
Chapter 4. 도입(INCEPTION) = 39
4.1 도입 : 비유 = 40
4.2 도입은 매우 간단할 수도 있다. = 41
4.3 도입에서 시작되는 부산물들 = 41
4.4 도입을 이해하지 못했음을 알려주는 신호 = 43
Chapter 5. 요구사항의 이해 = 45
5.1 요구사항의 타입 = 46
5.2 참고 자료 = 48
Chapter 6. 사용사례 모델 : 요구사항 작성 = 51
6.1 목표와 이야기 = 52
6.2 배경 = 53
6.3 사용사례와 가치 추가 = 53
6.4 사용사례와 기능적인 요구사항 = 55
6.5 사용사례 타입과 형식 = 55
6.6 갖춘 형식의 예 : Process Sale = 56
6.7 사용사례 각 부분에 대한 설명 = 62
6.8 사용사례의 목표와 범위 = 68
6.9 주요 액터, 목표 및 사용사례 찾기 = 73
6.10 사용사례 보완 = 78
6.11 UI를 배제한 본질적 양식의 사용사례 작성 = 79
6.12 액터(actors) = 81
6.13 사용사례 다이어그램 = 82
6.14 문맥에 맞는 요구사항과 낮은 수준의 특징 목록 = 85
6.15 사용사례는 객체지향적이지 않음 = 87
6.16 UP 내의 사용사례 = 87
6.17 사례 연구 : NextGen 도입단계의 사용사례 = 92
6.18 참고 자료 = 92
6.19 UP 부산물과 프로세스 문맥 = 93
Chapter 7. 기타 요구사항 식별 = 95
7.1 NextGen POS 예제 = 96
7.2 NextGen 예제 : 보충 명세서의 일부분 = 96
7.3 설명 : 보충 명세서 = 100
7.4 NextGen 예제 : 비젼의 일부분 = 104
7.5 설명 : 비젼 = 107
7.6 NextGen 예제 : 용어집의 일부분 = 112
7.7 설명 : 용어집(데이터 사전) = 113
7.8 신뢰할 수 있는 명세 : 모순어법? = 115
7.9 프로젝트 웹사이트의 온라인 부산물 = 116
7.10 도입단계에는 UML을 많이 사용하지 않는가? = 116
7.11 UP의 기타 요구사항 부산물 = 116
7.12 참고 자료 = 119
7.13 UP 부산물과 프로세스 문맥 = 119
Chapter 8. 도입에서 정련으로 = 123
8.1 체크포인트 : 도입에서 어떤 일이 일어났는가? = 124
8.2 정련단계 들어가기 = 125
8.3 다음 반복단계 계획수립 = 127
8.4 반복단계 1의 요구사항과 중점사항 : 기초적인 OOA/D 기술 = 128
8.5 정련단계에 시작되는 부산물들 = 130
8.6 정련을 이해하지 못했음을 알려주는 신호 = 131
Part 3. 반복단계 1 = 133
Chapter 9. 사용사례 모델 : 시스템 순차 다이어그램 작성 = 135
9.1 시스템 행위 = 136
9.2 시스템 순차 다이어그램 = 136
9.3 SSD의 예 = 137
9.4 시스템간의 SSD = 138
9.5 SSD와 사용사례 = 139
9.6 시스템 이벤트와 시스템 경계 = 139
9.7 시스템 이벤트와 오퍼레이션 이름 지정 = 140
9.8 사용사례 본문 나타내기 = 141
9.9 SSD와 용어집 = 141
9.10 UP 내에서의 SSD = 142
9.11 참고 자료 = 143
9.12 UP 부산물 = 144
Chapter 10. 도메인 모델 : 개념의 가시화 = 145
10.1 도메인 모델 = 146
10.2 개념적 클래스 식별 = 150
10.3 판매 도메인에 대한 후보 개념적 클래스 = 154
10.4 도메인 모델링 가이드라인 = 155
10.5 비슷한 개념적 클래스들 - Register 대 "POST" = 158
10.6 비현실 세계 모델링 = 159
10.7 명세 또는 기술 개념적 클래스 = 159
10.8 UML 표기법, 모델, 그리고 방법론 : 다중 관점 = 162
10.9 표현적 차이 줄이기 = 165
10.10 예 : NestGen POST 도메인 모델 = 167
10.11 UP내에서의 도메인 모델 = 167
10.12 참고 자료 = 169
10.13 UP 부산물 = 170
Chapter 11. 도메인 모델 : 연관 추가 = 173
11.1 연관 = 173
11.2 UML 연관 표기법 = 175
11.3 연관 찾기 - 공통 연관 목록 = 176
11.4 연관 가이드라인 = 177
11.5 역할 = 177
11.6 연관은 어느 정도 상세해야 하는가? = 180
11.7 연관 이름 붙이기 = 180
11.8 두 타입간의 다중 연관 = 181
11.9 연관과 구현 = 182
11.10 NestGen POST 도메인 모델의 연관 = 182
11.11 NestGen POST 도메인 모델 = 184
Chapter 12. 도메인 모델 : 속성 추가 = 187
12.1 속성 = 187
12.2 UML 속성 표기법 = 188
12.3 유효한 속성 타입 = 188
12.4 비-기본 데이터 타입 클래스 = 191
12.5 설계 문제점 : 속성을 외래키로 사용하지 말라. = 193
12.6 모델링 속성의 양과 단위 = 193
12.7 NestGen 도메인 모델에서의 속성들 = 194
12.8 SalesLineItem과 Item간의 다중성 = 195
12.9 도메인 모델 결론 = 196
Chapter 13. 오퍼레이션 약정을 이용한 세부사항 추가 = 199
13.1 약정(contract) = 199
13.2 약정의 예 : enterItem = 200
13.3 약정의 각 부분 설명 = 201
13.4 종료조건 = 201
13.5 논의 : enterItem 종료조건 = 204
13.6 약정을 작성하면 도메인 모델을 수정하게 된다. = 205
13.7 언제 약정이 도움이 되는가? 약정과 사용사례의 비교는? = 206
13.8 가이드라인 : 약정 = 207
13.9 NestGen POST의 예 : 약정 = 208
13.10 도메인 모델 수정 = 209
13.11 약정, 오퍼레이션, 그리고 UML = 210
13.12 UP 내에서의 오퍼레이션 약정 = 212
13.13 참고 자료 = 215
Chapter 14. 현 반복단계의 요구사항에서 설계로 = 217
14.1 제대로 된 일을 반복적으로 하고, 일을 제대로 하라. = 217
14.2 지금까지의 작업에 몇 주가 걸리는 것은 아니다. = 218
14.3 객체 설계로 옮겨가기 = 218
Chapter 15. 상호작용 다이어그램 표기법 = 221
15.1 순차 다이어그램과 협력 다이어그램 = 222
15.2 협력 다이어그램의 예 : makePayment = 223
15.3 순차 다이어그램의 예 : makePayment = 224
15.4 상호작용 다이어그램의 중요성 = 224
15.5 일반적인 상호작용 다이어그램 표기법 = 226
15.6 기본 협력 다이어그램 표기법 = 227
15.7 기본 순차 다이어그램표기법 = 233
Chapter 16. GRASP : 책임을 이용한 객체 설계 = 239
16.1 책임과 메소드 = 240
16.2 책임과 상호작용 다이어그램 = 241
16.3 패턴 = 242
16.4 GRASP : 책임 할당의 일반적인 원리에 관한 패턴 = 244
16.5 UML 클래스 다이어그램 표기법 = 245
16.6 Information Expert(또는 Expert) 패턴 = 246
16.7 Creator 패턴 = 252
16.8 Low coupling 패턴 = 255
16.9 High Cohesion 패턴 = 259
16.10 Controller 패턴 = 264
16.11 객체 설계와 CRC 카드 = 274
16.12 참고 자료 = 275
Chapter 17. 설계 모델 : GRASP 패턴을 이용한 사용사례 실현 = 277
17.1 사용사례 실현 = 278
17.2 부산물에 대한 설명 = 279
17.3 NextGen 반복단계에서 사용사례 실현 = 283
17.4 객체 설계 : makeNewSale = 283
17.5 객체 설계 : enterItem = 286
17.6 객체 설계 : endSale = 291
17.7 객체 설계 : makePayment = 297
17.8 객체 설계 : startUp = 302
17.9 UI 계층에서 도메인 계층으로의 연결 = 307
17.10 UP에서의 사용사례 실현 = 309
17.11 요약 = 313
Chapter 18. 설계 모델 : 가시성 결정 = 315
18.1 객체들간의 가시성 = 315
18.2 가시성 = 316
18.3 UML에서 가시성의 표현 = 321
Chapter 19. 설계 모델 : 설계 클래스 다이어그램 생성 = 323
19.1 언제 DCD를 생성하는가 = 323
19.2 DCD의 예 = 324
19.3 DCD와 UP 용어 = 324
19.4 도메인 모델과 설계 모델 클래스의 비교 = 325
19.5 NextGen POS DCD 생성 = 326
19.6 멤버의 세부사항에 대한 표기법 = 335
19.7 DCD, 그리기, CASE 도구 = 337
19.8 UP에서의 DCD = 337
19.9 UP 부산물 = 338
Chapter 20. 구현 모델 : 설계를 코드로 사상하기 = 341
20.1 프로그래밍과 개발 프로세스 = 342
20.2 설계를 코드로 사상하기 = 344
20.3 DCD로부터의 클래스 정의 생성 = 344
20.4 상호작용 다이어그램으로부터 메소드 생성 = 348
20.5 코드에서의 컨테이너/컬렉션 클래스 = 350
20.6 예외와 오류 처리 = 350
20.7 Sale--makeLineItem 메소드 정의 = 351
20.8 구현의 순서 = 352
20.9 테스트-우선 프로그래밍 = 352
20.10 요약 : 설계를 코드로 사상하기 = 354
20.11 프로그램 솔루션 소개 = 355
Part 4. 반복단계 2 = 361
Chapter 21. 반복단계 2와 요구사항 = 363
21.1 반복단계 2의 중점사항 : 객체 설계와 패턴 = 363
21.2 반복단계 1에서 2로 = 363
21.3 반복단계 2 요구사항 = 365
21.4 반복단계 2에서 분석지향 부산물의 상세화 = 367
Chapter 22. GRASP : 책임 할당을 위한 더 많은 패턴들 = 371
22.1 Polymorphism 패턴 = 372
22.2 Pure Fabrication 패턴 = 375
22.3 Indirection 패턴 = 380
22.4 Protected Variations 패턴 = 382
Chapter 23. GoF 설계 패턴을 이용한 사용사례 실현 설계 = 391
23.1 Adapter(GoF) 패턴 = 392
23.2 설계 중의 "분석" 발견 : 도메인 모델 = 395
23.3 Factory(GoF) 패턴 = 397
23.4 Singleton(GoF) 패턴 = 399
23.5 결론 : 다양한 인터페이스 문제를 지닌 외부 서비스들 = 403
23.6 Strategy(GoF) 패턴 = 404
23.7 Composite(GoF)과 그 밖의 설계 패턴 = 409
23.8 Facade(GoF) 패턴 = 421
23.9 Observer/Publish-Subscribe/Delegation Event Model(GoF) = 425
23.10 결론 = 434
23.11 참고 자료 = 434
Part 5. 반복단계 3 = 435
Chapter 24. 반복단계 3과 요구사항 = 437
24.1 반복단계 3의 요구사항 = 437
24.2 반복단계 3의 중점사항 = 437
Chapter 25. 사용사례의 연관 = 439
25.1 포함(include) 관계 = 440
25.2 용어 : 구체적(Concrete), 추상(abstract), 베이스(Base), 추가(Addition) 사용사례 = 443
25.3 확장(extend) 관계 = 444
25.4 일반화(generalize) 관계 = 446
25.5 사용사례 다이어그램 = 446
Chapter 26. 일반화 모델링 = 449
26.1 도메인 모델을 위한 새로운 개념들 = 449
26.2 일반화(Generalization) = 452
26.3 개념적 수퍼클래스와 서브클래스의 정의 = 454
26.4 언제 개념적 서브클래스를 정의할 것인가? = 457
26.5 언제 개념적 수퍼클래스를 정의할 것인가? = 459
26.6 NextGen POS 개념적 클래스 계층도 = 459
26.7 추상 개념적 클래스(Abstract Conceptual Class) = 462
26.8 상태 변화 모델링 = 464
26.9 클래스 계층도와 소프트웨어상의 상속 = 465
Chapter 27. 도메인 모델 정제화 = 467
27.1 연관(association) 클래스 = 468
27.2 집합(aggregation)과 합성(composition) = 471
27.3 시간 간격과 제품 가격 - 반복단계 1에서의 에러 수정 = 475
27.4 연관 역할 이름 = 476
27.5 개념으로서의 역할 vs. 연관에서의 역할 = 476
27.6 유도 원소(Derived Elements) = 478
27.7 한정 연관(Qualified Associations) = 478
27.8 재귀적 연관(Reflexive Associations) = 479
27.9 순서화된 원소들 = 480
27.10 Package를 사용한 도메인 모델 조직화 = 480
Chapter 28. 새로운 SSD와 약정 첨가하기 = 487
28.1 새로운 시스템 순차 다이어그램 = 487
28.2 새로운 시스템 오퍼레이션 = 490
28.3 새로운 시스템 오퍼레이션 약정(Contract) = 490
Chapter 29. 상태차트 다이어그램에서의 행동 모델링 = 493
29.1 이벤트(Events), 상태(States), 전이(Transitions) = 493
29.2 상태챠트 다이어그램 = 494
29.3 UP에서의 상태챠트 다이어그램 = 495
29.4 사용사례 상태챠트 다이어그램 = 495
29.5 POS에 대한 사용사례 상태챠트 다이어그램 = 497
29.6 상태챠트 다이어그램이 유용한 클래스들 = 497
29.7 외부 및 내부 이벤트 기술 = 499
29.8 부가적인 상태챠트 다이어그램 표기법 = 501
Chapter 30. 패턴을 이용한 논리 아키텍쳐 설계 = 503
30.1 소프트웨어 아키텍쳐 = 503
30.2 아키텍쳐 패턴 : Layers(계층) = 506
30.3 모델 뷰(Model-View) 분리의 원리 = 529
30.4 참고 자료 = 532
Chapter 31. 설계 및 구현 모델 패키지의 조직화 = 533
31.1 패키지 조직화에 대한 지침 = 534
31.2 부가적인 UML 패키지 표기법 = 541
31.3 참고 자료 = 542
Chapter 32. 아키텍쳐 분석 및 SAD = 543
32.1 아키텍쳐 분석(Architectural Analysis) = 544
32.2 아키텍쳐의 타입 및 뷰 = 546
32.3 아키텍쳐 요인(Architectural Factors)들의 식별 및 분석 = 547
32.4 예제 : NextGen POS 아키텍쳐 요인표 = 551
32.5 아키텍쳐 요인들의 해결 : 기술적 측면 = 551
32.6 아키텍쳐 분석 주제(Theme) 요약 = 559
32.7 UP의 아키텍쳐 분석 = 560
32.8 참고 자료 = 566
Chapter 33. 객체와 패턴을 이용한 사용사례 실현 = 567
33.1 지역 서비스로의 실패전이(Failover) : 지역 캐싱(Caching) 성능 = 567
33.2 에러 처리 = 574
33.3 Proxy(GoF)를 통한 지역 서비스로의 실패전이(Failover) = 581
33.4 비기능적 요구사항 및 품질 요구사항의 설계 = 583
33.5 Adapter를 통한 외부 기계장치로의 접근 : 구매 vs 구축 = 584
33.6 연관된 객체 집단을 위한 Abstractor Factory(GoF) = 586
33.7 다형성을 이용한 Payments 처리 및 "Do It Myself" = 590
33.8 결론 = 596
Chapter 34. 패턴을 통한 지속성 프레임워크 설계 = 597
34.1 문제점 : 지속적 객체 = 598
34.2 해결책 : 지속성 프레임워크로부터의 지속성 서비스 = 599
34.3 프레임워크(Frameworks) = 599
34.4 지속성 시비스 및 프레임워크를 위한 요구사항 = 600
34.5 주요 아이디어 = 601
34.6 패턴 : 객체를 테이블로 표현(Representing Objects as Tables) = 601
34.7 UML 모델링 프로파일(Profile) = 602
34.8 패턴 : 객체 식별자(Object Identifier) = 603
34.9 Facade를 이용한 지속성 서비스에의 접근 = 604
34.10 객체들의 맵핑 : Database Mapper 혹은 Database Broker 패턴 = 605
34.11 Template Method 패턴을 통한 프레임워크의 설계 = 608
34.12 Template Method 패턴을 통한 유형화 = 608
34.13 MapperFactory를 통한 맵퍼 형상화 = 614
34.14 패턴 : 캐시관리(Cache Management) = 615
34.15 단일 클래스로의 SQL 문장 결합(Consolidating) 및 은닉(Hiding) = 616
34.16 트랜잭션 상태 및 패턴 = 617
34.17 Command 패턴을 이용한 트랜잭션의 설계 = 621
34.18 Virtual Proxy를 통한 늦은 유형화(Lazy Materialization) = 623
34.19 테이블에 관계를 표현하는 방법 = 626
34.20 PersistentObject 수퍼클래스 및 고려사항의 분리 = 627
34.21 미해결 이슈들 = 628
Part 6. 특별한 논제들 = 629
Chapter 35. 그리기와 도구들 = 631
35.1 고찰적인 설계와 가시적 사고 = 632
35.2 개발 프로세스 내에서 UML 그림을 그리는 것에 대한 제안 = 633
35.3 도구와 표본 특색들 = 636
35.4 두 번째 예 = 638
Chapter 36. 반복적 계획 및 프로젝트에 대한 이슈 소개 = 641
36.1 요구사항 등급화(ranking) = 642
36.2 프로젝트 위험도의 등급화 = 645
36.3 순응적 계획법(Adaptive Planning) vs. 예측적 계획법(Predictive Planning) = 646
36.4 단계 및 반복 계획 = 648
36.5 반복 계획 : 다음 반복에서 무엇을 수행할 것인가? = 649
36.6 반복 단계간의 요구사항 추적 = 650
36.7 초기 측정치의 (비)타당성 = 652
36.8 프로젝트 부산물의 조직화 = 653
36.9 팀 반복 스케쥴에 대한 이슈 = 654
36.10 UP 계획법에 대한 잘못된 이해를 언제 알 수 있는가? = 655
36.11 참고 자료 = 656
Chapter 37. 반복적 개발 및 UP에 대한 주석 = 657
37.1 부가적인 UP 실천 사항 및 개념들 = 657
37.2 구축(Construction) 및 전이(Transition) 단계 = 660
37.3 기타 실천 사항들 = 661
37.4 반복단계에 타임박스(Timebox)를 두는 이유 = 662
37.5 순차적인 폭포수형 생명주기(Waterfall Lifecycle) = 662
37.6 사용성 공학(Usability Engineering) 및 사용자 인터페이스 설계 = 669
37.7 UP 분석 모델(Analysis Model) = 669
37.8 RUP 제품 = 670
37.9 재사용에 대한 도전 및 신화(Myth) = 671
Chapter 38. 추가 UML 표기법 = 673
38.1 일반적 표기법 = 673
38.2 구현 다이어그램들(Implementation Diagrams) = 674
38.3 탬플릿(Parameterized, Generic) 클래스 = 676
38.4 활동 다이어그램(Activity Diagrams) = 677
참고문헌 = 679
용어집 = 689
찾아보기 = 697