關于我們
書單推薦
新書推薦
|
軟件工程 第4版 修訂版
本書是軟件工程領域的經(jīng)典著作,國際上眾多名校均采用本書作為教材。全書共分為14章,分3個部分介紹主要內(nèi)容。第一部分解釋為什么軟件工程知識對實踐者和研究者同樣重要,還討論了理解過程模型問題的必要性以及敏捷方法和精細地進行項目計劃的必要性;第二部分論述開發(fā)和維護的主要步驟;第三部分主要講述軟件評估和改進。
本書適合作為計算機相關專業(yè)軟件工程課程的本科教材,也適用于介紹軟件工程的概念與實踐的研究生課程,期望進一步學習該領域相關知識的專業(yè)人員也可以閱讀本書。
1.軟件工程課程的經(jīng)典教材,國際上眾多名校均采用本書。
2.配有專門的配套網(wǎng)站,包含教學PPT和習題答案等豐富的教學資源。
本書是軟件工程領域公認的經(jīng)典名著,也是業(yè)界常引用的主要文獻之一,被國內(nèi)外眾多名校廣泛采用。與其他軟件工程著作不同,本書注重從實踐出發(fā)選擇和安排素材,同時又從理論上進行了全面深入的探討。對諸如復用、風險管理和質(zhì)量工程、測度和度量等理論性比較強的主題,沒有專設章節(jié),而是融合在相關的各種軟件工程活動中講述。
本書理論闡述循序漸進,善于揭示各知識點之間的內(nèi)在聯(lián)系,并通過大量實例和工程實踐深化和豐富理論知識;選材與時俱進,反映了業(yè)界動態(tài),尤其是建模和敏捷方法方面的重要進展。兩個貫穿全書的研究案例——信息系統(tǒng)案例和實時系統(tǒng)案例,以及書中的學期項目,引導讀者很好地將概念有機地應用到實際項目中去。
Shari Lawrence Pfleeger 世界范圍內(nèi)享有盛譽的軟件工程學者,在軟件開發(fā)領域有著數(shù)十年的豐富經(jīng)驗,主要從事軟件工程和信息技術的教學、咨詢和研究。現(xiàn)任美國智庫蘭德公司的研究員。她曾經(jīng)執(zhí)教于馬里蘭大學和倫敦城市大學,并擔任IEEE Software和IEEE Transactions on Software Engineering等業(yè)界期刊副主編多年。除本書外,她與人合作撰寫的Security in Computing也是廣泛采用的主流教材。
Joanne M. Atlee 世界知名的軟件工程學者,以軟件需求和軟件工程教育方面的杰出貢獻而聞名。她是IEEE計算機學會和ACM聯(lián)合發(fā)起的軟件工程課程項目指導委員會的成員,也是國際信息處理聯(lián)合會(IFIP)軟件需求工程工作組成員。她是滑鐵盧大學副教授,創(chuàng)立了該校的軟件工程學位項目并任項目主任。
第 1章 軟件工程概述 1
1.1 什么是軟件工程 1
1.1.1 問題求解 2
1.1.2 軟件工程師的角色是什么 3
1.2 軟件工程取得了哪些進展 4
1.3 什么是好的軟件 6
1.3.1 產(chǎn)品的質(zhì)量 7
1.3.2 過程的質(zhì)量 8
1.3.3 商業(yè)環(huán)境背景下的質(zhì)量 8
1.4 軟件工程涉及的人員 10
1.5 系統(tǒng)的方法 11
1.5.1 系統(tǒng)的要素 11
1.5.2 相互聯(lián)系的系統(tǒng) 13
1.6 工程的方法 14
1.6.1 蓋房子 15
1.6.2 構(gòu)建系統(tǒng) 16
1.7 開發(fā)團隊的成員 17
1.8 軟件工程發(fā)生了多大的變化 19
1.8.1 變化的本質(zhì) 19
1.8.2 軟件工程的Wasserman規(guī)范 20
1.9 信息系統(tǒng)的例子 25
1.10 實時系統(tǒng)的例子 26
1.11 本章對單個開發(fā)人員的意義 27
1.12 本章對開發(fā)團隊的意義 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 可操作規(guī)格說明 38
2.2.5 可轉(zhuǎn)換模型 38
2.2.6 階段化開發(fā):增量和迭代 39
2.2.7 螺旋模型 40
2.2.8 敏捷方法 41
2.3 過程建模工具和技術 44
2.3.1 靜態(tài)建模:Lai表示法 45
2.3.2 動態(tài)建模:系統(tǒng)動力學 47
2.4 實際的過程建!49
2.4.1 Marvel的案例研究 49
2.4.2 過程建模工具和技術應該具有的特性 51
2.5 信息系統(tǒng)的例子 51
2.6 實時系統(tǒng)的例子 53
2.7 本章對單個開發(fā)人員的意義 54
2.8 本章對開發(fā)團隊的意義 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 緊密結(jié)合里程碑 92
3.7 信息系統(tǒng)的例子 94
3.8 實時系統(tǒng)的例子 95
3.9 本章對單個開發(fā)人員的意義 96
3.10 本章對開發(fā)團隊的意義 96
3.11 本章對研究人員的意義 96
3.12 學期項目 96
3.13 主要參考文獻 97
3.14 練習 97
第4章 獲取需求 100
4.1 需求過程 101
4.2 需求引發(fā) 102
4.3 需求的類型 105
4.3.1 解決沖突 107
4.3.2 兩種需求文檔 108
4.4 需求的特性 109
4.5 建模表示法 110
4.5.1 實體-聯(lián)系圖 111
4.5.2 例子:UML類圖 112
4.5.3 事件蹤跡 114
4.5.4 例子:消息時序圖 114
4.5.5 狀態(tài)機 115
4.5.6 例子:UML狀態(tài)圖 116
4.5.7 例子:Petri網(wǎng) 119
4.5.8 數(shù)據(jù)流圖 121
4.5.9 例子:用例 122
4.5.10 函數(shù)和關系 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 代數(shù)規(guī)格說明 129
4.5.17 例子:SDL數(shù)據(jù) 130
4.6 需求和規(guī)格說明語言 132
4.6.1 統(tǒng)一建模語言(UML) 132
4.6.2 規(guī)格說明和描述語言(SDL) 133
4.6.3 軟件成本降低(SCR) 133
4.6.4 需求表示法的其他特征 134
4.7 原型化需求 134
4.8 需求文檔 135
4.8.1 需求定義 136
4.8.2 需求規(guī)格說明 137
4.8.3 過程管理和需求的可跟蹤性 138
4.9 確認和驗證 138
4.9.1 需求確認 139
4.9.2 驗證 141
4.10 測量需求 142
4.11 選擇規(guī)格說明技術 143
4.12 信息系統(tǒng)的例子 145
4.13 實時系統(tǒng)的例子 147
4.14 本章對單個開發(fā)人員的意義 149
4.15 本章對開發(fā)團隊的意義 149
4.16 本章對研究人員的意義 149
4.17 學期項目 150
4.17.1 前提和假設 150
4.17.2 功能的高層描述 150
4.17.3 功能需求 150
4.17.4 數(shù)據(jù)約束 151
4.17.5 設計和接口約束 152
4.17.6 質(zhì)量需求 152
4.18 主要參考文獻 152
4.19 練習 153
第5章 設計體系結(jié)構(gòu) 156
5.1 設計過程 156
5.1.1 設計是一種創(chuàng)造性過程 157
5.1.2 設計過程模型 160
5.2 體系結(jié)構(gòu)建!161
5.3 分解和視圖 162
5.4 體系結(jié)構(gòu)風格和策略 165
5.4.1 管道和過濾器 165
5.4.2 客戶—服務器 166
5.4.3 對等網(wǎng)絡 167
5.4.4 發(fā)布—訂閱 168
5.4.5 信息庫 168
5.4.6 分層 169
5.4.7 組合體系結(jié)構(gòu)風格 170
5.5 滿足質(zhì)量屬性 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 商業(yè)目標 178
5.6 協(xié)作設計 179
5.7 體系結(jié)構(gòu)的評估和改進 180
5.7.1 測量設計質(zhì)量 181
5.7.2 故障樹分析 181
5.7.3 安全性分析 183
5.7.4 權(quán)衡分析 184
5.7.5 成本效益分析 188
5.7.6 原型化 190
5.8 文檔化軟件體系結(jié)構(gòu) 191
5.8.1 視圖間的映射 193
5.8.2 文檔化設計合理性 193
5.9 體系結(jié)構(gòu)設計評審 193
5.9.1 確認 194
5.9.2 驗證 194
5.10 軟件產(chǎn)品線 195
5.10.1 戰(zhàn)略范圍 197
5.10.2 產(chǎn)品線體系結(jié)構(gòu)的優(yōu)勢 197
5.10.3 產(chǎn)品線的演化 198
5.11 信息系統(tǒng)的例子 198
5.12 實時系統(tǒng)的例子 200
5.13 本章對單個開發(fā)人員的意義 201
5.14 本章對開發(fā)團隊的意義 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 增量式開發(fā) 214
6.2.5 抽象 215
6.2.6 通用性 216
6.3 面向?qū)ο蟮脑O計 218
6.3.1 術語 218
6.3.2 繼承與對象組合 221
6.3.3 可替換性 222
6.3.4 德米特法則 223
6.3.5 依賴倒置 224
6.4 在UML中體現(xiàn)面向?qū)ο笤O計 225
6.4.1 過程中的UML 225
6.4.2 UML類圖 227
6.4.3 其他UML圖 232
6.5 面向?qū)ο笤O計模式 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 數(shù)據(jù)管理 247
6.6.2 異常處理 247
6.6.3 用戶界面設計 249
6.6.4 框架 250
6.7 面向?qū)ο蠖攘俊?50
6.7.1 面向?qū)ο笙到y(tǒng)規(guī)模的度量 251
6.7.2 面向?qū)ο笙到y(tǒng)設計質(zhì)量的度量 252
6.7.3 在何處進行面向?qū)ο鬁y量 258
6.8 設計文檔 259
6.9 信息系統(tǒng)的例子 261
6.10 實時系統(tǒng)的例子 262
6.11 本章對單個開發(fā)人員的意義 263
6.12 本章對開發(fā)團隊的意義 263
6.13 本章對研究人員的意義 263
6.14 學期項目 263
6.15 主要參考文獻 264
6.16 練習 264
第7章 編寫程序 267
7.1 編程標準和過程 267
7.1.1 對單個開發(fā)人員的標準 268
7.1.2 對其他開發(fā)人員的標準 268
7.1.3 設計和實現(xiàn)的匹配 269
7.2 編程的指導原則 269
7.2.1 控制結(jié)構(gòu) 269
7.2.2 算法 270
7.2.3 數(shù)據(jù)結(jié)構(gòu) 271
7.2.4 通用性指導原則 273
7.3 文檔 276
7.3.1 內(nèi)部文檔 276
7.3.2 外部文檔 279
7.4 編程過程 280
7.4.1 將編程作為問題求解 280
7.4.2 極限編程 281
7.4.3 結(jié)對編程 281
7.4.4 編程向何處去 282
7.5 信息系統(tǒng)的例子 282
7.6 實時系統(tǒng)的例子 283
7.7 本章對單個開發(fā)人員的意義 284
7.8 本章對開發(fā)團隊的意義 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 對測試的態(tài)度 292
8.2.3 誰執(zhí)行測試 293
8.2.4 測試對象的視圖 293
8.3 單元測試 295
8.3.1 檢查代碼 295
8.3.2 證明代碼正確性 297
8.3.3 測試程序構(gòu)件 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 測試面向?qū)ο笙到y(tǒng) 311
8.5.1 代碼測試 311
8.5.2 面向?qū)ο鬁y試和傳統(tǒng)測試之間的區(qū)別 311
8.6 測試計劃 313
8.6.1 計劃的目的 313
8.6.2 計劃的內(nèi)容 313
8.7 自動測試工具 314
8.7.1 代碼分析工具 314
8.7.2 測試執(zhí)行工具 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 信息系統(tǒng)的例子 320
8.10 實時系統(tǒng)的例子 321
8.11 本章對單個開發(fā)人員的意義 321
8.12 本章對開發(fā)團隊的意義 322
8.13 本章對研究人員的意義 322
8.14 學期項目 322
8.15 主要參考文獻 322
8.16 練習 323
第9章 測試系統(tǒng) 325
9.1 系統(tǒng)測試的原則 325
9.1.1 軟件故障根源 325
9.1.2 系統(tǒng)測試過程 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 失效數(shù)據(jù) 340
9.4.3 測量可靠性、可用性和可維護性 341
9.4.4 可靠性穩(wěn)定性和可靠性增長 342
9.4.5 可靠性預測 343
9.4.6 操作環(huán)境的重要性 345
9.5 驗收測試 346
9.5.1 目的和職責 346
9.5.2 驗收測試的種類 346
9.5.3 驗收測試的結(jié)果 347
9.6 安裝測試 348
9.7 自動化系統(tǒng)測試 348
9.8 測試文檔 349
9.8.1 測試計劃 349
9.8.2 測試規(guī)格說明和評估 351
9.8.3 測試描述 353
9.8.4 測試分析報告 355
9.8.5 問題報告表 355
9.9 測試安全攸關的系統(tǒng) 357
9.9.1 設計多樣性 358
9.9.2 軟件安全性案例 359
9.9.3 凈室方法 361
9.10 信息系統(tǒng)的例子 364
9.11 實時系統(tǒng)的例子 366
9.12 本章對單個開發(fā)人員的意義 367
9.13 本章對開發(fā)團隊的意義 367
9.14 本章對研究人員的意義 367
9.15 學期項目 367
9.16 主要參考文獻 368
9.17 練習 368
第 10章 交付系統(tǒng) 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 信息系統(tǒng)的例子 380
10.4 實時系統(tǒng)的例子 381
10.5 本章對單個開發(fā)人員的意義 381
10.6 本章對開發(fā)團隊的意義 381
10.7 本章對研究人員的意義 382
10.8 學期項目 382
10.9 主要參考文獻 382
10.10 練習 382
第 11章 維護系統(tǒng) 384
11.1 變化的系統(tǒng) 384
11.1.1 系統(tǒng)的類型 384
11.1.2 在系統(tǒng)生命周期過程中發(fā)生的變化 387
11.1.3 系統(tǒng)生命周期跨度 388
11.2 維護的本質(zhì) 389
11.3 維護問題 392
11.3.1 人員問題 392
11.3.2 技術問題 393
11.3.3 必要的妥協(xié) 394
11.3.4 維護成本 395
11.4 測量維護特性 397
11.4.1 可維護性的外部視圖 398
11.4.2 影響可維護性的內(nèi)部屬性 398
11.4.3 其他的產(chǎn)品測量 400
11.5 維護技術和工具 401
11.5.1 配置管理 401
11.5.2 影響分析 403
11.5.3 自動化維護工具 406
11.6 軟件再生 407
11.6.1 文檔重構(gòu) 408
11.6.2 重組 409
11.6.3 逆向工程 410
11.6.4 再工程 410
11.6.5 軟件再生的前景 411
11.7 信息系統(tǒng)的例子 412
11.8 實時系統(tǒng)的例子 412
11.9 本章對單個開發(fā)人員的意義 413
11.10 本章對開發(fā)團隊的意義 413
11.11 本章對研究人員的意義 414
11.12 學期項目 414
11.13 主要參考文獻 414
11.14 練習 414
第 12章 評估產(chǎn)品、過程和資源 416
12.1 評估的方法 416
12.1.1 特征分析 416
12.1.2 調(diào)查 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 確認預測系統(tǒng) 423
12.3.2 確認測量 425
12.3.3 對確認的緊迫需求 425
12.4 評估產(chǎn)品 426
12.4.1 產(chǎn)品質(zhì)量模型 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 信息系統(tǒng)的例子 451
12.8 實時系統(tǒng)的例子 452
12.9 本章對單個開發(fā)人員的意義 452
12.10 本章對開發(fā)團隊的意義 452
12.11 本章對研究人員的意義 453
12.12 學期項目 453
12.13 主要參考文獻 453
12.14 練習 454
第 13章 改進預測、產(chǎn)品、過程和資源 455
13.1 改進預測 455
13.1.1 預測的精確性 455
13.1.2 處理偏誤:u曲線 456
13.1.3 處理噪聲:prequential似然度 458
13.1.4 重新校準預測 459
13.2 改進產(chǎn)品 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 工作環(huán)境 470
13.4.2 成本和進度的權(quán)衡 471
13.5 總體改進指導原則 472
13.6 信息系統(tǒng)的例子 473
13.7 實時系統(tǒng)的例子 473
13.8 本章對單個開發(fā)人員的意義 473
13.9 本章對開發(fā)團隊的意義 474
13.10 本章對研究人員的意義 474
13.11 學期項目 474
13.12 主要參考文獻 475
13.13 練習 475
第 14章 軟件工程的未來 476
14.1 已經(jīng)取得的進展 476
14.1.1 Wasserman的獲得成熟度的措施 476
14.1.2 當前要做的工作 478
14.2 技術轉(zhuǎn)移 478
14.2.1 現(xiàn)在我們怎樣做出技術轉(zhuǎn)移的決策 479
14.2.2 在技術決策中使用證據(jù) 479
14.2.3 支持技術決策的證據(jù) 480
14.2.4 對證據(jù)的進一步討論 481
14.2.5 技術轉(zhuǎn)移的新模型 483
14.2.6 改進技術轉(zhuǎn)移的下一步 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 獲得的經(jīng)驗教訓 492
14.4 軟件工程的職業(yè)化:執(zhí)照發(fā)放、認證和倫理 492
14.4.1 將重點放在人員上 493
14.4.2 軟件工程教育 493
14.4.3 軟件工程知識體系 495
14.4.4 給軟件工程師頒發(fā)執(zhí)照 496
14.4.5 認證 500
14.4.6 倫理守則 502
14.4.7 職業(yè)發(fā)展 503
14.4.8 研究和實踐的進一步發(fā)展 504
14.5 學期項目 505
14.6 主要參考文獻 505
14.7 練習 505
參考文獻注解 507
索引 536
你還可能感興趣
我要評論
|