軟體工程導論

第5版

《軟體工程導論(第5版)》是清華大學出版社出版的圖書,作者是張海藩

內容簡介


《軟體工程導論(第5版)》的前4個版本累計銷售近一百萬冊,已成為軟體工程領域的經典教材,先後榮獲全國普通高等學校工科電子類專業優秀教材二等獎、一等獎,並被評為全國優秀暢銷書、全國高校出版社優秀暢銷書和北京高等教育精品教材。為了反映最近4年來軟體工程的發展狀況,作者對第四版作了下述的精心修改:增加了目前比較流行的Rational統一過程、以極限編程為傑出代表的敏捷過程以及微軟過程的介紹,並且對書中的一些具體內容作了適當的增刪或修改。《軟體工程導論(第5版)》可作為高等院校“軟體工程”課程的教材或教學參考書,也可供有一定實際經驗的軟體工作人員和需要開發應用軟體的廣大計算機用戶閱讀參考。
本書全面系統地講述了軟體工程的概念、原理和典型的方法學,並介紹了軟體項目的管理技術。本書正文共l3章,第1章是概述,第2章至第8章順序講述軟體生命周期各階段的任務、過程、結構化方法和工具,第9章至第12章分別講述面向對象方法學引論、面向對象分析、面向對象設計和面向對象實現,第13章介紹軟體項目管理。正文後面有兩個附錄,分別講述了用面向對象方法和結構化方法開發兩個軟體的過程,對讀者深入理解軟體工程學很有幫助,也是上機實習的好材料。

圖書目錄


