第1部分 概念
第1章 復雜性 2
1.1 復雜係統的結構 2
1.1.1 個人計算機的結構 3
1.1.2 植物和動物的結構 3
1.1.3 物質的結構 4
1.1.4 社會機構的結構 4
1.2 軟件固有的復雜性 5
1.2.1 定義軟件復雜性 5
1.2.2 為什麼軟件在本質上是復雜的 5
1.3 復雜係統的5個屬性 8
1.3.1 層次結構 8
1.3.2 相對本原 8
1.3.3 分離關注 9
1.3.4 共同模式 9
1.3.5 穩定的中間形式 9
1.4 有組織和無組織的復雜性 10
1.4.1 復雜係統的規範形式 10
1.4.2 處理復雜性時人的能力的局限 12
1.5 從混沌到有序 12
1.5.1 分解的作用 13
1.5.2 抽象的作用 16
1.5.3 層次結構的作用 16
1.6 復雜係統的設計 17
1.6.1 作為科學和藝術的工程 17
1.6.2 設計的含義 17
1.7 小結 19
第2章 對象模型 20
2.1 對象模型的演進 20
2.1.1 程序設計語言的換代 20
2.1.2 第一代和第二代早期程序設計語言的拓撲結構 22
2.1.3 第二代後期和第三代早期程序設計語言的結構 23
2.1.4 第三代後期程序設計語言的結構 23
2.1.5 基於對象和麵嚮對象的程序設計語言的結構 24
2.2 對象模型基礎 26
2.2.1 麵嚮對象編程 29
2.2.2 麵嚮對象設計 29
2.2.3 麵嚮對象分析 30
2.3 對象模型要素 30
2.3.1 抽象的意義 31
2.3.2 封裝的意義 35
2.3.3 模塊化的意義 38
2.3.4 層次結構的意義 41
2.3.5 類型的意義 46
2.3.6 並發的意義 47
2.3.7 持久的意義 49
2.4 應用對象模型 51
2.4.1 對象模型的好處 51
2.4.2 開放式問題 52
2.5 小結 52
第3章 類與對象 53
3.1 對象的本質 53
3.1.1 什麼是對象,什麼不是對象 53
3.1.2 狀態 55
3.1.3 行為 57
3.1.4 標識符 60
3.2 對象之間的關係 62
3.2.1 鏈接 62
3.2.2 聚閤 64
3.3 類的本質 65
3.3.1 什麼是類,什麼不是類 65
3.3.2 接口和實現 66
3.3.3 類的生命周期 68
3.4 類之間的關係 68
3.4.1 關聯 69
3.4.2 繼承 70
3.4.3 聚閤 78
3.4.4 依賴關係 79
3.5 類與對象的互動 79
3.5.1 類與對象的關係 79
3.5.2 類與對象在分析和設計中的角色 79
3.6 創建高品質的類與對象 80
3.6.1 評判一種抽象的品質 80
3.6.2 選擇操作 81
3.6.3 選擇關係 82
3.6.4 選擇實現 83
3.7 小結 84
第4章 分類 85
4.1 正確分類的重要性 85
4.1.1 分類的睏難 86
4.1.2 分類的增量和迭代本質 87
4.2 確定類和對象 88
4.2.1 經典方法和現代方法 89
4.2.2 麵嚮對象分析 92
4.3 關鍵抽象與機製 97
4.3.1 確定關鍵抽象 97
4.3.2 識彆機製 99
4.4 小結 101
第2部分 方法
第5章 錶示法 104
5.1 統一建模語言 104
5.1.1 簡單曆史迴顧 104
5.1.2 模型與多重視圖 105
5.1.3 圖分類 105
5.1.4 在實踐中使用圖 107
5.1.5 概念模型.邏輯模型和物理模型 108
5.1.6 工具的角色 108
5.1.7 麵嚮對象開發的産品 108
5.1.8 規模上的伸縮 109
5.1.9 UML的語法和語義 109
5.1.10 UML2.0信息資源 110
5.2 包圖 110
5.2.1 基本概念:包錶示法 110
5.2.2 基本概念:元素的可見性 111
5.2.3 基本概念:依賴關係 111
5.2.4 基本概念:包圖 113
5.2.5 高級概念:導入和訪問 114
5.3 組件圖 117
5.3.1 基本概念:組件錶示法 117
5.3.2 基本概念:組件圖 118
5.3.3 基本概念:組件接口 119
5.3.4 基本概念:組件實現 121
5.3.5 高級概念:組件的內部結構 122
5.4 部署圖 123
5.4.1 基本概念:工件錶示法 123
5.4.2 基本概念:節點錶示法 124
5.4.3 基本概念:部署圖 124
5.5 用例圖 126
5.5.1 基本概念:執行者 126
5.5.2 基本概念:用例 127
5.5.3 基本概念:用例圖 127
5.5.4 高級概念:[[include]]和[[extend]]關係 129
5.5.5 高級概念:泛化 133
5.6 活動圖 133
5.6.1 基本概念:動作 134
5.6.2 基本概念:開始和停止 134
5.6.3 基本概念:判斷節點和閤並節點 134
5.6.4 基本概念:分區 135
5.6.5 高級概念:分叉.結閤和並發 135
5.6.6 高級概念:對象流 138
5.6.7 高級概念:其他元素 138
5.7 類圖 138
5.7.1 基本概念:類錶示法 138
5.7.2 基本概念:類關係 140
5.7.3 高級概念:模闆(參數化)類 142
5.7.4 高級概念:可見性 143
5.7.5 高級概念:關聯端名稱和限定符 144
5.7.6 高級概念:約束 145
5.7.7 高級概念:關聯類和注解 148
5.8 序列圖 149
5.8.1 基本概念:對象與交互 149
5.8.2 基本概念:生命綫與消息 149
5.8.3 高級概念:銷毀事件 151
5.8.4 高級概念:執行說明 151
5.8.5 高級概念:交互使用 153
5.8.6 高級概念:控製結構 153
5.9 交互概述圖 155
5.9.1 基本概念:框 155
5.9.2 基本概念:控製流元素 155
5.9.3 基本概念:交互圖元素 156
5.10 組閤結構圖 157
5.10.1 基本概念:組閤結構的部分 157
5.10.2 基本概念:組閤結構的部分與接口 157
5.10.3 基本概念:組閤結構連接器 158
5.10.4 高級概念:協作.. 158
5.11 狀態機圖 159
5.11.1 基本概念:初始狀態.最終狀態和簡單狀態 160
5.11.2 基本概念:轉換與事件 160
5.11.3 高級概念:狀態活動——入口活動.執行活動和齣口活動 162
5.11.4 高級概念:控製轉換 162
5.11.5 高級概念:復閤狀態與嵌套狀態 163
5.11.6 高級概念:並發與控製 165
5.11.7 高級概念:子狀態機狀態 168
5.11.8 高級概念:其他狀態機圖元素 169
5.12 時間圖 170
5.12.1 基本概念:更多相同之處 170
5.12.2 基本概念:布局 170
5.12.3 基本概念:事件 171
5.12.4 基本概念:約束 171
5.12.5 高級概念:另一種錶示形式 172
5.12.6 高級概念:事件與消息 172
5.13 對象圖 173
5.13.1 基本概念:對象 173
5.13.2 基本概念:對象關係 173
5.13.3 高級概念:端點名稱和限定符 174
5.14 通信圖 175
5.14.1 基本概念:對象.鏈接和消息 175
5.14.2 基本概念:順序錶達式 176
5.14.3 高級概念:消息與同步 177
5.14.4 高級概念:迭代子句和警戒條件 178
5.15 小結 179
第6章 過程 181
6.1 首要原則 181
6.1.1 成功項目的特徵 181
6.1.2 追求理性的開發過程 184
6.2 宏觀過程:軟件開發生命周期 186
6.2.1 概述 187
6.2.2 宏觀過程的內容維:科目 188
6.2.3 宏觀過程的時間維:裏程碑和階段 190
6.2.4 宏觀過程的時間維:迭代 195
6.2.5 發行計劃 196
6.3 微觀過程:分析與設計過程 198
6.3.1 概述 198
6.3.2 抽象層次 199
6.3.3 活動 200
6.3.4 産品 201
6.3.5 微觀過程與抽象層次 203
6.3.6 識彆元素 205
6.3.7 確定元素間的協作 208
6.3.8 確定元素間的關係 211
6.3.9 詳細確定元素的語義 213
6.4 小結 216
第7章 實戰 217
7.1 管理和計劃 217
7.1.1 風險管理 218
7.1.2 任務計劃 218
7.1.3 開發評審 219
7.2 人員配備 220
7.2.1 資源配置 220
7.2.2 開發團隊角色 221
7.3 發布版本管理 223
7.3.1 配置管理和版本控製 223
7.3.2 集成 224
7.3.3 測試 224
7.4 復用 225
7.4.1 復用的元素 225
7.4.2 建立復用製度 225
7.5 質量保證和度量 226
7.5.1 軟件質量 226
7.5.2 麵嚮對象度量 226
7.6 文檔化 229
7.6.1 開發遺産 229
7.6.2 文檔化的內容 229
7.7 工具 230
7.7.1 工具種類 230
7.7.2 組織上的意義 231
7.8 特殊主題 231
7.8.1 領域特定問題 231
7.8.2 采納麵嚮對象技術 232
7.9 麵嚮對象開發的好處和風險 233
7.9.1 麵嚮對象開發的好處 233
7.9.2 麵嚮對象開發的風險 233
7.10 小結 235
第3部分 應用
第8章 係統架構——基於衛星的導航 238
8.1 先啓 238
8.1.1 衛星導航係統的需求 239
8.1.2 定義問題的邊界 240
8.1.3 決定使命用例 243
8.1.4 決定係統用例 245
8.2 精化 248
8.2.1 開發一個好的架構 248
8.2.2 定義架構開發活動 248
8.2.3 驗證所建議的係統架構 249
8.2.4 分配非功能需求和闡明接口 255
8.2.5 規定係統架構及其部署 257
8.2.6 分解係統架構 259
8.3 構造 265
8.4 後移交 265
8.4.1 添加新的功能 265
8.4.2 改變目標硬件 266
第9章 控製係統——交通管理 267
9.1 先啓 268
9.1.1 列車交通管理係統的需求 268
9.1.2 決定係統用例 270
9.2 精化 273
9.2.1 分析係統功能 274
9.2.2 定義TTMS架構 277
9.2.3 從係統工程到硬件和軟件工程 279
9.2.4 關鍵抽象和機製 281
9.3 構造 282
9.3.1 消息傳送 283
9.3.2 列車日程計劃 285
9.3.3 顯示信息 288
9.3.4 傳感器數據采集 289
9.3.5 發布版本管理 289
9.3.6 係統架構 290
9.3.7 子係統規格 291
9.4 後移交 293
第10章 人工智能——密碼分析 294
10.1 先啓 295
10.1.1 密碼分析需求 295
10.1.2 定義問題的邊界 296
10.1.3 黑闆框架的架構 297
10.1.4 知識源的分析 299
10.2 精化 299
10.2.1 黑闆對象 300
10.2.2 依賴和認定 301
10.3 構造 303
10.3.1 設計黑闆對象 304
10.3.2 設計知識源 308
10.3.3 設計控製器 313
10.3.4 集成黑闆框架 314
10.3.5 添加新的知識源 317
10.4 後移交 318
10.4.1 係統增強 318
10.4.2 改變需求 320
第11章 數據采集——氣象監測站 321
11.1 先啓 321
11.1.1 氣象監測站需求 321
11.1.2 定義問題的邊界 322
11.1.3 場景 330
11.2 精化 331
11.2.1 氣象監測係統用例 331
11.2.2 架構框架 338
11.3 構造 340
11.3.1 幀機製 340
11.3.2 發布計劃 343
11.3.3 傳感器機製 344
11.3.4 顯示機製 346
11.3.5 用戶界麵機製 346
11.4 後移交 349
第12章 Web應用——休假跟蹤係統 350
12.1 先啓 350
12.1.1 需求 350
12.1.2 用例模型 352
12.2 精化 353
12.2.1 部署視圖 354
12.2.2 邏輯視圖 355
12.2.3 進程視圖 357
12.2.4 實現視圖 359
12.2.5 用例視圖 359
12.3 構造 362
12.3.1 用戶體驗模型 362
12.3.2 分析和設計模型 364
12.3.3 實體 372
12.3.4 控製器 379
12.3.5 Web頁麵和用戶界麵 380
12.4 移交和後移交 384
附錄A 麵嚮對象編程語言 386
A.1 語言進化 386
A.2 Smalltalk 389
A.2.1 概述 390
A.2.2 例子 390
A.2.3 參考文獻 393
A.3 C++ 393
A.3.1 概述 394
A.3.2 例子 394
A.3.3 參考文獻 397
A.4 Java 397
A.4.1 概述 398
A.4.2 例子 399
A.4.3 參考文獻 402
附錄B 進一步閱讀 403
注解 409
術語錶 430
分類書目 438
· · · · · · (
收起)