デザインパターン オブジェクト指向分析/設計技法

1999年5月21日発刊

佐原伸

佐原伸 = Shin Sahara, ss@shinsahara.com
URL=http://shinsahara.com/
ゥ copyright 1996 Shin Sahara

目次 | 索引 | 図・表・プログラム・仕様 | 欠陥修正


欠陥修正

2002年9月26日

1999年8月25日

1999年6月7日

読者の吉武さんより、以下の欠陥についてご指摘があり、訂正しました。

の「強調」は「協調」の誤変換でした。

98ページで、2の24乗と誤解されるような表記になっていたのを避けるためです。

1999年5月24日

(6)青木淳 著、例題による!! オブジェクト指向分析設計テクニックリサーチ・センター、1994

 
目次

 目次は以下の通りです。
第1章から4章までと第7章は、目次の該当部分をクリックすればPDF形式でダウンロードできます。
他の章は、を買ってください。

注)ページ番号は、欠陥修正を反映しているため、実際の本と少しずれている可能性があります。

1. はじめに  13
2. デザインパターン入門  15
2.1 ソフトウェア開発の現状と問題点  15
2.1.1 動かないソフトウェア  15
2.1.2 保守できないソフトウェア  16
2.1.3 再利用できないソフトウェア  17
2.1.4 品質の悪いソフトウェア  17
2.2 よい設計とは?  18
2.2.1 外的品質要因  18
2.2.2 内的品質要因  20
2.2.3 モジュール性の原則  21
2.2.4 再利用可能なモジュール構造の要件  22
2.3 なぜデザインパターンか?  24
2.4 デザインパターンとは?  26
2.5 デザインパターンの例  27
2.6 デザインパターンの詳細を記述するための仕様記述言語について  30
3. デザインパターン解説  33
3.1 パターンの種類  33
3.2 デザインパターンの分類  35
3.3 生成パターン  35
3.3.1 抽象工場(Abstract Factory)  36
3.3.2 工場操作(Factory Method)  41
3.3.3 一枚札(Singleton)パターン  43
3.4  構造パターン  44
3.4.1 変換器(Adapter)パターン  45
3.4.2 混成(Composite)パターン  48
3.5 振る舞いパターン  51
3.5.1 命令(Command)パターン  52
3.5.2 通訳(Interpreter)パターン  54
3.5.3 観察者(Observer)パターン  59
3.5.4 状態(State)パターン  62
3.5.5 戦略(Strategy)パターン  64
3.6 分析パターン  66
3.6.1 当事者(Party)パターン  66
3.6.2 組織構造(Organization Structure)パターン  67
3.6.3 責任(Accountability)パターン  69
3.7  アーキテクチャパターン  70
3.7.1 階層(Layer)パターン  70
3.7.2 クライアント/サーバー・パターン  72
3.8 算法(Algorithm)パターン  79
3.8.1 辞書(Dictionary)パターン  79
4. デザインパターンによるOOA/OOD開発技法  85
4.1 デザインパターンを使ったシステム開発 の概要  85
4.2 ドメイン分析  87
4.2.1 ビジネスゴールの作成  88
4.2.2 用語集の作成  89
4.2.3 UseCase作成および制約の発見  90
4.2.4 ドメインオブジェクトの発見  108
4.2.5 オブジェクトの状態変化の記述  115
4.2.6 要求仕様記述  117
4.2.7 ドメインモデルの検証  131
4.3 システム分析  135
4.3.1 クラス図の作成  135
4.3.2 操作仕様の記述  143
4.3.3 状態遷移図の作成  145
4.3.4 分析モデルの検証  147
4.4 設計  149
4.4.1 アーキテクチャの決定  150
4.4.2 デザインパターンを考慮したクラス図の修正  151
4.4.3 効率の検討  156
4.4.4 操作仕様の変換  161
4.4.5 状態遷移の実装方法決定  169
4.4.6 関連の実装方法決定  174
4.4.7 実装図の作成  175
4.4.8 再利用性・保守性分析  177
4.4.9 設計モデルの検証  179
5. 制御系システムの分析と設計  181
5.1 分析  181
5.1.1 用語集の作成  182
5.1.2 UseCaseの作成  183
5.1.3 制約の発見と記述  186
5.1.4 制約を考慮したシナリオの見直し  188
5.1.5 状態遷移図の作成  188
5.1.6 状態遷移図の検証  190
5.1.7 クラス図の作成  191
5.1.8 オブジェクトを分類する  195
5.2 設計  195
5.2.1 アーキテクチャの決定  195
5.2.2 デザインパターンの適用  196
5.2.3 状態遷移図の修正  197
6. 導入の課題と今後の動向  199
6.1 デザインパターン導入の課題  199
6.1.1 デザインパターンの前にやっておくべきこと  199
6.1.2 体制の変革  200
6.1.3 デザインパターン作成・管理チームの必要性  200
6.1.4 デザインパターンだけでは、問題は解決しない  201
6.2 今後の動向  201
6.2.1 形式技術  202
6.2.2 オブジェクト指向技術  203
7. 付録  205
7.1 UML1.1概要  205
7.1.1 UseCase図  205
7.1.2 クラス図  206
7.1.3 状態遷移図  210
7.1.4 順序図  213
7.1.5 配置図  214
7.2 仕様記述言語(OCL)概要  215
7.2.1 RSLから追加した構文  216
7.2.2 OCLを使う場所  217
7.2.3 OCLの型  218
7.2.4 演算子の優先順位  219
7.2.5 注釈  219
7.2.6 未定義の値  219
7.2.7 特性(Property)  219
7.2.8 すべてのオブジェクトに共通の定義済みの操作  222
7.2.9  Collection  223
7.2.10  Collectionの既定義操作  223
7.3 参考文献  227
7.3.1 オブジェクト指向  227
7.3.2 デザインパターン  228
7.3.3 仕様記述  229
7.3.4 アルゴリズムとデータ構造  229
7.3.5 その他  230
7.4 関連URL  231
7.4.1 オブジェクト指向  231
7.4.2 デザインパターン  231
7.4.3 仕様記述  232
7.4.4 ビジネスオブジェクト  232


