목차
서장: 소프트웨어 아키텍처와 문서화 1
P1: 아키텍처의 역할 1
용어 설명: 소프트웨어 아키텍처 2
견해 소개: 아키텍처는 설계와 어떻게 다른가? 4
용어 설명: 문서화, 설명, 표현, 명세 8
P2: 아키텍처 문서 활용방안 10
P3: 인터페이스 12
P4: 뷰 13
용어 설명: 아키텍처 뷰 15
P5: 뷰타입과 스타일 18
P 5 1 뷰타입 18
P 5 2 스타일 18
P 5 3 뷰타입, 스타일, 뷰에 대한 요약 21
용어 설명: 모듈과 컴포넌트 22
P6: 좋은 문서를 만드는 7가지 규칙 24
P 6 1 규칙 1: 읽는 사람의 관점에서 문서를 작성한다 24
P 6 2 규칙 2: 불필요한 반복을 피한다 25
P 6 3 규칙 3: 모호함을 피한다 26
P 6 4 규칙 4: 표준 체계를 따른다 27
P 6 5 규칙 5: 근거를 남겨둔다 28
P 6 6 규칙 6: 문서를 항상 최신으로 유지하되 너무 앞서나가지 않는다 28
P 6 7 규칙 7: 목적에 맞게 작성됐는지 사후 검토한다 28
견해 소개: 화살표에 대한 고민 29
P7: 요약정리 30
P8: 토론 문제 31
P9: 더 읽을거리 32
1부: 소프트웨어 아키텍처 뷰타입과 스타일 35
1 1 뷰타입과 스타일 목록 35
I 1 1 모듈 뷰타입 35
I 1 2 컴포넌트와 커넥터 뷰타입 36
I 1 3 할당 뷰타입 38
1 2 스타일 지침 : 스타일 문서화 표준 구조 39
1장 모듈 뷰타입 41
1 1 개요 41
1 2 모듈 뷰타입의 요소, 관계, 속성 42
1 2 1 요소 43
1 2 2 관계 43
1 2 3 속성 44
용어 설명: 교체가능성 46
1 3 모듈 뷰타입이 적합한 상황 47
1 4 모듈 뷰타입 표기법 48
1 4 1 비공식 표기법 48
1 4 2 UML 48
1 5 다른 뷰타입과의 관계 49
1 6 요약정리 50
1 7 토론 문제 50
1 8 더 읽을거리 51
2장 모듈 뷰타입 스타일 53
2 1 분할 스타일 53
2 1 1 개요 53
2 1 2 요소, 관계, 속성 54
2 1 3 분할 스타일의 용도 55
2 1 4 분할 스타일 표기법 56
2 1 5 다른 스타일과의 관계 57
2 1 6 분할 스타일의 예제 57
용어 설명: 하위시스템 62
2 2 사용 스타일 64
2 2 1 개요 64
2 2 2 요소, 관계, 속성 64
2 2 3 사용 스타일의 용도 65
2 2 4 사용 스타일 표기법 65
2 2 5 다른 스타일과의 관계 67
2 2 6 사용 스타일의 예제 67
용어 설명: 사용 68
2 3 일반화 스타일 71
2 3 1 개요 71
2 3 2 요소, 관계, 속성 72
2 3 3 일반화 스타일의 용도 73
2 3 4 일반화 스타일 표기법 74
2 3 5 다른 스타일과의 관계 74
용어 설명: 일반화 76
2 3 6 일반화 스타일의 예제 77
2 4 계층 스타일 77
2 4 1 개요 77
2 4 2 요소, 관계, 속성 80
2 4 3 계층 스타일의 용도 82
2 4 4 계층 스타일 표기법 83
2 4 5 다른 스타일과의 관계 89
2 4 6 계층 스타일의 예제 92
용어 설명: 가상 기계 93
견해 소개: 거슬러 올라가는 소프트웨어 94
견해 소개: ‘수준’ 때문에 생기는 혼란 95
견해 소개: UML 클래스 다이어그램 남용금지! 97
2 5 요약정리 99
2 6 토론 문제 100
2 7 더 읽을거리 100
3장 컴포넌트와 커넥터 뷰타입 103
3 1 개요 103
3 2 C&C 뷰타입의 요소, 관계, 속성 106
3 2 1 요소 107
3 2 2 관계 110
3 2 3 속성 111
견해 소개: 커넥터가 정말 필요한가? 112
견해 소개: 커넥터 추상화 하기 114
3 3 C&C 뷰타입의 용도 116
견해 소개: 데이터 흐름과 제어 흐름 투영 117
3 4 C&C 뷰타입 표기법 118
3 5 다른 뷰타입과의 관계 118
3 6 요약정리 120
3 7 토론 문제 122
3 8 더 읽을거리 123
4장 컴포넌트와 커넥터 뷰타입 스타일 125
4 1 파이프와 필터 스타일 126
4 1 1 개요 126
4 1 2 요소, 관계, 속성 126
4 1 3 파이프와 필터 스타일의 용도 127
4 1 4 다른 스타일과의 관계 128
4 1 5 파이프와 필터 스타일의 사례 128
4 2 공유 데이터 스타일 129
4 2 1 개요 129
4 2 2 요소, 관계, 속성 129
4 2 3 공유 데이터 스타일의 용도 131
4 2 4 다른 스타일과의 관계 132
4 2 5 공유 데이터 스타일의 사례 132
4 3 발행 구독 스타일 133
4 3 1 개요 133
4 3 2 요소, 관계, 속성 133
4 3 3 발행 구독 스타일의 용도 134
4 3 4 다른 스타일과의 관계 135
4 3 5 발행 구독 스타일의 사례 135
4 4 클라이언트 서버 스타일 136
4 4 1 개요 136
4 4 2 요소, 관계, 속성 136
4 4 3 클라이언트 서버 스타일의 용도 138
4 4 4 다른 스타일과의 관계 138
4 4 5 클라이언트 서버 스타일의 사례 139
4 5 피어 투 피어 스타일 139
4 5 1 개요 139
4 5 2 요소, 관계, 속성 140
4 5 3 피어 투 피어 스타일의 용도 141
4 5 4 다른 스타일과의 관계 141
4 5 5 피어 투 피어 스타일의 사례 141
2부 실전 소프트웨어 아키텍처 문서화 185
6장 고급 개념 187
6 1 정보 분할과 뷰 패킷, 정제, 설명적 완결성 188
6 1 1 뷰 패킷 188
6 1 2 정제 191
6 1 3 설명적 완결성 192
6 2 컨텍스트 다이어그램 사용 195
6 2 1 최상위 수준 컨텍스트 다이어그램 196
6 2 2 컨텍스트 다이어그램의 내용 197
6 2 4 컨텍스트 다이어그램 표기법 198
6 2 5 컨텍스트 다이어그램에 대한 예제 200
6 3 결합 뷰 200
6 3 1 결합 뷰를 사용해야 하는 경우 201
6 3 2 대응의 유형 203
6 3 3 요소, 관계, 속성 205
6 3 결합 뷰 문서화 206
6 3 5 결합 뷰 예제 207
6 3 6 그 밖의 예제 208
6 4 가변성과 역동성 문서화 209
6 4 1 가변성 209
6 4 2 역동성 210
6 4 3 정보 기록 211
6 4 4 가변성과 역동성 표기법 212
견해 소개: 시점이란 무엇인가? 213
6 5 새로운 스타일 작성과 문서화 215
용어 설명: 스타일과 패턴 217
6 6 요약정리 219
6 7 토론 문제 220
6 8 더 읽을거리 221
7장 소프트웨어 인터페이스 문서화 223
7 1 개요 223
7 2 인터페이스 명세 226
7 3 인터페이스 문서 표준 구성 228
용어 설명: 예외와 오류 처리 233
7 4 인터페이스 문서와 관련된 이해관계자 237
7 5 인터페이스 문서 표기법 239
7 5 1 인터페이스의 존재 제시 239
7 5 2 형태정보 전달 241
7 5 3 의미정보 전달 242
7 5 4 요약 242
견해 소개: 다중 인터페이스 242
용어 설명: 호출규약, 인터페이스, API 245
7 6 인터페이스 문서화 예제 246
7 6 1 SCR 스타일의 인터페이스 246
7 6 2 IDL 252
7 6 3 맞춤형 표기법 252
7 6 4 XML 255
7 7 요약정리 257
7 8 토론 문제 258
7 9 더 읽을거리 258
8장 행위 문서화 259
8 1 구조를 넘어서 259
8 2 행위 문서화 위치 260
8 3 행위 문서화 필요성 260
8 3 1 시스템 분석 261
8 3 2 개발 작업 추진 262
8 4 문서화 내용 263
8 4 1 통신 방식 264
8 4 2 순서 제약사항 264
8 4 3 시간에 따라 발생하는 자극 265
8 5 행위 문서화에 쓰이는 언어와 표기법 266
8.5.1 추적trace 268
8 5 2 정적 모델 276
8 6 요약정리 284
8 7 토론 문제 285
8 8 더 읽을거리 285
9장 뷰 선택 289
9 1 이해관계자들에게 필요한 문서 290
견해 소개: 아키텍처 트레이드오프 분석 방법 302
9 2 선택하기 305
9 3 두 가지 예제 306
9 3 1 소규모 프로젝트 A-7E 306
9 3 2 대규모 프로젝트 ECS 308
9 4 요약정리 312
9 5 토론 문제 312
9 6 더 읽을거리 313
10장 문서 패키지 작성 315
10 1 문서를 하나로? 여러 개로? 315
견해 소개 ‘is’의 의미 316
10 2 뷰 문서화 317
견해 소개: 표현 방법도 중요해 321
10 3 여러 뷰를 고려한 문서화 323
10 3 1 어떻게 문서가 구성됐는가: 구성 정보 324
10 3 2 무엇을 아키텍처로 봤는가: 구성 내용 326
10 3 3 왜 아키텍처가 현재의 모습을 하고 있는가: 배경, 근거, 설계 제약사항 328
견해 소개: 전역 분석Global Analysis 332
10 4 소프트웨어 아키텍처 문서의 검증 335
견해 소개: 용어집을 만들면 좋았을 텐데 339
10 5 요약정리 340
10 6 토론 문제 340
10 7 더 읽을거리 341
11장 여러 뷰를 고려한 문서 작성에 대한 다양한 시각 뷰에 대한 다양한 시각 343
11 1 개요 343
11.2 래셔널 통합 프로세스(RUP) 크루첸 4+1 344
11 3 UML 348
11 3 1 클래스 다이어그램과 객체 다이어그램 348
11 3 2 컴포넌트 다이어그램 350
11 3 4 행위 다이어그램 351
11 4 지멘스 4 뷰 352
11 4 1 전역 분석 352
11 4 2 개념적 아키텍처 뷰 353
11 4 3 모듈 아키텍처 뷰 353
11 4 4 실행 아키텍처 뷰 354
11 4 5 코드 아키텍처 뷰 355
11 4 6 요약 355
11 5 C4ISR 아키텍처 프레임워크 356
11 5 2 공통 산출물 358
11.6 ANSI IEEE-1471-2000 360
11 7 데이터 흐름과 제어 흐름 363
11 7 1 데이터 흐름 뷰 363
11 7 2 제어 흐름 뷰 365
견해 소개: 그거 전부 다 추측이잖아요! 366
11 8 RM-ODP 371
11 9 아키텍처 문서화의 결말 373
11 9 1 아키텍처 설명 언어 374
11 9 2 상용 컴포넌트 375
11 9 3 하이퍼텍스트 문서 378
11 9 4 형상 관리 378
11 10 당부의 말 379
11 11 더 읽을거리 380