實用軟件工程(附微課視頻 第3版)
呂雲翔
相關主題
商品描述
本書按照典型的軟件開發過程組織和編寫內容,旨在培養讀者的軟件工程思想及實際軟件開發的能力。全書共11章,內容涉及軟件與軟件工程、軟件過程、可行性研究與項目開發計劃、結構化分析、結構化設計、面向對象方法與UML、面向對象分析、面向對象設計、軟件實現、軟件測試與維護、軟件工程管理。本書理論與實踐相結合,內容翔實,可操作性強。
本書可作為高等院校計算機科學與技術、軟件工程及相關專業“軟件工程”課程的教材。
作者簡介
呂雲翔,北京航空航天大學軟件學院副教授。長期從事“軟件工程基礎”課程的一線教學,曾多次獲得北航校級教學成果獎。“軟件工程基礎”課程獲評2021中國計算機教育大會計算機類教學資源建設優秀課程配套資源與優秀教學案例獎。具有多年的軟件開發、項目管理、計算機教學經驗,對IT行業具有較全面的認識,主編暢銷教材多部。
目錄大綱
第一部分 軟件工程概述
第1章 軟件與軟件工程 2
1.1 軟件 2
1.1.1 軟件的概念及特點 2
1.1.2 軟件的分類 3
1.2 軟件危機 5
1.2.1 軟件危機的表現與產生原因 5
1.2.2 軟件危機的啟示 6
1.3 軟件工程 6
1.3.1 軟件工程的概念 6
1.3.2 軟件工程研究的內容 7
1.3.3 軟件工程的目標和原則 7
1.3.4 軟件工程知識體系 8
1.4 軟件開發方法 9
1.5 軟件工程工具 11
1.6 軟件工程人員的職業道德 12
1.6.1 ACM/IEEE道德準則 13
1.6.2 職業倫理 13
1.6.3 應該註意的一些道德問題 13
1.7?“‘墨韻’讀書會圖書共享平臺”案例介紹 15
本章小結 15
習題 15
第2章 軟件過程 17
2.1 軟件生命周期的基本任務 17
2.2 軟件過程模型 18
2.2.1 瀑布模型 18
2.2.2 快速原型模型 18
2.2.3 增量模型 19
2.2.4 螺旋模型 20
2.2.5 噴泉模型 21
2.2.6 統一軟件開發過程模型 21
2.2.7 基於組件的開發模型 22
2.2.8 敏捷模型 23
2.2.9 幾種模型的對比 32
2.2.10 幾種模型之間的關系 32
2.2.11 如何選擇軟件過程模型 33
2.3 軟件過程模型實例 34
本章小結 34
習題 34
第二部分 可行性研究與項目開發計劃
第3章 可行性研究與項目開發計劃 3
3.1 項目立項概述 37
3.2 可行性研究的內容 38
3.2.1 技術可行性研究 38
3.2.2 操作可行性研究 38
3.2.3 經濟可行性研究 38
3.3 可行性研究的步驟 40
3.4 可行性研究實例 41
3.5 制定項目開發計劃 49
3.6 案例:“‘墨韻’讀書會圖書共享平臺”的軟件開發計劃書 50
本章小結 50
習題 50
第三部分 結構化分析與設計
第4章 結構化分析 53
4.1 需求分析 53
4.1.1 需求分析的任務和原則 53
4.1.2 需求分析的步驟 55
4.1.3 需求管理 56
4.1.4 需求分析的常用方法 57
4.2 結構化分析方法 58
4.3 結構化分析建模 59
4.3.1 功能建模 59
4.3.2 數據建模 62
4.3.3 行為建模 63
4.3.4 數據字典 65
4.3.5 加工規格說明 65
4.4 結構化分析的圖形工具 67
4.4.1 層次方框圖 67
4.4.2 Warnier圖 67
4.4.3 IPO圖 68
4.5 結構化分析實例 69
本章小結 71
習題 71
第5章 結構化設計 74
5.1 軟件設計的基本概念 74
5.1.1 軟件設計的意義和目標 75
5.1.2 軟件設計的原則 75
5.1.3 軟件設計的分類 78
5.2 軟件體系結構 79
5.2.1 軟件體系結構概述 79
5.2.2 軟件體系結構的作用 80
5.2.3 典型的軟件體系結構風格 81
5.2.4 客戶端/服務器模式的分布式體系結構 82
5.2.5 MVC模型 84
5.3 結構化設計概述 85
5.4 結構化設計與結構化分析的關系 85
5.5 結構化設計方法 86
5.5.1 表示軟件結構的圖形工具 86
5.5.2 面向數據流的設計方法 87
5.5.3 面向數據結構的設計方法 90
5.6 接口設計 94
5.6.1 接口設計概述 94
5.6.2 界面設計 94
5.7 數據設計 95
5.8 過程設計 98
5.8.1 程序流程圖 98
5.8.2 N-S圖 99
5.8.3 PAD 99
5.8.4 過程設計語言 100
5.9 軟件設計評審 101
5.10 軟件設計實例 101
本章小結 106
習題 106
第四部分 面向對象分析與設計
第6章 面向對象方法與UML 110
6.1 面向對象的軟件工程方法 110
6.1.1 面向對象的基本概念 110
6.1.2 面向對象的軟件工程方法的特征與優勢 112
6.1.3 面向對象的實施步驟 112
6.2 UML 113
6.2.1 UML簡述 113
6.2.2 UML的應用範圍 113
6.2.3 UML的圖 114
6.3 靜態建模機制 114
6.3.1 用例圖 114
6.3.2 類圖和對象圖 116
6.3.3 包圖 120
6.4 動態建模機制 121
6.4.1 順序圖 121
6.4.2 協作圖 122
6.4.3 狀態圖 123
6.4.4 活動圖 123
6.5 描述物理架構的機制 124
6.5.1 組件圖 125
6.5.2 部署圖 125
6.6 面向對象方法與UML實例 125
本章小結 128
習題 129
第7章 面向對象分析 132
7.1 面向對象分析與結構化分析 132
7.2 面向對象分析方法 132
7.2.1 面向對象分析過程 133
7.2.2 面向對象分析原則 134
7.3 面向對象建模 135
7.3.1 建立對象模型 135
7.3.2 建立動態模型 140
7.3.3 建立功能模型 142
7.3.4 3種模型之間的關系 143
7.4 面向對象分析實例 143
7.5 案例:“‘墨韻’讀書會圖書共享平臺”的需求規格說明書 153
本章小結 153
習題 154
第8章 面向對象設計 156
8.1 面向對象設計與結構化設計 156
8.2 面向對象設計與面向對象分析的關系 156
8.3 面向對象設計的過程與原則 157
8.3.1 面向對象設計的過程 157
8.3.2 面向對象設計的原則 158
8.4 面向對象設計的啟發規則 161
8.5 系統設計 161
8.5.1 系統分解 162
8.5.2 問題域子系統的設計 163
8.5.3 人機交互子系統的設計 165
8.5.4 任務管理子系統的設計 166
8.5.5 數據管理子系統的設計 168
8.6 對象設計 171
8.6.1 設計類中的服務 171
8.6.2 設計類的關聯 172
8.6.3 對象設計優化 173
8.7 軟件設計模式 176
8.7.1 工廠模式 177
8.7.2 橋接模式 177
8.7.3 策略模式 178
8.7.4 其他模式 178
8.8 面向對象設計實例 179
8.9 案例:“‘墨韻’讀書會圖書共享平臺”的軟件設計說明書 191
本章小結 191
習題 191
第五部分 軟件實現、測試與維護
第9章 軟件實現 195
9.1 編程語言 195
9.1.1 編程語言的發展與分類 195
9.1.2 選擇編程語言時需考慮的因素 199
9.2 編碼風格與規範 199
9.3 面向對象實現 203
9.4 代碼復用 204
9.5 分析和評價代碼的質量 205
9.6 軟件實現實例 206
9.7 案例:“‘墨韻’讀書會圖書共享平臺”的源代碼 207
本章小結 207
習題 208
第10章 軟件測試與維護 210
10.1 軟件測試的基本概念 210
10.1.1 軟件測試的原則 211
10.1.2 軟件測試的分類 212
10.1.3 軟件測試模型 212
10.2 測試用例 214
10.2.1 測試用例編寫 214
10.2.2 測試用例設計 214
10.2.3 測試用例場景 214
10.3 軟件測試方法 214
10.4 黑盒測試 215
10.4.1 等價類劃分法 215
10.4.2 邊界值分析法 217
10.4.3 錯誤推測法 219
10.4.4 因果圖法 219
10.4.5 決策表法 221
10.4.6 場景法 221
10.4.7 黑盒測試方法選擇 223
10.5 白盒測試 223
10.5.1 代碼檢查法 223
10.5.2 靜態結構分析法 224
10.5.3 程序插樁技術 224
10.5.4 邏輯覆蓋法 224
10.5.5 基本路徑法 226
10.5.6 白盒測試方法選擇 227
10.5.7 白盒測試與黑盒測試比較 228
10.6 軟件測試的一般步驟 228
10.7 單元測試 229
10.7.1 單元測試概述 229
10.7.2 單元測試內容 229
10.7.3 單元測試方法 230
10.8 集成測試 231
10.8.1 集成測試概述 231
10.8.2 集成測試策略 231
10.9 系統測試 234
10.9.1 系統測試概述 234
10.9.2 系統測試類型 234
10.10 驗收測試 236
10.10.1 驗收測試概述 236
10.10.2 驗收測試內容 236
10.10.3 α測試和β測試 236
10.11 回歸測試 237
10.12 面向對象測試 237
10.13 自動化測試 239
10.14 軟件調試 240
10.14.1 調試過程 240
10.14.2 調試途徑 240
10.15 軟件維護 241
10.15.1 軟件部署與軟件交付 241
10.15.2 軟件維護的過程 241
10.15.3 軟件維護的分類 243
10.15.4 軟件的可維護性 243
10.15.5 軟件維護的副作用 244
10.15.6 軟件運維 245
10.15.7 軟件再工程——重構、正向工程、逆向工程 246
10.16 軟件測試實例 247
10.17 案例:“‘墨韻’讀書會圖書共享平臺”的測試報告和部署文檔 255
本章小結 256
習題 256
第六部分 軟件工程管理
第11章 軟件工程管理 260
11.1 軟件估算 260
11.1.1 軟件估算的概念 260
11.1.2 軟件估算的方法 261
11.1.3 軟件估算的原則與技巧 263
11.2 軟件開發進度計劃 263
11.2.1 甘特圖 263
11.2.2 PERT圖 264
11.3 軟件開發人員組織 267
11.3.1 民主制程序員組 267
11.3.2 主程序員組 267
11.3.3 現代程序員組 267
11.4 軟件開發風險管理 268
11.4.1 軟件開發風險 268
11.4.2 軟件開發風險管理 268
11.5 軟件質量保證 270
11.5.1 軟件質量的基本概念 270
11.5.2 軟件質量保證的措施 271
11.6 軟件配置管理 271
11.6.1 軟件配置管理術語 272
11.6.2 配置管理的過程 274
11.7 軟件工程標準與軟件文檔 274
11.7.1 軟件工程標準 274
11.7.2 軟件文檔 276
11.8 軟件過程能力成熟度模型 277
11.9 軟件項目管理 279
11.9.1 軟件項目管理概述 279
11.9.2 軟件項目管理與軟件工程的關系 280
11.10 軟件安全 280
11.11 軟件工程管理實例 280
11.12 案例:“‘墨韻’讀書會圖書共享平臺”的用戶使用說明書 282
本章小結 282
習題 283
附錄A 軟件工程常用工具及其應用 285
附錄B 基於“‘墨韻’讀書會圖書共享平臺”的實驗 291
附錄C 軟件開發綜合項目實踐詳解(圖書館信息管理系統) 293
附錄D 綜合案例 294
案例1:問卷星球 294
案例2:在線音樂播放平臺 295
附錄E 本書配套微課視頻清單 296
參考文獻 299