図・表・プログラム・仕様

注)ページ番号は、欠陥修正を反映しているため、実際の本と少しずれている可能性があります。

1. はじめに  13
2. デザインパターン入門  15
図1 定石の例 24
図2 観察者(Observer)パターンの例 27
図3 観察者(Observer)パターンのクラス図 28
図4 観察者(Observer)パターンの順序図 29
3. デザインパターン解説  33
プログラム3.1 プロダクトによる分岐の例 36
図5 抽象工場(Abstract Factory)パターンのクラス図 37
図6  抽象工場を適用したクラス図の例 39
図7 抽象工場を適用した順序図の例 40
プログラム3.2  抽象工場の普通の実装方法 40
プログラム3.3  同一操作方式 41
図8 工場操作(Factory Method)パターンのクラス図 42
図9 一枚札(Singleton)パターンのクラス図 43
図10 変換器(Adapter)パターンのクラス図 45
図11 プラガブル変換器(Pluggable Adapter)パターンのクラス図 47
プログラム3.1  プラガブル変換器オブジェクトの初期設定 47
図12 混成(Composite)パターンのクラス図 48
図13  混成(Composite)パターンが表す木構造の例 49
図14 親へのリンクを持った構成要素 50
図15 命令(Command)パターンのクラス図 52
図16 命令(Command)パターンの順序図 53
プログラム3.1 簡易言語の例 55
プログラム3.2 簡易言語の文法 55
図17 通訳(Interpreter)パターンのクラス図 56
図18 抽象構文木の例 58
プログラム3.1  状態による分岐 62
図19 状態(State)パターンのクラス図 62
図20 戦略(strategy)パターンのクラス図 64
図21 当事者(Party)パターンのクラス図 66
図22 普通に考えた組織構造のクラス図 67
図23 組織構造(Organization Structure)パターンのクラス図 68
図24 組織構造のオブジェクト図 68
図25 責任(Acountability)パターンのクラス図 69
図26 責任パターンで表す雇用関係 69
図27 責任パターンで表すコンサルティング関係 70
図28 階層(Layer)パターンの例 71
図29  3-Tier構成 72
プログラム3.1  ロック手順 77
図30 線形リスト構造 79
図31 線形リスト構造のクラス図 80
図32  2分木の構造 81
図33  2分木のクラス図 81
図34 ハッシュ表の構造 82
図35 ハッシュ表のクラス図 83
仕様1  HashTableクラスの検索操作の仕様 83
4. デザインパターンによるOOA/OOD開発技法  85
図36 ビジネスゴール(図書館)マトリクス 88
図37  UseCaseの階層 90
図38  図書館貸出管理システムのUseCase目次 91
図39  図書館貸出管理トップレベルのUseCase図 92
図40  貸出のUseCase図 93
仕様2  貸出のシナリオ 93
仕様3 返却のシナリオ 95
図41 会社クラスと人クラスの関連の例 97
仕様4 蔵書削除のシナリオ 98
図42 貸出状況検索のUseCase図l 99
仕様5 貸出記録検索のシナリオ 99
図43 蔵書管理のUseCase図 101
仕様6 蔵書登録のシナリオ 101
仕様7 蔵書検索のシナリオ 102
図44 利用者管理のUseCase図 104
仕様8 利用者登録のシナリオ 104
仕様9 利用者削除のシナリオ 105
仕様10 利用者検索のシナリオ 106
仕様11 図書館貸出管理の制約条件 107
図45 本と蔵書のクラス図の一部(叩き台) 108
仕様12 図書館貸出管理のドメインオブジェクトの責任と役割 109
図46 貸出の順序図 111
図47 返却の順序図 112
図48 蔵書検索の順序図 113
図49 図書館貸出管理のクラス図(たたき台) 114
図50 本実体の状態遷移図 116
図51 利用者オブジェクトの状態遷移図 117
図52 人関係のクラス図 118
仕様13 利用者クラスの仕様 119
仕様14 司書クラスの仕様 121
図53 著作物関係のクラス図 124
仕様15 著作物クラスの仕様 124
仕様16 本実体クラスの仕様 126
図54 図書館クラスと貸出クラス 127
仕様17 貸出クラスの仕様 127
仕様18 図書館クラスの仕様 129
仕様19 利用者クラスの借用数加算操作の仕様 134
図55 責任(Accountability)パターンのクラス図 136
図56 認証利用者の場合の責任(Accountability)パターン例 137
図57 司書が働く場合の責任(Accountability)パターン例 137
図58 図書館の貸出管理の全体クラス図 138
図59 利用者関係のクラス図 140
図60 本関係のクラス図 141
図61 貸出関係のクラス図 142
仕様20 司書クラスの仕様 143
仕様21 著作物クラスの仕様 144
仕様22 図書館クラスの仕様 145
図62 本オブジェクトの状態遷移図 146
図63 貸出オブジェクトの状態遷移図 146
仕様23 利用者クラスの仕様 147
仕様24 図書館クラスの仕様 148
図64 GemStoneの構成 151
図65 責任(Accountability)パターン関係のクラス図 152
図66 図書館貸出管理システムの全体クラス図 153
図67 人関係のクラス図 154
図68 本関係のクラス図 155
図69 貸出関係のクラス図 156
仕様25 題名検索ハッシュ関数の仕様 159
図70 題名リストとハッシュ表関係のクラス図 160
図71 後件・前件・初期設定の関係 162
仕様26 ハッシュ表の検索操作の仕様 167
仕様27  2分木の検索 168
仕様28 コマンド処理操作の手続き的仕様大筋 169
図72 利用者と状態(State)パターン 171
仕様29  利用者クラスのコマンド操作の仕様 171
仕様30 利用者状態クラスの操作仕様 172
仕様31 利用者未借用クラスの操作仕様 172
仕様32 利用者借用中の操作仕様 173
図73 配置図の例 176
5. 制御系システムの分析と設計  181
図74 巡航制御システムのUseCase 183
図75 速度維持のUseCase 184
図76 距離計測のUseCase 184
図77 平均速度のUseCase 185
仕様33 速度維持のシナリオ 185
仕様34 加速のシナリオ 186
仕様35 速度維持シナリオの後件 188
仕様36 加速シナリオの後件 188
図78 最上位レベルの状態遷移図 189
図79 巡航制御中の状態遷移図 190
図80 修正後の巡航制御中状態遷移図 191
図81 巡航制御システムクラス図のたたき台 191
図82 巡航制御システムのクラス図 192
仕様37 速度クラスの仕様 192
仕様38 巡航制御クラスの仕様 194
図83 継承を考えた巡航制御システムのクラス図 195
図84 デザインパターン適用後の巡航制御システムのクラス図 196
図85 状態(State)パターンの適用 197
図86 巡航制御オブジェクトの状態遷移図 198
図87 速度センサーオブジェクトの状態遷移図 198
6. 導入の課題と今後の動向  199
7. 付録  205
図88  UseCase図の例 206
図89 クラス図の例 207
図90 スコープの例 208
図91 関連クラスの例 209
図92 集約と1方向関連の例 210
図93 状態遷移図の例 211
仕様39 遷移の構文 211
仕様40 遷移の記述例 212
仕様41 内部遷移の構文 212
図94 履歴状態指標の例 213
図95 順序図の例 214
図96 配置図の例 215
表7.1 OCLの基本型 218
表7.2 スーパー型 218
図97 会社と人の関連 220
仕様42 特性の指定例 221
仕様43 不変条件の記述例 221
仕様44 オブジェクト共通の操作 222
仕様45 select操作使用例 223
仕様46 reject操作仕様例 224
仕様47 collect操作仕様例 224
仕様48 forAll操作仕様例 225
仕様49 exists操作仕様例 225


