軟體工程

西安電子科技大學出版社書籍

《軟體工程》是2014年西安電子科技大學出版社出版的圖書,作者是張秋余、張聚禮、柯銘、張紅、馬威。

內容簡介


本書結合軟體產業現狀,較為全面地介紹了軟體工程的基本概念、原理和方法,以期培養學生在理論及應用上的系統整合能力以及從系統的角度看待整個軟體項目的能力。
本書共14章。第1~6章主要介紹了軟體工程學與傳統軟體工程方法的基本理論,主要包括軟體工程的策劃、分析、設計、實現、測試和維護等工作;第7~13章主要介紹了面向對象軟體工程,結合軟體統一過程模型,從面向對象范型出發對軟體工程進行重新演繹,全面、系統、清晰地介紹了面向對象軟體工程的基本概念、原理、方法和工具,並將考勤系統完整實例貫穿於面向對象軟體開發的整個過程;第14章介紹了當今比較流行的現代軟體工程軟體開發方法。
本書可以作為計算機科學與技術、軟體工程相關專業本科生或研究生的教材,也可以作為軟體工程領域專業人士的參考書籍。

目錄


第1章 軟體工程學概論 1
1.1 軟體的基本概念 1
1.1.1 軟體與軟體特性 1
1.1.2 軟體的分類 2
1.2 軟體危機 4
1.3 軟體工程 5
1.3.1 軟體工程的基本原理 6
1.3.2 軟體工程學科包含的領域 7
1.4 軟體工程的方法、工具與環境 8
1.4.1 軟體工程的方法、工具與環境 8
1.4.2 軟體開發的基本策略 11
1.5 軟體過程與軟體生命周期 12
1.5.1 軟體過程 12
1.5.2 軟體生命周期的各個階段 13
1.6 常見的軟體過程模型 16
1.6.1 瀑布模型 16
1.6.2 快速原型模型 17
1.6.3 演化模型 18
1.6.4 螺旋模型 19
1.6.5 噴泉模型 20
1.7 小結 21
習題1 22
第2章 項目分析與軟體需求分析 23
2.1 軟體項目的問題定義 23
2.2 軟體項目可行性分析 24
2.3 軟體系統的需求 27
2.3.1 功能需求 27
2.3.2 非功能需求 28
2.3.3 軟體需求分析的風險 30
2.4 用戶需求獲取 31
2.5 軟體需求文檔與規格說明 33
2.5.1 自然語言描述 33
2.5.2 結構化描述 34
2.5.3 軟體需求文檔 35
2.6 系統流程圖 36
2.7 數據流圖 38
2.7.1 數據流圖的符號 38
2.7.2 設計數據流圖的步驟和示例 39
2.7.3 數據流圖中命名的可理解性 41
2.7.4 數據流圖的用途 42
2.7.5 數據流圖中的數據字典 43
2.8 實體-聯繫圖 46
2.9 需求分析中使用的其他圖形工具 48
2.10 面向數據流的建模 51
2.11 需求有效性驗證 53
2.12 實例分析—教材征訂業務分析 54
2.13 小結 58
習題2 58
第3章 軟體總體設計 60
3.1 總體設計 60
3.2 軟體總體設計原理 64
3.2.1 設計原理 64
3.2.2 啟髮式規則 71
3.3 描繪軟體結構的圖形工具 73
3.3.1 層次圖和HIPO圖 73
3.3.2 軟體結構圖 74
3.4 映射數據流到軟體結構 75
3.4.1 變換流 75
3.4.2 事務流 76
3.4.3 變換映射(變換分析) 76
3.4.4 事務映射(事務分析) 78
3.4.5 設計優化—精化軟體結構 79
3.5 資料庫結構設計過程 80
3.6 實例分析 81
3.7 小結 83
習題3 84
第4章 軟體詳細設計 85
4.1 結構化程序設計 86
4.1.1 結構化的控制結構 86
4.1.2 結構化程序設計的實現方法 87
4.1.3 結構化程序設計的特點 88
4.2 用戶界面設計 88
4.2.1 黃金規則 89
4.2.2 用戶界面的分析與設計 90
4.2.3 界面分析 92
4.2.4 界面設計步驟 94
4.3 程序演演算法設計工具 96
4.3.1 圖形化設計工具 97
4.3.2 表格式設計表示 101
4.3.3 程序設計語言 102
4.3.4 程序演演算法設計工具的比較 103
4.4 面向數據結構的設計方法 104
4.4.1 Jackson數據結構圖 104
4.4.2 改進的Jackson圖 105
4.4.3 Jackson方法的設計過程 105
4.5 程序複雜度的概念及度量方法 108
4.6 小結 111
習題4 111
第5章 軟體實現 113
5.1 軟體編碼 113
5.1.1 編碼目的 113
5.1.2 程序設計語言的選擇 114
5.1.3 良好的編程實踐 115
5.1.4 程序員的基本素質 117
5.2 軟體測試基礎 118
5.3 測試設計和管理 120
5.3.1 錯誤曲線 120
5.3.2 軟體測試配置 120
5.3.3 測試用例設計 122
5.4 軟體測試過程 124
5.4.1 軟體測試基本原則 125
5.4.2 軟體測試的步驟、測試信息流 126
5.4.3 軟體測試組織與人員 127
5.5 軟體測試的基本方法 128
5.5.1 軟體測試方法與技術 128
5.5.2 軟體測試的誤區 130
5.6 軟體測試策略 132
5.6.1 測試策略 132
5.6.2 單元測試 133
5.6.3 集成測試(組裝測試) 135
5.6.4 確認測試(有效性測試) 139
5.6.5 系統測試與驗收測試 140
5.7 白盒測試 142
5.7.1 邏輯覆蓋法 142
5.7.2 基本路徑測試法 146
5.8 黑盒測試 149
5.8.1 等價類劃分法 149
5.8.2 邊界值分析法 150
5.8.3 錯誤推測法 151
5.8.4 狀態測試法 151
5.9 回歸測試 152
5.10 軟體調試 153
5.10.1 軟體調試的目的與原則 154
5.10.2 軟體調試技術 154
5.10.3 調試技巧 156
5.11 小結 156
習題5 156
第6章 軟體維護 159
6.1 軟體維護的基本概念 159
6.2 軟體維護的任務和分類 160
6.3 軟體維護過程 161
6.4 維護的管理 164
6.5 預防性維護 169
6.6 軟體維護的副作用 170
6.7 軟體文檔與編寫要求及方法 171
6.7.1 軟體文檔的重要性與分類 171
6.7.2 軟體文檔應該滿足的要求 173
6.7.3 對軟體文檔編製的質量要求 174
6.7.4 軟體文檔的管理和維護 175
6.8 軟體逆向工程和再工程 176
6.9 小結 178
習題6 178
第7章 面向對象軟體工程方法學 179
7.1 面向對象的概念 179
7.2 從認識論看面向對象方法的形成 181
7.2.1 軟體開發—對事物的認識和描述 181
7.2.2 語言的鴻溝 181
7.2.3 面向對象編程語言的發展使鴻溝變小 182
7.2.4 軟體工程學的作用 183
7.3 面向對象方法的基本概念 186
7.3.1 面向對象的基本概念 186
7.3.2 面向對象的主要特徵 186
7.4 統一過程與統一建模語言 187
7.4.1 統一過程概述 187
7.4.2 統一過程生命周期 189
7.4.3 統一建模語言 192
7.5 迭代和增量過程 194
7.5.1 為什麼採用迭代和增量的開發方法 194
7.5.2 迭代方法是風險驅動的 198
7.5.3 通用迭代過程 198
7.5.4 一次迭代產生一個增量結果 200
7.5.5 在整個生命周期上的迭代 200
7.5.6 由迭代過程來演化模型 202
7.6 小結 202
習題7 203
第8章 用例驅動 204
8.1 用例驅動開發概述 205
8.2 為什麼使用用例 206
8.2.1 根據需求的價值捕獲用例 207
8.2.2 用例驅動開發過程 207
8.3 確定客戶需要什麼 208
8.4 需求工作流 209
8.5 領域模型 211
8.6 業務模型 212
8.7 補充需求 216
8.8 初始需求 216
8.9 初始需求:考勤系統實例研究 218
8.9.1 聆聽 218
8.9.2 確定參與者 219
8.9.3 確定用例 220
8.9.4 簡要說明用例 222
8.9.5 描述用例模型 223
8.10 繼續需求流:考勤系統實例研究 224
8.10.1 區分用例的優先順序 224
8.10.2 詳細描述用例 225
8.10.3 構造用戶界面原型 230
8.11 修訂需求:考勤系統實例研究 233
8.12 測試工作流:考勤系統實例研究 241
8.13 需求規格說明書 242
8.14 小結 243
習題8 243
第9章 面向對象分析 244
9.1 分析工作流 244
9.2 分析模型 246
9.3 確定分析包 248
9.3.1 處理分析包之間的共性 248
9.3.2 確定服務包 249
9.3.3 確定分析包間的依賴 250
9.4 提取實體類 251
9.4.1 實體類的提取 251
9.4.2 面向對象分析:電梯問題實例研究 251
9.4.3 功能建模:電梯問題實例研究 252
9.4.4 實體類建模:電梯問題實例研究 253
9.4.5 動態建模:電梯問題實例研究 256
9.4.6 測試工作流:電梯問題案例研究 257
9.5 提取邊界類和控制類 260
9.6 初始功能模型:考勤系統實例研究 260
9.6.1 劃分用例等級 260
9.6.2 尋找候選對象 264
9.7 分析類 268
9.7.1 確定職責 268
9.7.2 確定屬性 269
9.7.3 確定關聯和聚合 269
9.7.4 確定泛化 270
9.7.5 捕獲特殊需求 270
9.8 初始類圖:考勤系統實例研究 271
9.8.1 尋找“Login”中的關係 271
9.8.2 尋找“RecordTime”中的關係 272
9.8.3 尋找“ExportTimeEntries”中的
關係 272
9.9 描述分析對象間的交互 273
9.10 用例實現:考勤系統實例研究 274
9.10.1 為“Login”添加假設的行為 274
9.10.2 為“Login”構建順序圖 275
9.11 分析包 277
9.12 類圖遞增:考勤系統實例研究 278
9.13 測試流與分析工作流中的規格
說明文檔 279
9.14 小結 280
習題9 281
第10章 構架為中心 282
10.1 構架概述 283
10.2 為什麼需要構架 284
10.3 用例和構架 285
10.4 建立構架的步驟 287
10.4.1 構架基線是一個“小的、皮包骨的”
系統 287
10.4.2 使用構架模式 288
10.4.3 描述構架 289
10.4.4 構架設計師創建構架 291
10.4.5 構架師 291
10.4.6 建立構架的過程 292
10.5 構架描述 293
10.6 建立軟體構架:考勤系統實例研究 296
10.6.1 確立目標 296
10.6.2 將類分組並評估每個類 297
10.6.3 展示技術 301
10.6.4 抽取子系統 302
10.6.5 應用原則和目標對構架進行評估 303
10.7 小結 304
習題10 304
第11章 設計和模式 305
11.1 設計在軟體生命周期中的作用 305
11.2 設計工作流 307
11.3 設計模式 311
11.3.1 設計原則 311
11.3.2 模式簡介 312
11.3.3 設計模式的優勢與應用 316
11.4 規劃設計工作 316
11.4.1 建立整個設計目標 317
11.4.2 建立設計準則 318
11.4.3 尋找獨立的設計工作 318
11.5 設計包或子系統 319
11.6 設計工作流:考勤系統實例研究 319
11.7 HTMLProduction框架 320
11.7.1 設計目標 320
11.7.2 按目標進行設計 323
11.7.3 填充細節 332
11.7.4 實現工作流 335
11.8 TimeCardUI包 338
11.8.1 評審 338
11.8.2 針對目標進行設計 340
11.8.3 用例設計 341
11.8.4 實現工作流 344
11.9 設計度量與用於設計的CASE工具 344
11.10 小結 345
習題11 346
第12章 面向對象實現 347
12.1 實現在軟體生命周期中的作用 347
12.2 實現工作流 349
12.2.1 構架實現 349
12.2.2 系統集成 350
12.2.3 實現子系統 352
12.2.4 實現類 353
12.2.5 執行單元測試 354
12.3 集成 356
12.4 測試工作流 360
12.5 用於實現的CASE工具 364
12.6 小結 366
習題12 366
第13章 軟體復用和構件技術 368
13.1 復用的概念 368
13.2 復用的障礙與復用技巧 369
13.3 對象和復用 372
13.3.1 OO方法對軟體復用的支持 372
13.3.2 復用技術對OO方法的支持 373
13.4 構件及構件技術 374
13.4.1 構件 374
13.4.2 構件技術模型 375
13.4.3 當前主流構件模型 375
13.4.4 構件的開發與復用 377
13.5 設計和實現期間的復用 378
13.6 復用及網際網路 381
13.7 小結 382
習題13 382
第14章 現代軟體工程 383
14.1 現代軟體工程發展的主要技術特點 383
14.2 開源軟體運動 385
14.2.1 開源軟體的定義與由來 385
14.2.2 Oss項目的優勢與開發經驗 387
14.2.3 如何看待開源軟體 388
14.3 領域工程 389
14.3.1 基於領域工程的軟體開發概述 389
14.3.2 基於構件的軟體工程 390
14.3.3 領域工程建模過程 391
14.4 敏捷軟體開發過程及實踐 392
14.4.1 敏捷思想與實踐原則 392
14.4.2 支持敏捷軟體開發的技術和
管理手段 394
14.4.3 極限編程 396
14.4.4 其他敏捷軟體開發方法 397
14.5 測試驅動開發 398
14.5.1 測試驅動開發思想 398
14.5.2 支持測試驅動開發的軟體工具 400
14.5.3 測試驅動開發過程 401
14.6 現代軟體工程其他新方法 401
習題14 404
附錄:軟體工程師職業素質及道德規範 405
F1. 軟體工程師職業素質 405
F2. 軟體工程師道德規範 406