《軟體工程與計算(卷二):軟體開發的技術基礎》是2018年出版的圖書,作者是丁二玉。
基本介紹
- 中文名:《軟體工程與計算(卷二):軟體開發的技術基礎》
- 作者:丁二玉
- 出版時間:2018年04月20日
- ISBN:978-7-111-40750-8
- 定價:55 元
- 開本:16 開
- 字數:450千字
內容簡介,目錄,
內容簡介
本書是國家精品課程《計算與軟體工程》系列課程的第二門付洪課程配套教材。講授經典的軟體工程方法,並涉及軟體工程歷史和職業技能,教會學生使用軟體工程理念指導程式設計,以小組方式進行中大規模軟體開發。注重軟體工程的基本理論和實踐方法,著重培養學生套用規範化、系統化和定量化的方法來分析和解決複雜軟體開發問題的工程化能力。
目錄
前員愉棵言
第一部分 軟體工程概論
第1章 軟體工程基礎 2
1.1 軟體 2
1.1.1 軟體獨立於硬體 2
1.1.2 軟體是一種工具 2
1.1.3 軟體的核心是程式 3
1.1.4 軟體開發遠比編程要複雜 3
1.1.5 套用軟體基於現實又高於現實 4
1.2 軟體工程 4
1.2.1 定義 4
1.2.2 軟體工程是一種工程活動 4
1.2.3 軟體店妹蘭工程的動機 5
1.2.4 軟體工程是科學性、實踐性和工藝性並重的 6
1.2.5 軟體工程追求足夠好,不是最好 8
1.2.6 軟體工程的產品是基於虛擬計算機的軟體方案 8
1.2.7 軟體工程的最終目簽協懂臭的 9
1.3 軟體工程概覽 9
1.3.1 軟體工程知識域 9
1.3.2 軟體開發活動 11
1.3.3 軟體工程的角色分工 13
1.4 習題 14
第2章 軟體工程的發展 15
2.1 軟體工程的發展脈絡 15
2.2 20世紀50年代的軟體工程 17
2.3 20世紀60年代的軟體工程 19
2.4 20世紀70年代的軟體工程 22
2.5 20世紀80年代的軟體工程 26
2.6 20世紀90年代的軟體工程 31
2.7 21世紀00年代的軟體工程 37
2.8 習題 39
第二部分 項目啟動
第3章 示例項目描述 42
3.1 背景 42
3.2 目標 42
3.3 系統用戶 42
3.4 用戶訪談要點 43
3.5 項目實踐過程 47
第4章 項目管理基礎 48
4.1 項目和項目管理 48
4.2 團隊組織與管理 49
4.2.1 團隊的特徵 49
4.2.2 團隊結構 49
4.2.3 團隊建府轎乎催設 51
4.3 軟體質量保障 53
4.3.1 軟體質量 53
4.3.2 質量保障 55
4.3.3 評審 56
4.3.4 質量度量 57
4.4 軟體配置管理 57
4.4.1 配置管理動機 57
4.4.2 配置項 58
4.4.3 基線 58
4.4.4 配置管理活動 59
4.4.5 變更控制 60
4.5 項目實踐 62
4.6 習題 62
第三部分 需求開發階段
第5章 軟體需求基礎 66
5.1 引言 66
5.2 需求工程基礎 67
5.2.1 需求工程簡介 67
5.2.2 需求工程活動 67
5.2.3 需求獲取 68
5.2.4 需求分析 69
5.2.5 需求規格說明 70
5.2.6 需求驗證 70
5.2.7 需求管理 71
5.3 需求基礎 71
5.3.1 需求 71
5.3.2 需求的層次性 71
5.3.3 結合層次性的需求開發 73
5.3.4 區分需求、問題域與規格說明 74
5.4 需求分類 75
5.4.1 需求譜系 75
5.4.2 軟體需求的分類 76
5.5 項目實踐 79
5.6 習題 80
第6章 需求分析方法 82
6.1 需求分析基礎 82
6.1.1 需求分析的原因 82
6.1.2 需求分析模型 83
6.2 結構化分析 84
6.2.1 結構化分析方法 84
6.2.2 數據流圖 85
6.2.3 實體關係圖 90
6.3 慨虹戀面向對象分析 92
6.3.1 面向對象分析方法 92
6.3.2 詢協擔用例 93
6.3.3 用例圖 94
6.3.4 用例描述 96
6.3.5 概念類圖(領域模型) 98
6.3.6 互動圖(順序圖) 104
6.3.7 狀態圖 106
6.4 使用需求分析方法細化和明確需求 108
6.4.1 細化和明確需求內容 108
6.4.2 建立系統級需求 109
6.5 項目實踐 112
6.6 習題 113
第7章 需求文檔化與驗證 115
7.1 文檔化的原因 115
7.2 需求文檔基礎 115
7.2.1 需求文檔的交流對象 115
7.2.2 用例文檔 116
7.2.3 軟體需求規格說明文檔 116
7.3 需求文檔化要點 118
7.3.1 技術文檔寫作要點 118
7.3.2 需求書寫要點 119
7.3.3 軟體需求規格說明文檔書寫要點 120
7.4 評審軟體需求規格說明文檔 121
7.4.1 需求驗證與確認 121
7.4.2 評審需求的注意事項 121
7.5 以需求為基礎開發系統測試用例 122
7.5.1 開發測試用例套件 123
7.5.2 開發測試用例 125
7.6 度量需求 125
7.7 將需求製品納入配置管理 129
7.8 項目實踐 130
7.9 習題 130
第四部分 軟體設計
第8章 軟體設計基礎 133
8.1 軟體設計思想的發展 133
8.2 軟體設計的核心思想 134
8.3 理解軟體設計 135
8.3.1 設計與軟體設計 135
8.3.2 工程設計與藝術設計 136
8.3.3 理性主義和經驗主義 137
8.3.4 軟體設計的演化性 137
8.3.5 軟體設計的決策性 138
8.3.6 軟體設計的約束滿足和多樣性 138
8.4 軟體設計的分層 139
8.5 軟體設計過程的主要活動 140
8.6 軟體設計的方法和模型 140
8.6.1 軟體設計的方法 140
8.6.2 軟體設計的模型 141
8.7 軟體設計描述 141
8.7.1 設計視圖和設計圖 142
8.7.2 設計視角和設計關注 143
8.7.3 需求和涉眾 144
8.7.4 設計理由 144
8.7.5 設計描述的模板 145
8.7.6 軟體設計文檔書寫要點 145
8.8 項目實踐 146
8.9 習題 146
第9章 軟體體系結構基礎 148
9.1 軟體體系結構的發展 148
9.2 理解軟體體系結構 148
9.2.1 定義 148
9.2.2 區分軟體體系結構的抽象與實現 149
9.2.3 部件 150
9.2.4 連線件 150
9.2.5 配置 151
9.3 體系結構風格初步 153
9.3.1 主程式/子程式 153
9.3.2 面向對象式 154
9.3.3 分層 156
9.3.4 MVC 157
9.4 項目實踐 159
9.5 習題 159
第10章 軟體體系結構設計與構建 160
10.1 體系結構設計過程 160
10.1.1 分析關鍵需求和項目約束 160
10.1.2 選擇體系結構風格 162
10.1.3 軟體體系結構邏輯設計 162
10.1.4 軟體體系結構實現 165
10.1.5 完善軟體體系結構設計 170
10.1.6 定義構件接口 172
10.2 體系結構的原型構建 173
10.2.1 包的創建 173
10.2.2 重要檔案的創建 174
10.2.3 定義構件之間的接口 174
10.2.4 關鍵需求的實現 175
10.3 體系結構集成與測試 175
10.3.1 集成的策略 175
10.3.2 樁、驅動與集成測試用例 177
10.4 軟體體系結構設計文檔描述 180
10.5 體系結構評審 181
10.6 項目實踐 181
10.7 習題 182
第11章 人機互動設計 183
11.1 引言 183
11.2 人機互動設計的目標 184
11.3 人機互動設計的人類因素 185
11.3.1 精神模型 185
11.3.2 差異性 186
11.4 人機互動設計的計算機因素 186
11.4.1 可視化設計 186
11.4.2 常見界面類型 187
11.5 人機互動設計的互動性 188
11.5.1 導航 188
11.5.2 反饋 189
11.5.3 一些人機互動設計原則 190
11.6 人機互動設計過程 192
11.6.1 基本過程 192
11.6.2 示例 193
11.7 項目實踐 195
11.8 習題 195
第12章 詳細設計的基礎 197
12.1 詳細設計概述 197
12.1.1 詳細設計出發點 197
12.1.2 詳細設計的上下文 198
12.2 結構化設計 199
12.2.1 結構化設計的思想 199
12.2.2 結構化設計的過程 200
12.3 面向對象設計 202
12.3.1 面向對象設計的思想 202
12.3.2 面向對象設計的過程 202
12.3.3 通過職責建立靜態模型 203
12.3.4 通過協作建立動態模型 206
12.4 為類間協作開發集成測試用例 210
12.5 詳細設計文檔描述 212
12.6 詳細設計的評審 213
12.7 項目實踐 213
12.8 習題 213
第13章 詳細設計中的模組化與信息隱藏 215
13.1 模組化與信息隱藏思想 215
13.1.1 設計質量 215
13.1.2 模組化與信息隱藏思想的動機 215
13.1.3 模組化與信息隱藏思想的發展 216
13.2 模組化 217
13.2.1 分解與模組化 217
13.2.2 結構化設計中的耦合 219
13.2.3 結構化設計中的內聚 220
13.2.4 回顧:MSCS系統設計中的模組化思想 221
13.3 信息隱藏 222
13.3.1 抽象與信息隱藏 222
13.3.2 信息與隱藏 224
13.3.3 模組說明 225
13.3.4 回顧:MSCS系統設計中的信息思想 226
13.4 習題 226
第14章 詳細設計中面向對象方法下的模組化 228
14.1 面向對象中的模組 228
14.1.1 類 228
14.1.2 類之間的聯繫 228
14.2 訪問耦合 229
14.2.1 訪問耦合的分析 229
14.2.2 降低訪問耦合的方法 230
14.3 繼承耦合 234
14.3.1 繼承耦合的分析 234
14.3.2 降低繼承耦合的方法 235
14.4 內聚 237
14.4.1 面向對象中的內聚 237
14.4.2 提高內聚的方法 238
14.5 耦合與內聚的度量 241
14.5.1 耦合的度量 241
14.5.2 內聚的度量 242
14.6 項目實踐 243
14.7 習題 243
第15章 詳細設計中面向對象方法下的信息隱藏 246
15.1 封裝類的職責 246
15.1.1 類的職責 246
15.1.2 封裝——分離接口與實現 247
15.1.3 封裝實現細節 247
15.2 為變更而設計 251
15.2.1 封裝變更/開閉原則 251
15.2.2 多態 252
15.2.3 依賴倒置原則 253
15.2.4 總結 257
15.3 項目實踐 257
15.4 習題 258
第16章 詳細設計的設計模式 262
16.1 設計模式基礎 262
16.2 可修改性及其基本實現機制 262
16.3 策略模式 265
16.3.1 典型問題 265
16.3.2 設計分析 266
16.3.3 解決方案 266
16.3.4 模式實例 268
16.4 抽象工廠模式 270
16.4.1 典型問題 270
16.4.2 設計分析 272
16.4.3 解決方案 272
16.4.4 模式實例 274
16.5 單件模式 276
16.5.1 典型問題 276
16.5.2 設計分析 276
16.5.3 解決方案 276
16.5.4 模式實例 277
16.6 疊代器模式 277
16.6.1 典型問題 277
16.6.2 設計分析 279
16.6.3 解決方案 279
16.6.4 模式實例 280
16.7 項目實踐 280
16.8 習題 280
第五部分 軟體構造、測試、交付與維護
第17章 軟體構造 282
17.1 概述 282
17.1.1 軟體構造的定義 282
17.1.2 軟體構造是設計的延續 283
17.2 軟體構造活動 283
17.2.1 詳細設計 283
17.2.2 編程 284
17.2.3 測試 284
17.2.4 調試 285
17.2.5 代碼評審 286
17.2.6 集成與構建 288
17.2.7 構造管理 288
17.3 軟體構造實踐方法 288
17.3.1 重構 289
17.3.2 測試驅動開發 291
17.3.3 結對編程 295
17.4 項目實踐 295
17.5 習題 296
第18章 代碼設計 298
18.1 設計易讀的代碼 298
18.1.1 格式 298
18.1.2 命名 302
18.1.3 注釋 302
18.2 設計易維護的代碼 304
18.2.1 小型任務 305
18.2.2 複雜決策 306
18.2.3 數據使用 308
18.2.4 明確依賴關係 308
18.3 設計可靠的代碼 308
18.3.1 契約式設計 308
18.3.2 防禦式編程 310
18.4 使用模型輔助設計複雜代碼 310
18.4.1 決策表 311
18.4.2 偽代碼 311
18.4.3 程式流程圖 313
18.5 為代碼開發單元測試用例 313
18.5.1 為方法開發測試用例 313
18.5.2 使用Mock Object測試類方法 313
18.5.3 為類開發測試用例 315
18.6 代碼複雜度度量 316
18.7 問題代碼 317
18.8 項目實踐 318
18.9 習題 319
第19章 軟體測試 320
19.1 引言 320
19.1.1 驗證與確認 320
19.1.2 軟體測試的目標 321
19.1.3 測試用例 321
19.1.4 樁與驅動 321
19.1.5 缺陷、錯誤與失敗 322
19.2 測試層次 323
19.2.1 測試層次的劃分 323
19.2.2 單元測試 323
19.2.3 集成測試 324
19.2.4 系統測試 325
19.3 測試技術 325
19.3.1 測試用例的選擇 325
19.3.2 隨機測試 326
19.3.3 基於規格的技術——黑盒測試方法 327
19.3.4 基於代碼的技術——白盒測試方法 329
19.3.5 特定測試技術 331
19.4 測試活動 331
19.5 測試度量 334
19.6 項目實踐 334
19.7 習題 335
第20章 軟體交付 336
20.1 安裝與部署 336
20.1.1 安裝 336
20.1.2 部署 337
20.2 培訓與文檔支持 338
20.2.1 培訓 338
20.2.2 文檔支持 339
20.3 項目評價 341
20.3.1 項目評價的原因 341
20.3.2 項目評價的內容 341
20.3.3 項目評價的方法 341
20.3.4 注意事項 343
20.4 項目實踐 343
20.5 習題 344
第21章 軟體維護與演化 345
21.1 軟體維護 345
21.1.1 軟體可修改性與軟體維護 345
21.1.2 軟體維護的類型 345
21.1.3 軟體維護的高代價性 346
21.1.4 開發可維護的軟體 348
21.1.5 軟體維護過程與活動 349
21.2 軟體演化 350
21.2.1 演化與維護 350
21.2.2 軟體演化定律 351
21.2.3 軟體演化生命周期模型與演化活動 352
21.3 軟體維護與演化的常見技術 354
21.3.1 遺留軟體 355
21.3.2 逆向工程 355
21.3.3 再工程 356
21.4 項目實踐 356
21.5 習題 357
第六部分 軟體過程模型
與職業基礎
第22章 軟體開發過程模型 360
22.1 軟體開發的典型階段 360
22.1.1 軟體需求工程 360
22.1.2 軟體設計 361
22.1.3 軟體構造 361
22.1.4 軟體測試 363
22.1.5 軟體交付 363
22.1.6 軟體維護 363
22.2 軟體生命周期模型 364
22.3 軟體過程模型 364
22.4 構建–修復模型 366
22.5 瀑布模型 367
22.6 增量疊代模型 368
22.7 演化模型 370
22.8 原型模型 371
22.9 螺旋模型 372
22.10 Rational統一過程 374
22.11 敏捷過程 376
22.12 習題 378
第23章 軟體工程職業基礎 379
23.1 軟體工程職業 379
23.1.1 軟體行業的發展 379
23.1.2 軟體工程職業的出現 380
23.1.3 軟體工程師職業素質 380
23.2 軟體工程職業概況 381
23.2.1 知識體系 381
23.2.2 教育體系 381
23.2.3 職業道德規範 382
23.2.4 認證體系 382
23.2.5 行業協會 383
23.3 軟體工程的行業標準 383
23.4 習題 384
附錄A 軟體需求規格說明文檔模板 385
附錄B 文檔注釋規範 391
附錄C 軟體工程道德和職業實踐規範(5.2版)的八項原則 395
附錄D 連鎖商店管理系統(MSCS)
相關文檔 399
參考文獻 428
4.4 軟體配置管理 57
4.4.1 配置管理動機 57
4.4.2 配置項 58
4.4.3 基線 58
4.4.4 配置管理活動 59
4.4.5 變更控制 60
4.5 項目實踐 62
4.6 習題 62
第三部分 需求開發階段
第5章 軟體需求基礎 66
5.1 引言 66
5.2 需求工程基礎 67
5.2.1 需求工程簡介 67
5.2.2 需求工程活動 67
5.2.3 需求獲取 68
5.2.4 需求分析 69
5.2.5 需求規格說明 70
5.2.6 需求驗證 70
5.2.7 需求管理 71
5.3 需求基礎 71
5.3.1 需求 71
5.3.2 需求的層次性 71
5.3.3 結合層次性的需求開發 73
5.3.4 區分需求、問題域與規格說明 74
5.4 需求分類 75
5.4.1 需求譜系 75
5.4.2 軟體需求的分類 76
5.5 項目實踐 79
5.6 習題 80
第6章 需求分析方法 82
6.1 需求分析基礎 82
6.1.1 需求分析的原因 82
6.1.2 需求分析模型 83
6.2 結構化分析 84
6.2.1 結構化分析方法 84
6.2.2 數據流圖 85
6.2.3 實體關係圖 90
6.3 面向對象分析 92
6.3.1 面向對象分析方法 92
6.3.2 用例 93
6.3.3 用例圖 94
6.3.4 用例描述 96
6.3.5 概念類圖(領域模型) 98
6.3.6 互動圖(順序圖) 104
6.3.7 狀態圖 106
6.4 使用需求分析方法細化和明確需求 108
6.4.1 細化和明確需求內容 108
6.4.2 建立系統級需求 109
6.5 項目實踐 112
6.6 習題 113
第7章 需求文檔化與驗證 115
7.1 文檔化的原因 115
7.2 需求文檔基礎 115
7.2.1 需求文檔的交流對象 115
7.2.2 用例文檔 116
7.2.3 軟體需求規格說明文檔 116
7.3 需求文檔化要點 118
7.3.1 技術文檔寫作要點 118
7.3.2 需求書寫要點 119
7.3.3 軟體需求規格說明文檔書寫要點 120
7.4 評審軟體需求規格說明文檔 121
7.4.1 需求驗證與確認 121
7.4.2 評審需求的注意事項 121
7.5 以需求為基礎開發系統測試用例 122
7.5.1 開發測試用例套件 123
7.5.2 開發測試用例 125
7.6 度量需求 125
7.7 將需求製品納入配置管理 129
7.8 項目實踐 130
7.9 習題 130
第四部分 軟體設計
第8章 軟體設計基礎 133
8.1 軟體設計思想的發展 133
8.2 軟體設計的核心思想 134
8.3 理解軟體設計 135
8.3.1 設計與軟體設計 135
8.3.2 工程設計與藝術設計 136
8.3.3 理性主義和經驗主義 137
8.3.4 軟體設計的演化性 137
8.3.5 軟體設計的決策性 138
8.3.6 軟體設計的約束滿足和多樣性 138
8.4 軟體設計的分層 139
8.5 軟體設計過程的主要活動 140
8.6 軟體設計的方法和模型 140
8.6.1 軟體設計的方法 140
8.6.2 軟體設計的模型 141
8.7 軟體設計描述 141
8.7.1 設計視圖和設計圖 142
8.7.2 設計視角和設計關注 143
8.7.3 需求和涉眾 144
8.7.4 設計理由 144
8.7.5 設計描述的模板 145
8.7.6 軟體設計文檔書寫要點 145
8.8 項目實踐 146
8.9 習題 146
第9章 軟體體系結構基礎 148
9.1 軟體體系結構的發展 148
9.2 理解軟體體系結構 148
9.2.1 定義 148
9.2.2 區分軟體體系結構的抽象與實現 149
9.2.3 部件 150
9.2.4 連線件 150
9.2.5 配置 151
9.3 體系結構風格初步 153
9.3.1 主程式/子程式 153
9.3.2 面向對象式 154
9.3.3 分層 156
9.3.4 MVC 157
9.4 項目實踐 159
9.5 習題 159
第10章 軟體體系結構設計與構建 160
10.1 體系結構設計過程 160
10.1.1 分析關鍵需求和項目約束 160
10.1.2 選擇體系結構風格 162
10.1.3 軟體體系結構邏輯設計 162
10.1.4 軟體體系結構實現 165
10.1.5 完善軟體體系結構設計 170
10.1.6 定義構件接口 172
10.2 體系結構的原型構建 173
10.2.1 包的創建 173
10.2.2 重要檔案的創建 174
10.2.3 定義構件之間的接口 174
10.2.4 關鍵需求的實現 175
10.3 體系結構集成與測試 175
10.3.1 集成的策略 175
10.3.2 樁、驅動與集成測試用例 177
10.4 軟體體系結構設計文檔描述 180
10.5 體系結構評審 181
10.6 項目實踐 181
10.7 習題 182
第11章 人機互動設計 183
11.1 引言 183
11.2 人機互動設計的目標 184
11.3 人機互動設計的人類因素 185
11.3.1 精神模型 185
11.3.2 差異性 186
11.4 人機互動設計的計算機因素 186
11.4.1 可視化設計 186
11.4.2 常見界面類型 187
11.5 人機互動設計的互動性 188
11.5.1 導航 188
11.5.2 反饋 189
11.5.3 一些人機互動設計原則 190
11.6 人機互動設計過程 192
11.6.1 基本過程 192
11.6.2 示例 193
11.7 項目實踐 195
11.8 習題 195
第12章 詳細設計的基礎 197
12.1 詳細設計概述 197
12.1.1 詳細設計出發點 197
12.1.2 詳細設計的上下文 198
12.2 結構化設計 199
12.2.1 結構化設計的思想 199
12.2.2 結構化設計的過程 200
12.3 面向對象設計 202
12.3.1 面向對象設計的思想 202
12.3.2 面向對象設計的過程 202
12.3.3 通過職責建立靜態模型 203
12.3.4 通過協作建立動態模型 206
12.4 為類間協作開發集成測試用例 210
12.5 詳細設計文檔描述 212
12.6 詳細設計的評審 213
12.7 項目實踐 213
12.8 習題 213
第13章 詳細設計中的模組化與信息隱藏 215
13.1 模組化與信息隱藏思想 215
13.1.1 設計質量 215
13.1.2 模組化與信息隱藏思想的動機 215
13.1.3 模組化與信息隱藏思想的發展 216
13.2 模組化 217
13.2.1 分解與模組化 217
13.2.2 結構化設計中的耦合 219
13.2.3 結構化設計中的內聚 220
13.2.4 回顧:MSCS系統設計中的模組化思想 221
13.3 信息隱藏 222
13.3.1 抽象與信息隱藏 222
13.3.2 信息與隱藏 224
13.3.3 模組說明 225
13.3.4 回顧:MSCS系統設計中的信息思想 226
13.4 習題 226
第14章 詳細設計中面向對象方法下的模組化 228
14.1 面向對象中的模組 228
14.1.1 類 228
14.1.2 類之間的聯繫 228
14.2 訪問耦合 229
14.2.1 訪問耦合的分析 229
14.2.2 降低訪問耦合的方法 230
14.3 繼承耦合 234
14.3.1 繼承耦合的分析 234
14.3.2 降低繼承耦合的方法 235
14.4 內聚 237
14.4.1 面向對象中的內聚 237
14.4.2 提高內聚的方法 238
14.5 耦合與內聚的度量 241
14.5.1 耦合的度量 241
14.5.2 內聚的度量 242
14.6 項目實踐 243
14.7 習題 243
第15章 詳細設計中面向對象方法下的信息隱藏 246
15.1 封裝類的職責 246
15.1.1 類的職責 246
15.1.2 封裝——分離接口與實現 247
15.1.3 封裝實現細節 247
15.2 為變更而設計 251
15.2.1 封裝變更/開閉原則 251
15.2.2 多態 252
15.2.3 依賴倒置原則 253
15.2.4 總結 257
15.3 項目實踐 257
15.4 習題 258
第16章 詳細設計的設計模式 262
16.1 設計模式基礎 262
16.2 可修改性及其基本實現機制 262
16.3 策略模式 265
16.3.1 典型問題 265
16.3.2 設計分析 266
16.3.3 解決方案 266
16.3.4 模式實例 268
16.4 抽象工廠模式 270
16.4.1 典型問題 270
16.4.2 設計分析 272
16.4.3 解決方案 272
16.4.4 模式實例 274
16.5 單件模式 276
16.5.1 典型問題 276
16.5.2 設計分析 276
16.5.3 解決方案 276
16.5.4 模式實例 277
16.6 疊代器模式 277
16.6.1 典型問題 277
16.6.2 設計分析 279
16.6.3 解決方案 279
16.6.4 模式實例 280
16.7 項目實踐 280
16.8 習題 280
第五部分 軟體構造、測試、交付與維護
第17章 軟體構造 282
17.1 概述 282
17.1.1 軟體構造的定義 282
17.1.2 軟體構造是設計的延續 283
17.2 軟體構造活動 283
17.2.1 詳細設計 283
17.2.2 編程 284
17.2.3 測試 284
17.2.4 調試 285
17.2.5 代碼評審 286
17.2.6 集成與構建 288
17.2.7 構造管理 288
17.3 軟體構造實踐方法 288
17.3.1 重構 289
17.3.2 測試驅動開發 291
17.3.3 結對編程 295
17.4 項目實踐 295
17.5 習題 296
第18章 代碼設計 298
18.1 設計易讀的代碼 298
18.1.1 格式 298
18.1.2 命名 302
18.1.3 注釋 302
18.2 設計易維護的代碼 304
18.2.1 小型任務 305
18.2.2 複雜決策 306
18.2.3 數據使用 308
18.2.4 明確依賴關係 308
18.3 設計可靠的代碼 308
18.3.1 契約式設計 308
18.3.2 防禦式編程 310
18.4 使用模型輔助設計複雜代碼 310
18.4.1 決策表 311
18.4.2 偽代碼 311
18.4.3 程式流程圖 313
18.5 為代碼開發單元測試用例 313
18.5.1 為方法開發測試用例 313
18.5.2 使用Mock Object測試類方法 313
18.5.3 為類開發測試用例 315
18.6 代碼複雜度度量 316
18.7 問題代碼 317
18.8 項目實踐 318
18.9 習題 319
第19章 軟體測試 320
19.1 引言 320
19.1.1 驗證與確認 320
19.1.2 軟體測試的目標 321
19.1.3 測試用例 321
19.1.4 樁與驅動 321
19.1.5 缺陷、錯誤與失敗 322
19.2 測試層次 323
19.2.1 測試層次的劃分 323
19.2.2 單元測試 323
19.2.3 集成測試 324
19.2.4 系統測試 325
19.3 測試技術 325
19.3.1 測試用例的選擇 325
19.3.2 隨機測試 326
19.3.3 基於規格的技術——黑盒測試方法 327
19.3.4 基於代碼的技術——白盒測試方法 329
19.3.5 特定測試技術 331
19.4 測試活動 331
19.5 測試度量 334
19.6 項目實踐 334
19.7 習題 335
第20章 軟體交付 336
20.1 安裝與部署 336
20.1.1 安裝 336
20.1.2 部署 337
20.2 培訓與文檔支持 338
20.2.1 培訓 338
20.2.2 文檔支持 339
20.3 項目評價 341
20.3.1 項目評價的原因 341
20.3.2 項目評價的內容 341
20.3.3 項目評價的方法 341
20.3.4 注意事項 343
20.4 項目實踐 343
20.5 習題 344
第21章 軟體維護與演化 345
21.1 軟體維護 345
21.1.1 軟體可修改性與軟體維護 345
21.1.2 軟體維護的類型 345
21.1.3 軟體維護的高代價性 346
21.1.4 開發可維護的軟體 348
21.1.5 軟體維護過程與活動 349
21.2 軟體演化 350
21.2.1 演化與維護 350
21.2.2 軟體演化定律 351
21.2.3 軟體演化生命周期模型與演化活動 352
21.3 軟體維護與演化的常見技術 354
21.3.1 遺留軟體 355
21.3.2 逆向工程 355
21.3.3 再工程 356
21.4 項目實踐 356
21.5 習題 357
第六部分 軟體過程模型
與職業基礎
第22章 軟體開發過程模型 360
22.1 軟體開發的典型階段 360
22.1.1 軟體需求工程 360
22.1.2 軟體設計 361
22.1.3 軟體構造 361
22.1.4 軟體測試 363
22.1.5 軟體交付 363
22.1.6 軟體維護 363
22.2 軟體生命周期模型 364
22.3 軟體過程模型 364
22.4 構建–修復模型 366
22.5 瀑布模型 367
22.6 增量疊代模型 368
22.7 演化模型 370
22.8 原型模型 371
22.9 螺旋模型 372
22.10 Rational統一過程 374
22.11 敏捷過程 376
22.12 習題 378
第23章 軟體工程職業基礎 379
23.1 軟體工程職業 379
23.1.1 軟體行業的發展 379
23.1.2 軟體工程職業的出現 380
23.1.3 軟體工程師職業素質 380
23.2 軟體工程職業概況 381
23.2.1 知識體系 381
23.2.2 教育體系 381
23.2.3 職業道德規範 382
23.2.4 認證體系 382
23.2.5 行業協會 383
23.3 軟體工程的行業標準 383
23.4 習題 384
附錄A 軟體需求規格說明文檔模板 385
附錄B 文檔注釋規範 391
附錄C 軟體工程道德和職業實踐規範(5.2版)的八項原則 395
附錄D 連鎖商店管理系統(MSCS)
相關文檔 399
參考文獻 428