索引

注)ページ番号は、欠陥修正を反映しているため、実際の本と少しずれている可能性があります。

Symbols
-- 40, 94, 219
< 219
<= 219
<< >> 208
− 209, 226
∪ 226
∩ 226
∀ 225
∃ 225
# 218
$ 44, 207
* 29, 207, 219
+ 208, 219
. 96, 219
/ 219
: 217
:: 40, 217
:= 216
= 219, 226
-> 94, 96, 219, 222
> 219
>= 219
@pre 94, 217
Numerics
1方向関連 209
2000年問題 17
2-tier 72
2相コミット 150, 76
2相ロック 77, 150
2分木 50, 80
2分木の検索 168
3-tier 72, 150
4つ組 64
A
abstract 206
addDays 148
Alexander 26
allInstances 44, 222
allSupertypes 222
Alpert 228
and 219, 222
asBag 226
ASCII文字 216
asSequence 226
B
Bag 96, 218, 223
Bagの操作 226
Blaha 227
BNF記法 55
Boolean 218
Boolean型 206
Brown 228
C
C++ 24, 30, 151, 203
C0カバレージ 179
C1カバレージ 179
CafeOBJ 229, 232
CASE 64
CLOS 203
collect 224
Collection 96, 218, 223
Collection自身の特性 220
Collection操作 226
ConcurrentClean 202, 230
CORBA 228
CORBA/ORB 151
count 226
D
Date 148
David Harel 210
DeMarco 230
do 212
E
Eddy 227
entry 212
enum 218
excluding 148, 226
exists 129, 225
exit 212
F
forAll 125, 225
Fowler 228
G
Gamma 228
Gem 150
GemBuilder 150
GemStone 151
H
hash操作 82
Hay 228
Helm 228
I
IBM 31
if 100
if~then~elsif文 216
if-then-else-endif 219
implies 219, 221
includes 95, 100, 226
including 130, 226
Integer 218
intersection 100, 226
isEmpty 226
J
Jacobson 91
Java 30, 150, 203
Johnson 228
L
Lister 230
Lorensen 227
LOTOS 232
M
McDermid 230
Meyer 227
ML 202
Myers 230
N
new 41, 44
not 219, 222
notEmpty 95, 222, 226
O
O(1) 82
O(log2n) 50, 80
O(n) 158
OCL 14, 28, 29, 31, 85, 91, 202, 205, 215, 228, 229
oclAny 82, 167, 223
oclAsType 218
oclIsKindOf 222
oclIsTypeOf 222
oclType 44, 82, 222
OCLの型 218
OCLを使う場所 217
OMT 227
OOA 227
OOD 227
OOP 227
or 219
P
PoorPC 36
post 28, 44, 217
PowerPC 36
pre 217
Premerlani 227
private操作 140
pullモデル 61
pushモデル 61
Q
Q&A 227
R
RAISE 24, 229, 232
RAISE開発技法 229
Real 218
reject 224
remove 128
result 100, 119, 217
RPC(Remote Procedure Call) 74
RSL 31, 202, 215, 216, 229
Rumbaugh 227
S
SASE(Self-Addressed Stamped Envelope)パターン 60
select 103, 223
self 41, 119, 222
Sequence 96, 218, 223
Set 94, 96, 218, 223
Setの操作 226
size 44, 94, 222, 226
Smalltalk 24, 30, 150, 173, 203, 228, 231
Smalltalkホームページ 231
SRA 231
StandardML 230
STATECHART 64, 210
Stone 150
String 218
sum 226
T
T-gen 55
two-phase commit 76
U
UML 14, 85, 205, 228
union 96, 226
UseCase 183, 205, 227
UseCase作成 90
V
VDM 232
VDM-SL 202
Vlissides 228
W
while 216
Woolf 228
X
xor 219
Z
Z 232