軟體工程導論(第五版)答案
軟體工程導論(第5版)
作者:張海藩
第1章 軟體工程學概述1
1.1 軟體危機1
1.1.1 軟體危機的介紹1
1.1.2 產生軟體危機的原因3
1.1.3 消除軟體危機的途徑4
1.2 軟體工程5
1.2.1 軟體工程的介紹5
1.2.2 軟體工程的基本原理7
1.2.3 軟體工程方法學9
1.3 軟體生命周期11
1.4 軟體過程14
1.4.1 瀑布模型15
1.4.2 快速原型模型16
1.4.3 增量模型17
1.4.4 螺旋模型19
1.4.5 噴泉模型21
1.4.6 Rational統一過程22
1.4.7 敏捷過程與極限編程25
1.4.8 微軟過程29
1.5 小結31
習題132
第2章 可行性研究35
2.1 可行性研究的任務35
2.2 可行性研究過程36
2.3 系統流程圖38 2.3.1 符號38
2.3.2 例子38
2.3.3 分層40
2.4 數據流圖40
軟體工程導論目 錄 2.4.1 符號40
2.4.2 例子42
2.4.3 命名44
2.4.4 用途45
2.5 數據字典47
2.5.1 數據字典的內容47
2.5.2 定義數據的方法47
2.5.3 數據字典的用途48
2.5.4 數據字典的實現49
2.6 成本/效益分析49
2.6.1 成本估計50
2.6.2 成本/效益分析的方法51
2.7 小結53
習題253
第3章 需求分析55
3.1 需求分析的任務56
3.1.1 確定對系統的綜合要求56
3.1.2 分析系統的數據要求57
3.1.3 導出系統的邏輯模型58
3.1.4 修正系統開發計劃58
3.2 與用戶溝通獲取需求的方法58
3.2.1 訪談58
3.2.2 面向數據流自頂向下求精59
3.2.3 簡易的應用規格說明技術59
3.2.4 快速建立軟體原型61
3.3 分析建模與規格說明62
3.3.1 分析建模62
3.3.2 軟體需求規格說明62
3.4 實體-聯繫圖62
3.4.1 數據對象63
3.4.2 屬性63
3.4.3 聯繫63
3.4.4 實體-聯繫圖的符號64
3.5 數據規範化64
3.6 狀態轉換圖65
3.6.1 狀態65
3.6.2 事件65
3.6.3 符號66
3.6.4 例子66
3.7 其他圖形工具67
3.7.1 層次方框圖68
3.7.2 Warnier圖68
3.7.3 IPO圖69
3.8 驗證軟體需求70
3.8.1 從哪些方面驗證軟體需求的正確性70
3.8.2 驗證軟體需求的方法70
3.8.3 用於需求分析的軟體工具71
3.9 小結72
習題373
第4章 形式化說明技術75
4.1 概述75
4.1.1 非形式化方法的缺點75
4.1.2 形式化方法的優點76
4.1.3 應用形式化方法的準則76
4.2 有窮狀態機77
4.2.1 概念77
4.2.2 例子79
4.2.3 評價82
4.3 Petri網82
4.3.1 概念82
4.3.2 例子84
4.4 Z語言85
4.4.1 簡介85
4.4.2 評價88
4.5 小結88
習題489
第5章 總體設計91
5.1 設計過程91
5.2 設計原理94
5.2.1 模塊化94
5.2.2 抽象95
5.2.3 逐步求精95
5.2.4 信息隱藏和局部化96
5.2.5 模塊獨立97
5.3 啟發規則99
5.4 描繪軟體結構的圖形工具102
5.4.1 層次圖和HIPO圖102
5.4.2 結構圖103
5.5 面向數據流的設計方法104
5.5.1 概念104
5.5.2 變換分析105
5.5.3 事務分析111
5.5.4 設計優化112
5.6 小結113
習題5114
第6章 詳細設計117
6.1 結構程序設計117
6.2 人機界面設計119
6.2.1 設計問題119
6.2.2 設計過程121
6.2.3 人機界面設計指南122
6.3 過程設計的工具124
6.3.1 程序流程圖124
6.3.2 盒圖125
6.3.3 PAD圖126
6.3.4 判定表127
6.3.5 判定樹128
6.3.6 過程設計語言128
6.4 面向數據結構的設計方法129
6.4.1 Jackson圖130
6.4.2 改進的Jackson圖131
6.4.3 Jackson方法132
6.5 程序複雜程度的定量度量136
6.5.1 McCabe方法137
6.5.2 Halstead方法139
6.6 小結140
習題6140
第7章 實現145
7.1 編碼146
7.1.1 選擇程序設計語言146
7.1.2 編碼風格147
7.2 軟體測試基礎149
7.2.1 軟體測試的目標150
7.2.2 軟體測試準則150
7.2.3 測試方法151
7.2.4 測試步驟151
7.2.5 測試階段的信息流152
7.3 單元測試153
7.3.1 測試重點153
7.3.2 代碼審查154
7.3.3 計算機測試155
7.4 集成測試156
7.4.1 自頂向下集成157
7.4.2 自底向上集成158
7.4.3 不同集成測試策略的比較159
7.4.4 回歸測試160
7.5 確認測試160
7.5.1 確認測試的範圍160
7.5.2 軟體配置複查161
7.5.3 Alpha和Beta測試161
7.6 白盒測試技術162
7.6.1 邏輯覆蓋162
7.6.2 控制結構測試165
7.7 黑盒測試技術171
7.7.1 等價劃分172
7.7.2 邊界值分析175
7.7.3 錯誤推測175
7.8 調試176
7.8.1 調試過程176
7.8.2 調試途徑178
7.9 軟體可靠性179
7.9.1 基本概念179
7.9.2 估算平均無故障時間的方法180
7.10 小結182
習題7183
第8章 維護189
8.1 軟體維護的定義189
8.2 軟體維護的特點190
8.2.1 結構化維護與非結構化維護差別巨大190
8.2.2 維護的代價高昂190
8.2.3 維護的問題很多191
8.3 軟體維護過程192
8.4 軟體的可維護性194
8.4.1 決定軟體可維護性的因素194
8.4.2 文檔195
8.4.3 可維護性複審196
8.5 預防性維護197
8.6 軟體再工程過程198
8.7 小結200
習題8201
第9章 面向對象方法學引論203
9.1 面向對象方法學概述203
9.1.1 面向對象方法學的要點203
9.1.2 面向對象方法學的優點205
9.2 面向對象的概念209
9.2.1 對象209
9.2.2 其他概念211
9.3 面向對象建模215
9.4 對象模型216
9.4.1 類圖的基本符號217
9.4.2 表示關係的符號218
9.5 動態模型223
9.6 功能模型224
9.6.1 用例圖224
9.6.2 用例建模227
9.7 3種模型之間的關係228
9.8 小結229
習題9229
第10章 面向對象分析231
10.1 面向對象分析的基本過程231
10.1.1 概述231
10.1.2 3個子模型與5個層次232
10.2 需求陳述233
10.2.1 書寫要點233
10.2.2 例子234
10.3 建立對象模型235
10.3.1 確定類與對象236
10.3.2 確定關聯238
10.3.3 劃分主題241
10.3.4 確定屬性241
10.3.5 識別繼承關係244
10.3.6 反覆修改244
10.4 建立動態模型247
10.4.1 編寫腳本247
10.4.2 設想用戶界面248
10.4.3 畫事件跟蹤圖249
10.4.4 畫狀態圖250
10.4.5 審查動態模型251
10.5 建立功能模型253
10.5.1 畫出基本系統模型圖253
10.5.2 畫出功能級數據流圖254
10.5.3 描述處理框功能254
10.6 定義服務255
10.7 小結256
習題10256
第11章 面向對象設計259
11.1 面向對象設計的準則259
11.2 啟發規則261
11.3 軟體重用263
11.3.1 概述263
11.3.2 類構件265
11.3.3 軟體重用的效益266
11.4 系統分解267
11.5 設計問題域子系統270
11.6 設計人機交互子系統273
11.7 設計任務管理子系統275
11.8 設計數據管理子系統277
11.8.1 選擇數據存儲管理模式277
11.8.2 設計數據管理子系統278
11.8.3 例子280
11.9 設計類中的服務280
11.9.1 確定類中應有的服務280
11.9.2 設計實現服務的方法281
11.10 設計關聯282
11.11 設計優化283
11.11.1 確定優先順序283
11.11.2 提高效率的幾項技術284
11.11.3 調整繼承關係285
11.12 小結287
習題11288
第12章 面向對象實現289
12.1 程序設計語言289
12.1.1 面向對象語言的優點289
12.1.2 面向對象語言的技術特點290
12.1.3 選擇面向對象語言294
12.2 程序設計風格294
12.2.1 提高可重用性295
12.2.2 提高可擴充性297
12.2.3 提高健壯性297
12.3 測試策略298
12.3.1 面向對象的單元測試298
12.3.2 面向對象的集成測試299
12.3.3 面向對象的確認測試299
12.4 設計測試用例299
12.4.1 測試類的方法300
12.4.2 集成測試方法301
12.5 小結303
習題12304
第13章 軟體項目管理305
13.1 估算軟體規模305
13.1.1 代碼行技術305
13.1.2 功能點技術306
13.2 工作量估算308
13.2.1 靜態單變數模型308
13.2.2 動態多變數模型308
13.2.3 COCOMO2模型309
13.3 進度計劃312
13.3.1 估算開發時間312
13.3.2 Gantt圖314
13.3.3 工程網路315
13.3.4 估算工程進度316
13.3.5 關鍵路徑318
13.3.6 機動時間318
13.4 人員組織320
13.4.1 民主製程序員組320
13.4.2 主程序員組321
13.4.3 現代程序員組322
13.5 質量保證324
13.5.1 軟體質量324
13.5.2 軟體質量保證措施326
13.6 軟體配置管理328
13.6.1 軟體配置329
13.6.2 軟體配置管理過程329
13.7 能力成熟度模型331
13.8 小結334
習題13335
附錄A C++類庫管理系統的分析與設計337
A.1 面向對象分析337
A.1.1 需求337
A.1.2 建立對象模型338
A.2 面向對象設計339
A.2.1 設計類庫結構339
A.2.2 設計問題域子系統340
A.2.3 設計人機交互子系統341
A.2.4 設計其他類344
附錄B 一個漢字行編輯程序的設計347
B.1 設計規格說明347
B.1.1 外部編輯命令347
B.1.2 編輯命令348
B.1.3 輸出信息349
B.2 概要設計350
B.2.1 正文文件350
B.2.2 兩個工作模式351
B.2.3 數據元素352
B.2.4 過程353
B.3 概要設計結果353
B.4 詳細設計356
B.4.1 數據元素356
B.4.2 控制數據元素357
B.4.3 編輯過程357
B.4.4 輸入模式的過程359
B.4.5 編輯模式的過程360
B.5 詳細設計結果364
B.5.1 編輯程序的詳細結構364
B.5.2 類PASCAL偽碼365
B.5.3 實現編輯程序的演演算法367