軟體工程第4版修訂版

軟體工程第4版修訂版

《軟體工程第4版修訂版》是2019年人民郵電出版社出版的圖書,作者是莎麗·勞倫斯·弗里格(Shari,Lawrence,Pfleeger)(加)、喬安妮·M.阿特利 。

基本介紹

  • 書名:軟體工程第4版修訂版 
  • 作者:莎麗·勞倫斯·弗里格(Shari,Lawrence,Pfleeger)(加)、喬安妮·M.阿特利
  • 出版社:人民郵電出版社
  • ISBN:9787115498076
內容簡介,作者簡介,目錄,

內容簡介

本書是軟體工程領域的經典著作,國際上眾多名校均採用本書作為教材。全書共分為14章,分3個部分介紹主要內容。第一部分解釋為什麼軟體工程知識對實踐者和研究者同樣重要,還討論了理解過程模型問題的必要性以及敏捷方法和精細地進行項目計畫的必要性;第二部分論述開發和維護的主要步驟;第三部分主要講述軟體評估和改進。
本書適合作為計算機相關專業軟體工程課程的本科教材,也適用於介紹軟體工程的概念與實踐的研究生課程,期望進一步學習該領域相關知識的專業人員也可以閱讀本書。

作者簡介

Shari Lawrence Pfleeger 世界範圍內享有盛譽的軟體工程學者,在軟體開發領域有著數十年的豐富經驗,主要從事軟體工程和信息技術的教學、諮詢和研究。現任美國智庫蘭德公主去提端司的研究員。她曾經執教於馬里蘭大學和倫敦城市大學,並擔任IEEE Software和IEEE Transactions on Software Engineering等業紙熱界期刊副主編多年。除本書外,她與人合作撰寫的Security in Computing也是廣泛採用的主流教材。
Joanne M. Atlee 世界知名的軟體工程學者,以軟體需求和軟體工程教育方面的傑出貢獻而聞名。她是IEEE計算機學會和ACM聯合發起的軟體工程課程項目指導委員會的成員,也是國際信息處理聯合會(IFIP)軟體需求工程工作組成員。她是滑鐵盧大拘斷和學副教授,創立了該校的軟體工程學位項目並任項目主任。

目錄