アーキテクチャの決定 150
アーキテクチャパターン 34, 70
青木淳 227, 228
アクター 205
アルゴリズムとデータ構造 229
アレグザンダー 26
安全性 78, 187

囲碁 24
依存関係 208, 214
依存者 29
一枚札(Singleton)パターン 43, 139
イディオム 34, 228
イベントシグネチャ 211
イベント名 211, 212
イリノイ大学 231
医療機器制御ソフトウェア 18
入れ物(Composite) 49
インスタンス 213, 222
インスタンスの数 157
インタープリター 54

動かないソフトウェア 15, 16

永続性 75
エイホ 58, 145, 229
演算子の優先順位 219

85
オブジェクト指向開発方法論 34
オブジェクト指向システム開発 85
オブジェクトの特性(Property) 217
オブジェクトを分類する 195
オブジェクト指向 227, 231
オブジェクト指向グループ 231
オブジェクト指向技術 199

ガード条件 211, 212, 217
ガーベージコレクション機能 51
階層(Layer)パターン 70
外的品質要因 18
回転率 182
概念スキーマ 72
開発方法論 202
外部スキーマ 72
開放/閉鎖原則 22
返値 217
拡張性 19
隔離性 75
貸出 110
貸出オブジェクトの状態遷移図 146
貸出関係のクラス図 142, 156
貸出記録検索のシナリオ 99
貸出クラスの仕様 127
貸出の規則 138
貸出のシナリオ 93
貸出の順序図 111
加速のシナリオ 186
型 96
型とクラス 216
型のある言語 216
型の一致 218
型の変化 23
型名 217
活性化 213
株価情報 27
カプセル化 13
簡易言語の文法 55
簡易言語の例 55
観察者 29, 30
観察者(Observer) 59
観察者(Observer)パターン 27, 59, 72
観察者(Observer)パターン 27
頑丈さ 19
関数型言語 202, 230
勘所(Hotspot) 86, 178
勘所(Hotspot)の発見 86
関連 29, 110
関連URL 231
関連オブジェク 175
関連クラス 209
関連の実装方法 174
関連の端(AssociationEnd) 220

