現代軟件工程(在線實訓版)
毛新軍
相關主題
商品描述
本書是面向軟件工程入門者和實踐者的基礎性教材,針對軟件工程的“工程化”特點
和“實踐性”要求,結合軟件工程學科的發展以及軟件產業界的實踐,以實用性軟件工程
為主線,構建軟件工程的知識體系。全書共十二章,涵蓋軟件工程的過程、方法和工具三
方面要素,包括軟件和軟件工程、軟件過程與方法、軟件項目管理、需求獲取與分析、軟
件設計、編碼與部署、軟件測試、軟件維護等章節。
作者簡介
毛新軍 國防科技大學首席教授,全國高校電腦專業優秀教師,首屆霍英東教育教學獎獲得者,入選教育部新世紀優秀人才,教育部電腦領域本科教育教學改革試點工作計劃(“101計劃”)軟件工程課程建設及虛擬教研室的負責人,CCF教育專委副主任,信息技術新工科產學研聯盟實踐教學工委主任。
目錄大綱
目錄
第 1章 深入認識軟件 1
1.1 問題引入 1
1.2 何為軟件 1
1.2.1 軟件概念 1
1.2.2 軟件特點 5
1.2.3 軟件分類 6
1.3 軟件特徵變化 8
1.4 軟件生命周期 10
1.5 軟件質量 12
1.5.1 軟件質量概念及模型 12
1.5.2 軟件的內部質量和外部質量 12
1.6 開源軟件 14
1.6.1 何為開源軟件 14
1.6.2 開源軟件的優勢 15
1.6.3 開源軟件許可證 16
1.6.4 開源軟件的利用 17
1.7 本書的軟件案例 18
1.7.1 小米便簽軟件 18
1.7.2 Mini-12306軟件 19
1.8 本章小結和思維導圖 19
1.9 閱讀推薦 20
1.10 知識測驗 20
1.11 工程實訓 20
1.12 綜合實踐 21
第 2章 走進軟件工程 23
2.1 問題引入 23
2.2 為什麽會產生軟件工程 23
2.2.1 軟件危機的表現 23
2.2.2 缺乏理論支持和方法指導 25
2.3 何為軟件工程 26
2.3.1 軟件工程概念 27
2.3.2 軟件工程目標 27
2.4 軟件工程如何解決軟件危機 28
2.4.1 軟件工程三要素 28
2.4.2 軟件工程基本原則 30
2.4.3 電腦輔助軟件工程 32
2.5 軟件工程發展 35
2.5.1 軟件工程發展歷程 35
2.5.2 軟件工程發展特點 38
2.6 軟件工程教育 40
2.6.1 軟件工程師及其類別 41
2.6.2 軟件工程師的職業道德 41
2.7 本章小結和思維導圖 42
2.8 閱讀推薦 44
2.9 知識測驗 44
2.10 工程實訓 45
2.11 綜合實踐 45
第3章 軟件開發過程及方法 46
3.1 問題引入 46
3.2 何為軟件開發過程 46
3.3 重型軟件開發方法 47
3.3.1 重型軟件開發方法的思想 47
3.3.2 典型的重型軟件開發方法 48
3.4 敏捷軟件開發方法 52
3.4.1 敏捷軟件開發方法的思想 52
3.4.2 Scrum方法 55
3.4.3 測試驅動開發方法 55
3.4.4 DevOps方法 56
3.4.5 支持敏捷開發的CASE工具 59
3.5 軟件開發方法的選擇和應用 62
3.6 本章小結和思維導圖 63
3.7 閱讀推薦 64
3.8 知識測驗 64
3.9 工程實訓 65
3.10 綜合實踐 65
第4章 軟件項目管理 67
4.1 問題引入 67
4.2 何為軟件項目管理 67
4.2.1 何為項目 67
4.2.2 何為軟件項目 68
4.2.3 軟件項目管理的對象 68
4.2.4 軟件項目管理的內容 69
4.3 如何管理軟件項目 71
4.3.1 軟件度量、測量和估算 71
4.3.2 制定軟件項目計劃 73
4.3.3 軟件項目跟蹤 76
4.3.4 軟件配置管理 78
4.3.5 軟件風險管理 81
4.3.6 軟件質量保證 84
4.3.7 軟件項目團隊管理 86
4.3.8 軟件項目管理示例 87
4.4 與軟件項目管理相關的規範和標準 87
4.4.1 ISO9001系列標準 87
4.4.2 GJB9001系列標準 87
4.4.3 CMM和CMMI系列標準 88
4.4.4 GJB 5000系列標準 90
4.5 支持軟件項目管理的CASE工具 90
4.5.1 Git工具 90
4.5.2 Project工具 91
4.6 軟件項目經理 91
4.7 本章小結和思維導圖 92
4.8 推薦閱讀 93
4.9 知識測驗 93
4.10 工程實訓 94
4.11 綜合實踐 94
第5章 獲取軟件需求 96
5.1 問題引入 96
5.2 何為軟件需求 96
5.2.1 軟件需求概念 96
5.2.2 軟件需求類別 97
5.2.3 軟件需求特點 99
5.2.4 軟件需求的重要性 99
5.3 軟件需求獲取的方式和方法 100
5.3.1 獲取軟件需求的方式 100
5.3.2 獲取軟件需求的方法 102
5.3.3 獲取軟件需求的過程 103
5.4 描述初步的軟件需求 108
5.4.1 自然語言描述 108
5.4.2 軟件原型描述 108
5.4.3 用例圖描述 108
5.5 軟件需求文檔化和評審 113
5.5.1 撰寫軟件需求文檔 113
5.5.2 評審初步軟件需求 113
5.5.3 軟件需求變更管理 114
5.5.4 輸出的軟件製品 114
5.6 軟件可行性分析 114
5.7 支持需求獲取的CASE工具 115
5.8 軟件需求工程師 116
5.9 本章小結和思維導圖 116
5.10 閱讀推薦 117
5.11 知識測驗 118
5.12 工程實訓 118
5.13 綜合實踐 119
第6章 軟件需求分析 120
6.1 問題引入 120
6.2 為何要分析軟件需求 120
6.3 如何分析軟件需求 121
6.3.1 軟件需求分析的任務 121
6.3.2 軟件需求分析的過程 123
6.4 分析和確定軟件需求的優先級 123
6.4.1 分析軟件需求的重要程度 123
6.4.2 分析軟件需求的優先級 124
6.4.3 確定用例分析和實現的次序 124
6.5 結構化軟件需求分析方法 125
6.5.1 數據流圖及軟件需求模型 125
6.5.2 面向數據流的軟件需求分析步驟和策略 126
6.5.3 步驟1: 建立頂級數據流圖 126
6.5.4 步驟2: 精化數據流圖中的轉換 127
6.5.5 步驟3: 建立數據字典 130
6.6 面向對象需求分析方法 130
6.6.1 面向對象建模的基本概念 130
6.6.2 統一建模語言UML及支持需求建模的圖 131
6.6.3 面向對象的軟件需求分析步驟和策略 139
6.6.4 步驟1: 構建和分析用例的交互模型 139
6.6.5 步驟2: 構建和分析系統的分析類模型 143
6.6.6 步驟3:構建和分析立對象的狀態模型 146
6.7 支持需求建模和分析的CASE工具 146
6.8 軟件需求文檔化和評審 147
6.8.1 撰寫軟件需求規格說明書 147
6.8.2 軟件需求評審 147
6.8.3 輸出的軟件製品 149
6.9 本章小結和思維導圖 149
6.10 閱讀推薦 150
6.11 知識測驗 150
6.12 工程實訓 151
6.13 綜合實踐 151
第7章 軟件體系結構設計 152
7.1 問題引入和思考 152
7.2 何為軟件設計 152
7.2.1 軟件設計概念 152
7.2.2 軟件設計元素 153
7.2.3 軟件設計過程 154
7.2.4 軟件設計質量要求 155
7.2.5 軟件設計原則 156
7.3 何為軟件體系結構 157
7.3.1 軟件體系結構概念 157
7.3.2 軟件體系結構風格 158
7.3.3 軟件體系結構設計的重要性 161
7.4 軟件體系結構設計的任務和策略 161
7.5 結構化的軟件體系結構設計方法 162
7.5.1 基本思想 163
7.5.2 步驟1:變換型數據流圖的設計方法 164
7.5.3 步驟2:事務型數據流圖的設計方法 166
7.6 面向對象的軟件體系結構設計 168
7.6.1 軟件體系結構的面向對象建模 168
7.6.2 步驟1:設計初步的軟件體系結構 170
7.6.3 步驟2:精化軟件體系結構設計 172
7.6.4 步驟3:設計軟件部署模型 174
7.7 基於大模型的智能化軟件體系結構設計 175
7.8 軟件體系結構設計的文檔化和評審 176
7.7.1 軟件體系結構設計文檔化 176
7.7.2 軟件體系結構設計評審 177
7.7.3 軟件體系結構設計輸出 177
7.9 支持軟件設計的CASE工具 177
7.10 軟件設計工程師和軟件架構師 178
7.11 本章小結和思維導圖 178
7.12 閱讀推薦 179
7.13 知識測驗 180
7.14 工程實訓 180
7.15 綜合實踐 181
第8章 軟件用戶界面設計 183
8.1 問題引入 183
8.2 何為用戶界面 183
8.2.1 用戶界面的組成 183
8.2.2 用戶界面的表示 184
8.3 如何設計用戶界面 185
8.3.1 用戶界面設計的過程 185
8.3.2 用戶界面設計的原則 186
8.3.3 初步設計用戶界面 187
8.3.4 建立用戶界面間的跳轉關系 188
8.3.5 精化用戶界面設計 189
8.5 用戶界面設計的文檔化和原型化及評審 190
8.5.1 用戶界面設計的文檔化和原型化 190
8.5.2 用戶界面設計的評審 190
8.6 本章小結和思維導圖 191
8.7 閱讀推薦 192
8.8 知識測驗 192
8.9 工程實訓 192
8.10 綜合實踐 193
第9章 軟件詳細設計 194
9.1 問題引入 194
9.2 何為詳細設計 194
9.2.1 軟件詳細設計的概念 194
9.2.2 軟件詳細設計任務 195
9.2.3 軟件詳細設計的原則 195
9.3 結構化詳細設計方法 196
9.4 面向對象詳細設計方法 197
9.4.1 面向對象詳細設計過程 197
9.4.2 用例設計 198
9.4.3 類設計 203
9.4.4 數據設計 206
9.5 基於大模型的智能化軟件詳細設計 208
9.6 支持詳細設計的CASE工具 209
9.7 軟件詳細設計的文檔化和評審 209
9.8 本章小結和思維導圖 211
9.9 閱讀推薦 211
9.10 知識測驗 212
9.11 工程實訓 212
9.12 綜合實踐 212
第 10章 代碼編寫與部署 214
10.1 問題引入 214
10.2 何為編寫代碼 214
10.2.1 編寫代碼的任務 214
10.2.2 編程語言選擇 214
10.3 如何編寫代碼 215
10.3.1 編寫代碼的依據和過程 215
10.3.2 編寫代碼的原則 216
10.3.3 結構化編程與面向對象編程 216
10.3.4 基於大模型的智能化代碼生成和推薦 217
10.3.5 基於代碼片段的重用來編寫代碼 218
示例10.2 軟件開發知識分享社區中的代碼片段及其重用 218
10.4 代碼缺陷和調試 218
10.4.1 軟件缺陷、錯誤和失效的概念 218
10.4.2 軟件缺陷的描述 219
10.4.3 程序調試 219
10.4.4 基於群智知識來解決代碼調試和糾錯問題 220
10.5 代碼質量保證 221
10.5.1 程序內部質量和外部質量 221
10.5.2 程序編碼風格 222
10.5.3 模塊化程序設計 223
10.5.4 代碼重用 224
10.5.5 程序質量分析 225
10.6 軟件部署 226
10.6.1 軟件運行環境 226
10.6.2 軟件部署的概念和原則 227
10.6.3 軟件部署方式 227
10.7 支持代碼編寫和部署的CASE工具 228
10.8 程序員 229
10.9 本章小結和思維導圖 230
10.10 閱讀推薦 231
10.11 知識測驗 231
10.12 工程實訓 232
10.13 綜合實踐 232
第 11章 軟件測試 233
11.1 問題引入 233
11.2 何為軟件測試 233
11.2.1 軟件測試的概念 233
11.2.2 軟件測試的機理 234
11.2.3 軟件測試面臨的挑戰 234
11.3 如何進行軟件測試 235
11.3.1 軟件測試用例的描述 235
11.3.2 軟件測試用例的設計-白盒測試技術 236
11.3.3 軟件測試用例的設計-黑盒測試技術 238
11.3.4 非功能測試技術 240
11.3.5 軟件測試的實施 240
11.3.6 智能化軟件測試 241
示例11. 6 借助智能化軟件開發工具來自動生成軟件測試用例 242
11.4 軟件測試的過程和活動 242
11.4.1 軟件測試的步驟 242
11.4.2 軟件測試的活動 243
11.5 支持軟件測試的CASE工具 244
11.6 軟件測試工程師 244
11.7 本章小結和思維導圖 245
11.8 閱讀推薦 246
11.9 知識測驗 246
11.10 工程實訓 247
11.11 綜合實踐 247
第 12章 軟件維護 248
12.1 問題引入 248
12.2 何為軟件維護 248
12.2.1 軟件維護概念 248
12.2.2 軟件維護的特點 249
12.2.3 軟件的可維護性 250
12.3 為什麽要對軟件進行維護 250
12.3.1 軟件邏輯老化問題 250
12.3.2 產生軟件邏輯老化的原因 251
12.3.3 處理軟件邏輯老化問題的策略 252
12.4 如何進行軟件維護 252
12.4.1 軟件維護面臨的問題 252
12.4.2 軟件維護的過程 253
12.4.3 軟件維護技術 254
12.5 支持軟件維護的CASE工具 256
12.6 軟件維護工程師 256
12.7 本章小結和思維導圖 257
12.8 閱讀推薦 258
12.9 知識測驗 258
12.10 工程實訓 258
12.11 綜合實踐 258