第 1章 軟體工程概述 1
1.1 什麼是軟體工程 1
1.1.1 問題求解 2
1.1.2 軟體工程師的角色是什麼 3
1.2 軟體工程取得了哪些進展 4
1.3 什麼是好的軟體 6
1.3.1 產品的質量 7
1.膠影章3.2 過程的質量 8
1.3.3 商業環境背景下的質量 8
1.4 軟體工程涉及的人員 10
1.5 系統的方法 11
1.5.1 系統的要素 11
1.5.2 相互聯繫的趨兆漿系統 13
1.6 工程的方法 14
1.6.1 蓋房子 15
1.頸棗欠少6.2 構建系統 16
1.7 開發團隊的成員 17
1.8 軟體工程發生了多大的變化 19
1.8.1 變化的本質 19
1.8.2 軟體工程的Wasserman規範 20
1.9 信息系統的例子 25
1.10 實時系統的例子 26
1.11 本章對單個開發人員的意義 27
1.12 本章對開發團隊的意義 28
1.13 本章對研究人員的意義 28
1.14 學期項目 28
1.15 主要參考文獻 29
1.16 練習 30
第 2章 過程和生命周期的建模 32
2.1 過程的含義 32
2.2 軟體過程模型 34
2.2.1 瀑布模型 34
2.2.2 V模型 37
2.2.3 原型化模型 37
2.2.4 可操作規格說明 38
2.2.5 可轉換模型 38
2.2.6 階段化開發:增量和疊代 39
2.2.7 螺旋模型 40
2.2.8 敏捷方法 41
2.3 過程建模工具和技術 44
2.3.1 靜態建模:Lai表示法 45
2.3.2 動態建模:系統動估拒良力學 47
2.4 實際的過程建模 49
2.4.1 Marvel的案例研究 49
2.4.2 過程建模工具和技術應該具有的特性 51
2.5 信息系統的例子 51
2.6 實時系統的例子 53
2.7 本章對單個開發人員的意義 54
2.8 本章對開發團隊的意義 54
2.9 本章對研究人員的意義 54
2.10 學期項目 54
2.11 主要參考文獻 56
2.12 練習 57
第3章 計畫和管理項目 58
3.1 跟蹤項目進展 58
3.1.1 工作分解和活動圖 60
3.1.2 估算完成時間 61
3.1.3 跟蹤進展的工具 65
3.2 項目人員 67
3.2.1 人員角色和特性 67
3.2.2 工作風格 70
3.2.3 項目組織 71
3.3 工作量估算 73
3.3.1 專家判斷 75
3.3.2 算法方法 77
3.3.3 機器學習方法 81
3.3.4 找出適合具體情形的模型 83
3.4 風險管理 84
3.4.1 什麼是風險 84
3.4.2 風險管理活動 85
3.5 項目計畫 87
3.6 過程模型和項目管理 88
3.6.1 註冊管理 88
3.6.2 責任建模 90
3.6.3 緊密結合里程碑 92
3.7 信息系統的例子 94
3.8 實時系統的例子 95
3.9 本章對單個開發人員的意義 96
3.10 本章對開發團隊的意義 96
3.11 本章對研究人員的意義 96
3.12 學期項目 96
3.13 主要參考文獻 97
3.14 練習 97
第4章 獲取需求 100
4.1 需求過程 101
4.2 需求引發 102
4.3 需求的類型 105
4.3.1 解決衝突 107
4.3.2 兩種需求文檔 108
4.4 需求的特性 109
4.5 建模表示法 110
4.5.1 實體-聯繫圖 111
4.5.2 例子:UML類圖 112
4.5.3 事件蹤跡 114
4.5.4 例子:訊息時序圖 114
4.5.5 狀態機 115
4.5.6 例子:UML狀態圖 116
4.5.7 例子:Petri網 119
4.5.8 數據流圖 121
4.5.9 例子:用例 122
4.5.10 函式和關係 123
4.5.11 例子:判定表 124
4.5.12 例子:Parnas表 124
4.5.13 邏輯 125
4.5.14 例子:對象約束語言(OCL) 126
4.5.15 例子:Z 127
4.5.16 代數規格說明 129
4.5.17 例子:SDL數據 130
4.6 需求和規格說明語言 132
4.6.1 統一建模語言(UML) 132
4.6.2 規格說明和描述語言(SDL) 133
4.6.3 軟體成本降低(SCR) 133
4.6.4 需求表示法的其他特徵 134
4.7 原型化需求 134
4.8 需求文檔 135
4.8.1 需求定義 136
4.8.2 需求規格說明 137
4.8.3 過程管理和需求的可跟蹤性 138
4.9 確認和驗證 138
4.9.1 需求確認 139
4.9.2 驗證 141
4.10 測量需求 142
4.11 選擇規格說明技術 143
4.12 信息系統的例子 145
4.13 實時系統的例子 147
4.14 本章對單個開發人員的意義 149
4.15 本章對開發團隊的意義 149
4.16 本章對研究人員的意義 149
4.17 學期項目 150
4.17.1 前提和假設 150
4.17.2 功能的高層描述 150
4.17.3 功能需求 150
4.17.4 數據約束 151
4.17.5 設計和接口約束 152
4.17.6 質量需求 152
4.18 主要參考文獻 152
4.19 練習 153
第5章 設計體系結構 156
5.1 設計過程 156
5.1.1 設計是一種創造性過程 157
5.1.2 設計過程模型 160
5.2 體系結構建模 161
5.3 分解和視圖 162
5.4 體系結構風格和策略 165
5.4.1 管道和過濾器 165
5.4.2 客戶—伺服器 166
5.4.3 對等網路 167
5.4.4 發布—訂閱 168
5.4.5 信息庫 168
5.4.6 分層 169
5.4.7 組合體系結構風格 170
5.5 滿足質量屬性 171
5.5.1 可修改性 171
5.5.2 性能 173
5.5.3 安全性 174
5.5.4 可靠性 175
5.5.5 健壯性 177
5.5.6 易使用性 178
5.5.7 商業目標 178
5.6 協作設計 179
5.7 體系結構的評估和改進 180
5.7.1 測量設計質量 181
5.7.2 故障樹分析 181
5.7.3 安全性分析 183
5.7.4 權衡分析 184
5.7.5 成本效益分析 188
5.7.6 原型化 190
5.8 文檔化軟體體系結構 191
5.8.1 視圖間的映射 193
5.8.2 文檔化設計合理性 193
5.9 體系結構設計評審 193
5.9.1 確認 194
5.9.2 驗證 194
5.10 軟體產品線 195
5.10.1 戰略範圍 197
5.10.2 產品線體系結構的優勢 197
5.10.3 產品線的演化 198
5.11 信息系統的例子 198
5.12 實時系統的例子 200
5.13 本章對單個開發人員的意義 201
5.14 本章對開發團隊的意義 201
5.15 本章對研究人員的意義 202
5.16 學期項目 202
5.17 主要參考文獻 203
5.18 練習 203
第6章 設計模組 205
6.1 設計方法 205
6.2 設計原則 207
6.2.1 模組化 207
6.2.2 接口 212
6.2.3 信息隱藏 213
6.2.4 增量式開發 214
6.2.5 抽象 215
6.2.6 通用性 216
6.3 面向對象的設計 218
6.3.1 術語 218
6.3.2 繼承與對象組合 221
6.3.3 可替換性 222
6.3.4 德米特法則 223
6.3.5 依賴倒置 224
6.4 在UML中體現面向對象設計 225
6.4.1 過程中的UML 225
6.4.2 UML類圖 227
6.4.3 其他UML圖 232
6.5 面向對象設計模式 240
6.5.1 模板方法模式 241
6.5.2 工廠方法模式 241
6.5.3 策略模式 242
6.5.4 裝飾者模式 242
6.5.5 觀察者模式 244
6.5.6 組合模式 244
6.5.7 訪問者模式 245
6.6 設計中其他方面的考慮 247
6.6.1 數據管理 247
6.6.2 異常處理 247
6.6.3 用戶界面設計 249
6.6.4 框架 250
6.7 面向對象度量 250
6.7.1 面向對象系統規模的度量 251
6.7.2 面向對象系統設計質量的度量 252
6.7.3 在何處進行面向對象測量 258
6.8 設計文檔 259
6.9 信息系統的例子 261
6.10 實時系統的例子 262
6.11 本章對單個開發人員的意義 263
6.12 本章對開發團隊的意義 263
6.13 本章對研究人員的意義 263
6.14 學期項目 263
6.15 主要參考文獻 264
6.16 練習 264
第7章 編寫程式 267
7.1 編程標準和過程 267
7.1.1 對單個開發人員的標準 268
7.1.2 對其他開發人員的標準 268
7.1.3 設計和實現的匹配 269
7.2 編程的指導原則 269
7.2.1 控制結構 269
7.2.2 算法 270
7.2.3 數據結構 271
7.2.4 通用性指導原則 273
7.3 文檔 276
7.3.1 內部文檔 276
7.3.2 外部文檔 279
7.4 編程過程 280
7.4.1 將編程作為問題求解 280
7.4.2 極限編程 281
7.4.3 結對編程 281
7.4.4 編程向何處去 282
7.5 信息系統的例子 282
7.6 實時系統的例子 283
7.7 本章對單個開發人員的意義 284
7.8 本章對開發團隊的意義 284
7.9 本章對研究人員的意義 284
7.10 學期項目 285
7.11 主要參考文獻 285
7.12 練習 285
第8章 測試程式 287
8.1 軟體故障和失效 287
8.1.1 故障的類型 288
8.1.2 正交缺陷分類 289
8.2 測試的相關問題 291
8.2.1 測試的組織 291
8.2.2 對測試的態度 292
8.2.3 誰執行測試 293
8.2.4 測試對象的視圖 293
8.3 單元測試 295
8.3.1 檢查代碼 295
8.3.2 證明代碼正確性 297
8.3.3 測試程式構件 301
8.3.4 技術比較 304
8.4 集成測試 305
8.4.1 自底向上集成 305
8.4.2 自頂向下集成 306
8.4.3 一次性集成 308
8.4.4 三明治集成 308
8.4.5 集成策略的比較 309
8.5 測試面向對象系統 311
8.5.1 代碼測試 311
8.5.2 面向對象測試和傳統測試之間的區別 311
8.6 測試計畫 313
8.6.1 計畫的目的 313
8.6.2 計畫的內容 313
8.7 自動測試工具 314
8.7.1 代碼分析工具 314
8.7.2 測試執行工具 315
8.7.3 測試用例生成器 316
8.8 什麼時候停止測試 316
8.8.1 故障播種 317
8.8.2 軟體中的可信度 318
8.8.3 其他的停止測試的標準 319
8.8.4 識別易出故障的代碼 319
8.9 信息系統的例子 320
8.10 實時系統的例子 321
8.11 本章對單個開發人員的意義 321
8.12 本章對開發團隊的意義 322
8.13 本章對研究人員的意義 322
8.14 學期項目 322
8.15 主要參考文獻 322
8.16 練習 323
第9章 測試系統 325
9.1 系統測試的原則 325
9.1.1 軟體故障根源 325
9.1.2 系統測試過程 327
9.1.3 配置管理 329
9.1.4 測試小組 333
9.2 功能測試 334
9.2.1 目的與職責 334
9.2.2 因果圖 335
9.3 性能測試 338
9.3.1 目的和職責 338
9.3.2 性能測試的類型 338
9.4 可靠性、可用性以及可維護性 339
9.4.1 定義 339
9.4.2 失效數據 340
9.4.3 測量可靠性、可用性和可維護性 341
9.4.4 可靠性穩定性和可靠性增長 342
9.4.5 可靠性預測 343
9.4.6 操作環境的重要性 345
9.5 驗收測試 346
9.5.1 目的和職責 346
9.5.2 驗收測試的種類 346
9.5.3 驗收測試的結果 347
9.6 安裝測試 348
9.7 自動化系統測試 348
9.8 測試文檔 349
9.8.1 測試計畫 349
9.8.2 測試規格說明和評估 351
9.8.3 測試描述 353
9.8.4 測試分析報告 355
9.8.5 問題報告表 355
9.9 測試安全攸關的系統 357
9.9.1 設計多樣性 358
9.9.2 軟體安全性案例 359
9.9.3 淨室方法 361
9.10 信息系統的例子 364
9.11 實時系統的例子 366
9.12 本章對單個開發人員的意義 367
9.13 本章對開發團隊的意義 367
9.14 本章對研究人員的意義 367
9.15 學期項目 367
9.16 主要參考文獻 368
9.17 練習 368
第 10章 交付系統 372
10.1 培訓 372
10.1.1 培訓的種類 373
10.1.2 培訓助手 374
10.1.3 培訓的指導原則 375
10.2 文檔 375
10.2.1 文檔的種類 375
10.2.2 用戶幫助和疑難解答 379
10.3 信息系統的例子 380
10.4 實時系統的例子 381
10.5 本章對單個開發人員的意義 381
10.6 本章對開發團隊的意義 381
10.7 本章對研究人員的意義 382
10.8 學期項目 382
10.9 主要參考文獻 382
10.10 練習 382
第 11章 維護系統 384
11.1 變化的系統 384
11.1.1 系統的類型 384
11.1.2 在系統生命周期過程中發生的變化 387
11.1.3 系統生命周期跨度 388
11.2 維護的本質 389
11.3 維護問題 392
11.3.1 人員問題 392
11.3.2 技術問題 393
11.3.3 必要的妥協 394
11.3.4 維護成本 395
11.4 測量維護特性 397
11.4.1 可維護性的外部視圖 398
11.4.2 影響可維護性的內部屬性 398
11.4.3 其他的產品測量 400
11.5 維護技術和工具 401
11.5.1 配置管理 401
11.5.2 影響分析 403
11.5.3 自動化維護工具 406
11.6 軟體再生 407
11.6.1 文檔重構 408
11.6.2 重組 409
11.6.3 逆向工程 410
11.6.4 再工程 410
11.6.5 軟體再生的前景 411
11.7 信息系統的例子 412
11.8 實時系統的例子 412
11.9 本章對單個開發人員的意義 413
11.10 本章對開發團隊的意義 413
11.11 本章對研究人員的意義 414
11.12 學期項目 414
11.13 主要參考文獻 414
11.14 練習 414
第 12章 評估產品、過程和資源 416
12.1 評估的方法 416
12.1.1 特徵分析 416
12.1.2 調查 417
12.1.3 案例研究 417
12.1.4 正式試驗 418
12.1.5 準備評估 418
12.2 選擇評估技術 419
12.2.1 關鍵選擇因素 420
12.2.2 相信什麼 420
12.3 評價與預測 423
12.3.1 確認預測系統 423
12.3.2 確認測量 425
12.3.3 對確認的緊迫需求 425
12.4 評估產品 426
12.4.1 產品質量模型 426
12.4.2 建立基線和設定目標 430
12.4.3 軟體可復用性 431
12.5 評估過程 437
12.5.1 事後分析 437
12.5.2 過程成熟度模型 441
12.6 評估資源 448
12.6.1 人員成熟度模型 448
12.6.2 投資回報 450
12.7 信息系統的例子 451
12.8 實時系統的例子 452
12.9 本章對單個開發人員的意義 452
12.10 本章對開發團隊的意義 452
12.11 本章對研究人員的意義 453
12.12 學期項目 453
12.13 主要參考文獻 453
12.14 練習 454
第 13章 改進預測、產品、過程和資源 455
13.1 改進預測 455
13.1.1 預測的精確性 455
13.1.2 處理偏誤:u曲線 456
13.1.3 處理噪聲:prequential似然度 458
13.1.4 重新校準預測 459
13.2 改進產品 462
13.2.1 審查 462
13.2.2 復用 464
13.3 改進過程 465
13.3.1 過程和能力成熟度 465
13.3.2 維護 467
13.3.3 淨室方法 468
13.4 改進資源 470
13.4.1 工作環境 470
13.4.2 成本和進度的權衡 471
13.5 總體改進指導原則 472
13.6 信息系統的例子 473
13.7 實時系統的例子 473
13.8 本章對單個開發人員的意義 473
13.9 本章對開發團隊的意義 474
13.10 本章對研究人員的意義 474
13.11 學期項目 474
13.12 主要參考文獻 475
13.13 練習 475
第 14章 軟體工程的未來 476
14.1 已經取得的進展 476
14.1.1 Wasserman的獲得成熟度的措施 476
14.1.2 當前要做的工作 478
14.2 技術轉移 478
14.2.1 現在我們怎樣做出技術轉移的決策 479
14.2.2 在技術決策中使用證據 479
14.2.3 支持技術決策的證據 480
14.2.4 對證據的進一步討論 481
14.2.5 技術轉移的新模型 483
14.2.6 改進技術轉移的下一步 483
14.3 軟體工程中的決策 484
14.3.1 大量的決策 484
14.3.2 群體決策 486
14.3.3 我們實際上如何決策 486
14.3.4 群體實際上如何決策 488
14.3.5 一個適度的觀察研究 489
14.3.6 獲得的經驗教訓 492
14.4 軟體工程的職業化:執照發放、認證和倫理 492
14.4.1 將重點放在人員上 493
14.4.2 軟體工程教育 493
14.4.3 軟體工程知識體系 495
14.4.4 給軟體工程師頒發執照 496
14.4.5 認證 500
14.4.6 倫理守則 502
14.4.7 職業發展 503
14.4.8 研究和實踐的進一步發展 504
14.5 學期項目 505
14.6 主要參考文獻 505
14.7 練習 505
參考文獻註解 507
索引 536
1.16 練習 30
第 2章 過程和生命周期的建模 32
2.1 過程的含義 32
2.2 軟體過程模型 34
2.2.1 瀑布模型 34
2.2.2 V模型 37
2.2.3 原型化模型 37
2.2.4 可操作規格說明 38
2.2.5 可轉換模型 38
2.2.6 階段化開發:增量和疊代 39
2.2.7 螺旋模型 40
2.2.8 敏捷方法 41
2.3 過程建模工具和技術 44
2.3.1 靜態建模:Lai表示法 45
2.3.2 動態建模:系統動力學 47
2.4 實際的過程建模 49
2.4.1 Marvel的案例研究 49
2.4.2 過程建模工具和技術應該具有的特性 51
2.5 信息系統的例子 51
2.6 實時系統的例子 53
2.7 本章對單個開發人員的意義 54
2.8 本章對開發團隊的意義 54
2.9 本章對研究人員的意義 54
2.10 學期項目 54
2.11 主要參考文獻 56
2.12 練習 57
第3章 計畫和管理項目 58
3.1 跟蹤項目進展 58
3.1.1 工作分解和活動圖 60
3.1.2 估算完成時間 61
3.1.3 跟蹤進展的工具 65
3.2 項目人員 67
3.2.1 人員角色和特性 67
3.2.2 工作風格 70
3.2.3 項目組織 71
3.3 工作量估算 73
3.3.1 專家判斷 75
3.3.2 算法方法 77
3.3.3 機器學習方法 81
3.3.4 找出適合具體情形的模型 83
3.4 風險管理 84
3.4.1 什麼是風險 84
3.4.2 風險管理活動 85
3.5 項目計畫 87
3.6 過程模型和項目管理 88
3.6.1 註冊管理 88
3.6.2 責任建模 90
3.6.3 緊密結合里程碑 92
3.7 信息系統的例子 94
3.8 實時系統的例子 95
3.9 本章對單個開發人員的意義 96
3.10 本章對開發團隊的意義 96
3.11 本章對研究人員的意義 96
3.12 學期項目 96
3.13 主要參考文獻 97
3.14 練習 97
第4章 獲取需求 100
4.1 需求過程 101
4.2 需求引發 102
4.3 需求的類型 105
4.3.1 解決衝突 107
4.3.2 兩種需求文檔 108
4.4 需求的特性 109
4.5 建模表示法 110
4.5.1 實體-聯繫圖 111
4.5.2 例子:UML類圖 112
4.5.3 事件蹤跡 114
4.5.4 例子:訊息時序圖 114
4.5.5 狀態機 115
4.5.6 例子:UML狀態圖 116
4.5.7 例子:Petri網 119
4.5.8 數據流圖 121
4.5.9 例子:用例 122
4.5.10 函式和關係 123
4.5.11 例子:判定表 124
4.5.12 例子:Parnas表 124
4.5.13 邏輯 125
4.5.14 例子:對象約束語言(OCL) 126
4.5.15 例子:Z 127
4.5.16 代數規格說明 129
4.5.17 例子:SDL數據 130
4.6 需求和規格說明語言 132
4.6.1 統一建模語言(UML) 132
4.6.2 規格說明和描述語言(SDL) 133
4.6.3 軟體成本降低(SCR) 133
4.6.4 需求表示法的其他特徵 134
4.7 原型化需求 134
4.8 需求文檔 135
4.8.1 需求定義 136
4.8.2 需求規格說明 137
4.8.3 過程管理和需求的可跟蹤性 138
4.9 確認和驗證 138
4.9.1 需求確認 139
4.9.2 驗證 141
4.10 測量需求 142
4.11 選擇規格說明技術 143
4.12 信息系統的例子 145
4.13 實時系統的例子 147
4.14 本章對單個開發人員的意義 149
4.15 本章對開發團隊的意義 149
4.16 本章對研究人員的意義 149
4.17 學期項目 150
4.17.1 前提和假設 150
4.17.2 功能的高層描述 150
4.17.3 功能需求 150
4.17.4 數據約束 151
4.17.5 設計和接口約束 152
4.17.6 質量需求 152
4.18 主要參考文獻 152
4.19 練習 153
第5章 設計體系結構 156
5.1 設計過程 156
5.1.1 設計是一種創造性過程 157
5.1.2 設計過程模型 160
5.2 體系結構建模 161
5.3 分解和視圖 162
5.4 體系結構風格和策略 165
5.4.1 管道和過濾器 165
5.4.2 客戶—伺服器 166
5.4.3 對等網路 167
5.4.4 發布—訂閱 168
5.4.5 信息庫 168
5.4.6 分層 169
5.4.7 組合體系結構風格 170
5.5 滿足質量屬性 171
5.5.1 可修改性 171
5.5.2 性能 173
5.5.3 安全性 174
5.5.4 可靠性 175
5.5.5 健壯性 177
5.5.6 易使用性 178
5.5.7 商業目標 178
5.6 協作設計 179
5.7 體系結構的評估和改進 180
5.7.1 測量設計質量 181
5.7.2 故障樹分析 181
5.7.3 安全性分析 183
5.7.4 權衡分析 184
5.7.5 成本效益分析 188
5.7.6 原型化 190
5.8 文檔化軟體體系結構 191
5.8.1 視圖間的映射 193
5.8.2 文檔化設計合理性 193
5.9 體系結構設計評審 193
5.9.1 確認 194
5.9.2 驗證 194
5.10 軟體產品線 195
5.10.1 戰略範圍 197
5.10.2 產品線體系結構的優勢 197
5.10.3 產品線的演化 198
5.11 信息系統的例子 198
5.12 實時系統的例子 200
5.13 本章對單個開發人員的意義 201
5.14 本章對開發團隊的意義 201
5.15 本章對研究人員的意義 202
5.16 學期項目 202
5.17 主要參考文獻 203
5.18 練習 203
第6章 設計模組 205
6.1 設計方法 205
6.2 設計原則 207
6.2.1 模組化 207
6.2.2 接口 212
6.2.3 信息隱藏 213
6.2.4 增量式開發 214
6.2.5 抽象 215
6.2.6 通用性 216
6.3 面向對象的設計 218
6.3.1 術語 218
6.3.2 繼承與對象組合 221
6.3.3 可替換性 222
6.3.4 德米特法則 223
6.3.5 依賴倒置 224
6.4 在UML中體現面向對象設計 225
6.4.1 過程中的UML 225
6.4.2 UML類圖 227
6.4.3 其他UML圖 232
6.5 面向對象設計模式 240
6.5.1 模板方法模式 241
6.5.2 工廠方法模式 241
6.5.3 策略模式 242
6.5.4 裝飾者模式 242
6.5.5 觀察者模式 244
6.5.6 組合模式 244
6.5.7 訪問者模式 245
6.6 設計中其他方面的考慮 247
6.6.1 數據管理 247
6.6.2 異常處理 247
6.6.3 用戶界面設計 249
6.6.4 框架 250
6.7 面向對象度量 250
6.7.1 面向對象系統規模的度量 251
6.7.2 面向對象系統設計質量的度量 252
6.7.3 在何處進行面向對象測量 258
6.8 設計文檔 259
6.9 信息系統的例子 261
6.10 實時系統的例子 262
6.11 本章對單個開發人員的意義 263
6.12 本章對開發團隊的意義 263
6.13 本章對研究人員的意義 263
6.14 學期項目 263
6.15 主要參考文獻 264
6.16 練習 264
第7章 編寫程式 267
7.1 編程標準和過程 267
7.1.1 對單個開發人員的標準 268
7.1.2 對其他開發人員的標準 268
7.1.3 設計和實現的匹配 269
7.2 編程的指導原則 269
7.2.1 控制結構 269
7.2.2 算法 270
7.2.3 數據結構 271
7.2.4 通用性指導原則 273
7.3 文檔 276
7.3.1 內部文檔 276
7.3.2 外部文檔 279
7.4 編程過程 280
7.4.1 將編程作為問題求解 280
7.4.2 極限編程 281
7.4.3 結對編程 281
7.4.4 編程向何處去 282
7.5 信息系統的例子 282
7.6 實時系統的例子 283
7.7 本章對單個開發人員的意義 284
7.8 本章對開發團隊的意義 284
7.9 本章對研究人員的意義 284
7.10 學期項目 285
7.11 主要參考文獻 285
7.12 練習 285
第8章 測試程式 287
8.1 軟體故障和失效 287
8.1.1 故障的類型 288
8.1.2 正交缺陷分類 289
8.2 測試的相關問題 291
8.2.1 測試的組織 291
8.2.2 對測試的態度 292
8.2.3 誰執行測試 293
8.2.4 測試對象的視圖 293
8.3 單元測試 295
8.3.1 檢查代碼 295
8.3.2 證明代碼正確性 297
8.3.3 測試程式構件 301
8.3.4 技術比較 304
8.4 集成測試 305
8.4.1 自底向上集成 305
8.4.2 自頂向下集成 306
8.4.3 一次性集成 308
8.4.4 三明治集成 308
8.4.5 集成策略的比較 309
8.5 測試面向對象系統 311
8.5.1 代碼測試 311
8.5.2 面向對象測試和傳統測試之間的區別 311
8.6 測試計畫 313
8.6.1 計畫的目的 313
8.6.2 計畫的內容 313
8.7 自動測試工具 314
8.7.1 代碼分析工具 314
8.7.2 測試執行工具 315
8.7.3 測試用例生成器 316
8.8 什麼時候停止測試 316
8.8.1 故障播種 317
8.8.2 軟體中的可信度 318
8.8.3 其他的停止測試的標準 319
8.8.4 識別易出故障的代碼 319
8.9 信息系統的例子 320
8.10 實時系統的例子 321
8.11 本章對單個開發人員的意義 321
8.12 本章對開發團隊的意義 322
8.13 本章對研究人員的意義 322
8.14 學期項目 322
8.15 主要參考文獻 322
8.16 練習 323
第9章 測試系統 325
9.1 系統測試的原則 325
9.1.1 軟體故障根源 325
9.1.2 系統測試過程 327
9.1.3 配置管理 329
9.1.4 測試小組 333
9.2 功能測試 334
9.2.1 目的與職責 334
9.2.2 因果圖 335
9.3 性能測試 338
9.3.1 目的和職責 338
9.3.2 性能測試的類型 338
9.4 可靠性、可用性以及可維護性 339
9.4.1 定義 339
9.4.2 失效數據 340
9.4.3 測量可靠性、可用性和可維護性 341
9.4.4 可靠性穩定性和可靠性增長 342
9.4.5 可靠性預測 343
9.4.6 操作環境的重要性 345
9.5 驗收測試 346
9.5.1 目的和職責 346
9.5.2 驗收測試的種類 346
9.5.3 驗收測試的結果 347
9.6 安裝測試 348
9.7 自動化系統測試 348
9.8 測試文檔 349
9.8.1 測試計畫 349
9.8.2 測試規格說明和評估 351
9.8.3 測試描述 353
9.8.4 測試分析報告 355
9.8.5 問題報告表 355
9.9 測試安全攸關的系統 357
9.9.1 設計多樣性 358
9.9.2 軟體安全性案例 359
9.9.3 淨室方法 361
9.10 信息系統的例子 364
9.11 實時系統的例子 366
9.12 本章對單個開發人員的意義 367
9.13 本章對開發團隊的意義 367
9.14 本章對研究人員的意義 367
9.15 學期項目 367
9.16 主要參考文獻 368
9.17 練習 368
第 10章 交付系統 372
10.1 培訓 372
10.1.1 培訓的種類 373
10.1.2 培訓助手 374
10.1.3 培訓的指導原則 375
10.2 文檔 375
10.2.1 文檔的種類 375
10.2.2 用戶幫助和疑難解答 379
10.3 信息系統的例子 380
10.4 實時系統的例子 381
10.5 本章對單個開發人員的意義 381
10.6 本章對開發團隊的意義 381
10.7 本章對研究人員的意義 382
10.8 學期項目 382
10.9 主要參考文獻 382
10.10 練習 382
第 11章 維護系統 384
11.1 變化的系統 384
11.1.1 系統的類型 384
11.1.2 在系統生命周期過程中發生的變化 387
11.1.3 系統生命周期跨度 388
11.2 維護的本質 389
11.3 維護問題 392
11.3.1 人員問題 392
11.3.2 技術問題 393
11.3.3 必要的妥協 394
11.3.4 維護成本 395
11.4 測量維護特性 397
11.4.1 可維護性的外部視圖 398
11.4.2 影響可維護性的內部屬性 398
11.4.3 其他的產品測量 400
11.5 維護技術和工具 401
11.5.1 配置管理 401
11.5.2 影響分析 403
11.5.3 自動化維護工具 406
11.6 軟體再生 407
11.6.1 文檔重構 408
11.6.2 重組 409
11.6.3 逆向工程 410
11.6.4 再工程 410
11.6.5 軟體再生的前景 411
11.7 信息系統的例子 412
11.8 實時系統的例子 412
11.9 本章對單個開發人員的意義 413
11.10 本章對開發團隊的意義 413
11.11 本章對研究人員的意義 414
11.12 學期項目 414
11.13 主要參考文獻 414
11.14 練習 414
第 12章 評估產品、過程和資源 416
12.1 評估的方法 416
12.1.1 特徵分析 416
12.1.2 調查 417
12.1.3 案例研究 417
12.1.4 正式試驗 418
12.1.5 準備評估 418
12.2 選擇評估技術 419
12.2.1 關鍵選擇因素 420
12.2.2 相信什麼 420
12.3 評價與預測 423
12.3.1 確認預測系統 423
12.3.2 確認測量 425
12.3.3 對確認的緊迫需求 425
12.4 評估產品 426
12.4.1 產品質量模型 426
12.4.2 建立基線和設定目標 430
12.4.3 軟體可復用性 431
12.5 評估過程 437
12.5.1 事後分析 437
12.5.2 過程成熟度模型 441
12.6 評估資源 448
12.6.1 人員成熟度模型 448
12.6.2 投資回報 450
12.7 信息系統的例子 451
12.8 實時系統的例子 452
12.9 本章對單個開發人員的意義 452
12.10 本章對開發團隊的意義 452
12.11 本章對研究人員的意義 453
12.12 學期項目 453
12.13 主要參考文獻 453
12.14 練習 454
第 13章 改進預測、產品、過程和資源 455
13.1 改進預測 455
13.1.1 預測的精確性 455
13.1.2 處理偏誤:u曲線 456
13.1.3 處理噪聲:prequential似然度 458
13.1.4 重新校準預測 459
13.2 改進產品 462
13.2.1 審查 462
13.2.2 復用 464
13.3 改進過程 465
13.3.1 過程和能力成熟度 465
13.3.2 維護 467
13.3.3 淨室方法 468
13.4 改進資源 470
13.4.1 工作環境 470
13.4.2 成本和進度的權衡 471
13.5 總體改進指導原則 472
13.6 信息系統的例子 473
13.7 實時系統的例子 473
13.8 本章對單個開發人員的意義 473
13.9 本章對開發團隊的意義 474
13.10 本章對研究人員的意義 474
13.11 學期項目 474
13.12 主要參考文獻 475
13.13 練習 475
第 14章 軟體工程的未來 476
14.1 已經取得的進展 476
14.1.1 Wasserman的獲得成熟度的措施 476
14.1.2 當前要做的工作 478
14.2 技術轉移 478
14.2.1 現在我們怎樣做出技術轉移的決策 479
14.2.2 在技術決策中使用證據 479
14.2.3 支持技術決策的證據 480
14.2.4 對證據的進一步討論 481
14.2.5 技術轉移的新模型 483
14.2.6 改進技術轉移的下一步 483
14.3 軟體工程中的決策 484
14.3.1 大量的決策 484
14.3.2 群體決策 486
14.3.3 我們實際上如何決策 486
14.3.4 群體實際上如何決策 488
14.3.5 一個適度的觀察研究 489
14.3.6 獲得的經驗教訓 492
14.4 軟體工程的職業化:執照發放、認證和倫理 492
14.4.1 將重點放在人員上 493
14.4.2 軟體工程教育 493
14.4.3 軟體工程知識體系 495
14.4.4 給軟體工程師頒發執照 496
14.4.5 認證 500
14.4.6 倫理守則 502
14.4.7 職業發展 503
14.4.8 研究和實踐的進一步發展 504
14.5 學期項目 505
14.6 主要參考文獻 505
14.7 練習 505
參考文獻註解 507
索引 536

相關詞條

熱門詞條

聯絡我們