木構造 48, 79, 80
疑似イベント 212
技術者のコミュニケーション 26
基本型 218
基本パス 94
キャッシュ 50
境界条件 187
強結合 178
共通集合 226
共通部分 23
共有メモリー(Shared Memory) 74
距離計測 181
距離計測のUseCase 184

空間効率 157
組み合わせ算法 18
組合せの爆発 179, 202
クライアント/サーバー・パターン 72, 150
クラス名 28
クラスレベルの操作 44, 207
クラスをパラメータとして渡す 43
クラス図 206
クラス操作 207
グリース 229

計算時間 158
計算量 18, 50
形式技術 202
形式仕様技術 200
形式仕様記述言語 132
形式仕様ホームページ 232
継承 23, 28
継承を考えた巡航制御システムのクラス図 195
系統的プログラミング 25
欠陥の管理 132
現在速度 182
原始性 75
原子トランザクション 75
検証 131, 200
検証(Verification) 132
限度関数 165
限量子 225

公開操作 208
公開属性 208
後件 143, 162, 217
後件(post-condition) 91
工場操作(Factory Method) 41
工場操作(Factory Method)パターン 41
構成図 175
構成要素(Component ) 48
構造化技法 13
構造化の原則 16
構造化分析/設計技術 199
構造パターン 35, 44
構文解析ツール 57
効率の検討 156
互換性 20
顧客モジュール 23
子供 50
コミット点(commit point) 75
コミットログ(commit log) 75
今後の動向 201
混成(Composite)パターン 48, 79, 81, 152
コンパイラー 229
コンパイラーの教科書 58
コンパイラー理論 14

差 226
再帰可能 216
再帰構造 48
再帰的な呼び出し 49
再利用 26
再利用可能なモジュール構造の要件 22
再利用性 19
再利用できないソフトウェア 17
佐原伸 227, 230
サブクラス 206
参考文献 227
参照の透過性 202, 215
算法 199
算法(Algorithm) 64, 157, 161, 167
算法(Algorithm)パターン 34, 79, 158

時間 213
思考過程 14
時刻印(Time-stamp) 74
時刻印トランザクション 78
司書 109
司書クラスの仕様 121, 143
辞書(Dictionary)パターン 79, 175
実行効率 157
実施者(Invoker) 53
実装工程 161
実装図の作成 175
シナリオ 91
島内剛一 229
シミュレーションツール 157
シミュレーション・モデル 87
斜体 28
集合 94
集合演算 96
修正後の巡航制御中状態遷移図 191
修正を1カ所 40
私有操作 209
私有属性 209
集約 209
終了遷移 116
主体 28
主体(Subject ) 59
巡航制御オブジェクトの状態遷移図 198
巡航制御クラスの仕様 194
181
巡航制御(auto cruising)システム 181
巡航制御システムクラス図のたたき台 191
巡航制御システムのUseCase 183
巡航制御システムのクラス図 192
巡航制御中の状態遷移図 190
順序 223
順序図 30, 110, 213
照会操作 220
仕様記述 87, 229, 232
仕様記述言語 14, 15, 30, 91, 202, 215, 229
仕様記述言語の教科書 229
条件分岐 173
定石 25
状態遷移 116
状態遷移図 145, 189, 200, 210
状態遷移図の検証 190
状態遷移図の作成 188
状態遷移の実装方法 169
状態遷移マシン 63
状態による分岐 62
状態(State)パターン 62, 170, 197
状態変化の記述 115
状態マシン・エンジン 173
状態マシン名 212
状態名 212
情報隠蔽 13, 22
証明可能 202
証明技術 200
証明規則 132
省略 123
初期遷移 116, 212
新規保守 17

数学 24, 202
スーパークラス 28, 206
スーパー型 96, 218, 222
少ないインタフェース 21
少なく小さいインタフェース 179
スコープ(有効範囲) 208
ステレオタイプ 208
スパイラル型の開発 200
スロットル位置 183

正確さ 19
正規表現 55, 145, 157
制御の戻り 213
生産性 230
生成パターン 35
正当性 200
正当性チェック(Justification) 132
生命線 213
生命に関わらない(Mission Critical)システム 203
生命に関わるシステム(Safety Critical System) 132
生命に関わる(Safety Critical)システム 202
制約 208
制約条件 107
制約の記述 217
制約の発見 90
制約の発見と記述 186
積項 162
責任と役割 109
責任(Accountability)パターン 69, 136, 152
責任(Accountability)パターン関係のクラス図 152
責任(Accountability)パターンのクラス図 136
責任(Accountability)パターン例 137
設計モデル 149
設定速度 183
遷移 211, 212
遷移の記述例 212
線形リスト構造 79
前件 143, 162, 217
前件(pre-condition) 91
宣言的仕様 87, 93, 161
宣言的仕様記述 202
専門家になるステップ 24
戦略(Strategy)パターン 64, 79, 197

操作 28
操作のインタフェース 143
蔵書検索のシナリオ 102
蔵書検索の順序図 113
送付句 211
ソースプログラムをコピー 17
属性 28, 212, 220
測定ツール 157
速度 182
速度維持のUseCase 184
速度維持のシナリオ 185
速度クラスの仕様 192
速度センサーオブジェクトの状態遷移図 198
速度変換係数 183
束縛変数 166
組織構造(Organization Structure) 68
組織構造のオブジェクト図 68
組織構造(Organization Structure)パターン 67
その他のパターン 70
ソフトウェア開発の現状と問題点 15
ソフトウェアの作り方 200
ソフトウェア科学 199
ソフトウェア工学 199, 230

ターゲット(Target ) 45
第1次オンラインシステム 17
第2次オンラインシステム 16
大域変数 21
大艦巨砲主義 200
大局観 25
対象式 211
代数仕様記述言語CafeOBJ 232
代数的仕様記述言語 CafeOBJ 229
体制の変革 200
代替パス 94
代入 31
題名検索 158
題名検索ハッシュ関数の仕様 159
題名リストとハッシュ表関係のクラス図 160
多重度 29, 220
多相 177
正しいモデル 18
段階的詳細化 162, 202, 229
段階的詳細化技術 200
ダングリング参照 62

小さいインタフェース 22
小さいチーム 200
小さなモジュール 178
遅延評価(Lazy Evaluation) 59
注釈 219
抽象化 92
抽象クラス 28, 114, 118, 177, 206
抽象工場 37
抽象工場(Abstract Factory) 36
抽象構文木 57
抽象構文木の例 58
抽象製品 37
抽象操作 118, 206
抽象データ型 199
抽象的結合 30
重複 223
直列化可能性 75, 77
著作物関係のクラス図 124
著作物クラスの仕様 124
著者 110

通訳系 54
通訳(Interpreter)パターン 54, 56, 174

データ構造と算法 23
デザインパターン 24, 26, 33, 151, 228, 231
デザインパターン教科書 228
デザインパターン作成・管理チーム 200
手筋 25
テスト 179, 230
テストケース 132
手続き的仕様 93, 161, 164
デッドロック 77

同一操作方式 41
透過性 31
動作式 211
当事者(Party)パターン 66, 152
同値 226
東野高校 26
トーマス 228
特性(Property) 96, 219
特性(Property)の結合 221
図書館 109
85
図書館貸出管理システム 85
図書館貸出管理システムの全体クラス図 153
図書館貸出管理のクラス図(たたき台) 114
図書館クラスと貸出クラス 127
図書館クラスの仕様 129, 145
図書館の貸出管理の全体クラス図 138
ドメインオブジェクトの発見 108
ドメイン知識 72
ドメイン分析 87
トランザクション 74

内的品質要因 20
内部スキーマ 72
内部遷移 212
中川 中 229
ナビゲーション言語 217

人間の自然なコミュニケーション 203

葉(Leaf ) 48
排他的ロック 77
配置図 176, 214
パス(Path) 16
破線の矢印 111, 208, 213, 214
パターン 24
パターン・ホームページ 231
パタン・ランゲージ 26
ハッシュ関数 82, 158
ハッシュ表 79, 82, 158
ハッシュ法 158
パラメータ化クラス(テンプレート) 43
パラメータ化クラス 178

ピープルウェア 14, 201, 230
悲観的並行制御 78
飛行機の制御ソフトウェア 18
ビジネスオブジェクト 232
ビジネスゴールの作成 88
人関係のクラス図 154
品質 230
品質の悪いソフトウェア 17

副作用 215
複製(Replication) 78
複製(replication) 150
蓋 164
部分木 50
部分全体構造 48
不変条件 217
プラガブル変換器 47
プラガブル変換器(Pluggable Adapter) 46
フリーソフト 231
振る舞いパターン 35, 51
フロー制御 31, 215
プロジェクト管理 14
プロセス間通信(IPC=Inter-Process Communication) 74
プロセスパターン 34
プロダクト 36
プロダクトによる分岐 36
プロトタイプ 157
プロトタイプ作成 87
分岐 40
分岐が発生する弊害 36
分散OODB 150
分散処理 72
分析・設計方法論 13
分析パターン 33, 228
分析モデル 135
文法 54
文脈自由文法 54
分野 110

平均速度 183
平均速度のUseCase 185
平均速度表示 182
並行実行 59
並行性制御 76
並行タスク 174
変換器 46
変換器(Adapter)クラス 196
変換器(Adapter)パターン 45, 57
変換対象(Adaptee) 196
返却のシナリオ 95
返却の順序図 112
変更管理(ChangeManager)オブジェクト 60
変更余波 22, 23, 27, 42, 86, 170
変数への代入 216

包含関係 110
ポーリング 61
保護 78
保守できないソフトウェア 16
保守不能 16
本 109
本オブジェクトの状態遷移図 146
本関係のクラス図 141, 155
本実体 109
本実体クラスの仕様 126
本実体の状態遷移図 116
本と蔵書のクラス図の一部(叩き台) 108
本物証明(Authentication) 78

間違ったモデル 18
マルボー 228

ミクロの効率化 71
短い周期で分析・設計・実装 200
未定義の値 219
宮本勲 230
明星学園 26

明示的なインタフェース 22
命令(Command) 53
命令の再実行 52
命令の取り消し 52
命令の履歴 54
命令(Command)パターン 52, 54
メタな方法 25
メッセージ 213
メッセージの通り道 29
メンバー関数 207

モジュール性の原則 21
モジュールの組み合わせやすさ 20
モジュールの分解しやすさ 20
モジュールの保護性 21
モジュールの連続性 21
モジュールの分かりやすさ 20
モデルの検証 87
モデルの作成と修正 86

ヤコブソン 90, 227

有限状態マシン 169, 173
有効性確認(Validation) 131
有用性 187

よい設計 18
良い設計 15, 18
良い設計のための指針 18
要求仕様 17
用語集 182
用語集の作成 89
要素の削除 226
要素の追加 226

楽観的並行制御 77

利用者 109
利用者オブジェクトの状態遷移図 117
利用者関係のクラス図 140
利用者クラスの仕様 119, 147
利用者検索のシナリオ 106
利用者削除のシナリオ 105
利用者削除不能状態 105
利用者状態クラスの操作仕様 172
利用者登録のシナリオ 104
利用者と状態(State)パターン 171
利用者未借用クラスの操作仕様 172
履歴状態指標(history state indicator) 116, 213
リンク 114, 157, 207

列挙型 218
レビューの進め方 134

ロール名 29, 207, 220
ロック 150

和 226