軟件工程概論
-
【作 者】倪天林 王偉娜
【I S B N 】978-7-5170-2105-6
【責任編輯】陳潔
【適用讀者群】高職高專
【出版時間】2014-09-22
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數】368
【千字數】507
【印 張】23
【定 價】¥45
【叢 書】高職高專院校“十二五”精品示范系列教材(軟件技術專業群)
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
軟件工程是軟件工程(或軟件技術)專業的一門核心課程,也是計算機科學與技術、信息管理等相關專業的主干課程,同時也是軟件設計人員、程序開發人員、軟件測試人員和軟件項目管理人員等應具備的專門知識。
本書全面系統地講授了軟件工程的理論、方法和技術,書中運用大量的軟件開發實例,采用圖文并茂的形式來組織、理解知識內容。每章給出多種形式的習題練習,以鞏固所學知識,書中安排有大量實訓,以指導學生進行軟件開發練習。全書共13章,內容包括軟件工程概述、可行性研究、需求分析、概要設計、詳細設計、程序編碼、面向對象的分析與設計、統一建模語言UML、統一軟件開發過程RUP、軟件測試、軟件維護、軟件項目管理及軟件復用技術。
本書可作為高等院校軟件工程課程的教材或教學參考書,也可供有一定實際經驗的軟件工作人員和需要開發應用軟件的廣大計算機用戶閱讀參考。
平臺課+ 模塊課 搭建專業群課程
實例驅動+ 項目同步 優化內容 新穎實用
教材+ 案例+ 實戰素材 立體化資源相結合
前 言
軟件工程是研究軟件開發技術和軟件項目管理的一門工程學科,從工程化的角度來指導軟件開發、測試和項目管理等活動。軟件工程研究的范圍非常廣泛,包括技術方法、工具和管理等許多方面,軟件工程又是一門迅速發展的新興學科,新的技術方法和工具不斷涌現。本書是軟件工程的入門教材,著重從實用角度講述軟件工程的基本原理、概念和方法,同時也力求做到知識的全面性和系統性。本書既適用于軟件工程教學,又能對實際的軟件開發工作提供指導與幫助。
軟件工程是軟件工程(或軟件技術)專業的一門核心課程,也是計算機科學與技術、信息管理等相關專業的主干課程,同時也是軟件設計人員、程序開發人員、軟件測試人員和軟件項目管理人員等應具備的專門知識。
高等職業教育是以就業為導向的職業能力教育,是培養數以萬計高技能人才的主力軍。高技能人才必須具有較強的技術應用能力,這就要求高職院校要加大對學生實際操作能力的培養。本書旨在借鑒國內外優秀教材的基礎上,以多年的教學實踐為基礎,采用工學結合的方式,全面系統地組織教學內容,既注重知識的系統性和完整性,又突出技術能力的實踐性。全書全面系統地講授了軟件工程的理論、方法和技術,書中運用大量的軟件開發實例,采用圖文并茂的形式來組織、理解知識內容。每章給出多種形式的習題練習,以鞏固所學知識,書中安排有大量實訓,以指導學生進行軟件開發練習。
全書共13章,內容包括軟件工程概述、可行性研究、需求分析、概要設計、詳細設計、程序編碼、面向對象的分析與設計、統一建模語言UML、統一軟件開發過程RUP、軟件測試、軟件維護、軟件項目管理及軟件復用技術。
本書可作為高等院校軟件工程課程的教材或教學參考書,也可供有一定實際經驗的軟件工作人員和需要開發應用軟件的廣大計算機用戶閱讀參考。
本書由倪天林、王偉娜任主編,負責設計編寫大綱、修改定稿。各章的分工是:第1章、第9章由倪天林編寫,第2章、第3章由王偉娜、張曉紅編寫,第4章、第5章由羅東芳編寫,第6章、第7章由郭峰、孫惠娟編寫,第8章、第13章由祁慧敏編寫,第10章由倪天林、董潔編寫,第11章、12章由王偉娜、張恩賓編寫。
在編寫過程中得到了中國水利水電出版社向輝同志、祝智敏同志的指導與支持,同時得到了責任編輯的認真審閱。此外,本教材還參考和借鑒了許多專家學者的研究成果,在此一并表示謝意。
由于編者水平所限,不足之處在所難免,敬請讀者批評指正,以便在以后修訂時加以改進和更正。
編者
2014年3月
1.1 軟件的概念和特點 1
1.1.1 計算機系統的構成及實現 1
1.1.2 軟件的概念 1
1.1.3 軟件的特點 2
1.1.4 計算機軟件的分類 2
1.2 軟件的發展和軟件危機 3
1.2.1 計算機軟件的發展過程 3
1.2.2 軟件危機 3
1.3 軟件工程及其原理 5
1.3.1 軟件工程的概念 5
1.3.2 軟件工程的要素 5
1.3.3 軟件工程的目標 6
1.3.4 軟件工程的原則 6
1.3.5 軟件工程的基本原理 7
1.3.6 軟件開發方法 8
1.4 軟件生存周期及其模型 9
1.4.1 軟件定義時期 9
1.4.2 軟件開發時期 10
1.4.3 軟件運行與維護時期 10
1.4.4 軟件生存周期模型 11
習題一 15
第2章 可行性研究 17
2.1 問題定義 17
2.1.1 問題定義的內容 17
2.1.2 問題定義的步驟 17
2.1.3 問題定義報告 18
2.2 可行性研究的任務 18
2.2.1 技術可行性 18
2.2.2 經濟可行性 19
2.2.3 操作可行性 19
2.2.4 法律可行性 19
2.3 可行性研究的步驟 19
2.3.1 確定項目規模和目標 19
2.3.2 研究正在運行的系統 20
2.3.3 建立目標系統的高層邏輯模型 20
2.3.4 導出和評價各種方案 20
2.3.5 推薦可行的方案 20
2.3.6 編寫可行性研究報告 20
2.4 系統流程圖 21
2.4.1 系統流程圖的作用 21
2.4.2 系統流程圖的符號 21
2.5 成本—效益分析 22
2.5.1 成本估計 22
2.5.2 兩種成本估算技術 23
2.5.3 度量效益的方法 24
2.6 可行性研究報告 24
2.7 項目開發計劃 25
實訓 25
習題二 26
第3章 需求分析 28
3.1 需求分析任務 28
3.1.1 需求分析的意義 28
3.1.2 需求分析的步驟 29
3.1.3 需求分析的具體任務 31
3.2 需求分析的基本原則 31
3.3 需求分析過程 32
3.3.1 需求獲取 32
3.3.2 需求建模 33
3.3.3 編寫需求分析文檔 34
3.3.4 需求評審 34
3.4 需求獲取方法 35
3.4.1 需求需要獲取的內容 35
3.4.2 需求獲取的方法 36
3.4.3 需求調研的步驟 37
3.5 需求分析模型 39
3.5.1 實體關系圖 39
3.5.2 數據流圖 41
3.5.3 狀態轉換圖 46
3.6 數據字典 47
3.6.1 數據字典的概念和組成 47
3.6.2 數據字典各部分的描述 48
3.6.3 詞條描述 49
3.6.4 數據字典中的符號 51
3.7 需求規格說明書 52
3.7.1 引言 53
3.7.2 任務概述 53
3.7.3 需求規定 53
3.7.4 運行環境規定 54
實訓 54
習題三 56
第4章 概要設計 60
4.1 軟件設計過程 60
4.1.1 軟件設計過程 60
4.1.2 目標系統的運行環境 62
4.2 概要設計的目標和任務 62
4.2.1 概要設計的目標 62
4.2.2 概要設計的任務 62
4.3 概要設計原則 63
4.3.1 模塊化 63
4.3.2 抽象 65
4.3.3 自頂向下,逐步細化 65
4.3.4 信息隱蔽 66
4.3.5 模塊獨立性 66
4.4 體系結構設計工具 70
4.4.1 結構圖 70
4.4.2 HIPO圖 72
4.5 概要設計的啟發式規則 74
4.5.1 提高模塊獨立性 74
4.5.2 模塊大小要適中 74
4.5.3 模塊應具有高扇入和適當的扇出 74
4.5.4 軟件結構中的深度和寬度不宜過大 75
4.5.5 模塊的作用域應處于控制域之內 75
4.5.6 盡量降低模塊的接口復雜度 77
4.5.7 設計單入口、單出口的模塊 77
4.5.8 模塊功能應該可以預測 77
4.6 面向數據流的設計方法 77
4.6.1 SD方法實施的步驟 78
4.6.2 變換分析 79
4.6.3 事務分析 87
4.6.4 軟件模塊結構的改進 88
4.6.5 設計后的處理 90
4.7 概要設計說明書 90
實訓 91
習題四 93
第5章 詳細設計 96
5.1 詳細設計的任務與原則 96
5.1.1 詳細設計的任務 96
5.1.2 詳細設計的原則 97
5.2 結構化程序設計 97
5.2.1 結構化程序設計的概念 97
5.2.2 結構化和非結構化程序設計方法
的比較 97
5.2.3 結構化程序設計的原則 98
5.2.4 結構化程序設計的優點 99
5.3 過程設計工具 99
5.3.1 程序流程圖 99
5.3.2 盒圖(N-S圖) 102
5.3.3 PAD圖 102
5.3.4 判定表 103
5.3.5 判定樹 104
5.3.6 PDL語言 104
5.4 用戶界面設計 106
5.4.1 用戶界面設計的“黃金規則” 106
5.4.2 用戶界面設計過程 106
5.4.3 用戶界面的主要形式 107
5.4.4 界面設計應考慮的因素 109
5.4.5 用戶界面設計分析 109
5.4.6 用戶界面的質量要求 111
5.5 數據庫設計 111
5.5.1 數據需求分析 112
5.5.2 概念結構設計 112
5.5.3 邏輯結構設計 112
5.5.4 物理結構設計 113
5.5.5 數據庫的實施 113
5.6 接口設計 113
5.6.1 軟件接口設計的依據 113
5.6.2 軟件接口的類型 113
5.6.3 應用程序編程接口 114
5.7 詳細設計說明書 114
實訓 116
習題五 118
第6章 程序編碼 120
6.1 程序編碼的目的和任務 120
6.1.1 程序編碼的目的 120
6.1.2 程序編碼的任務 121
6.2 程序設計語言 121
6.2.1 程序設計語言的分類 121
6.2.2 程序設計語言的選擇 122
6.3 編碼風格 123
6.3.1 源程序文檔化 123
6.3.2 數據說明 124
6.3.3 語句結構 125
6.3.4 輸入/輸出方式 126
6.4 程序效率 127
6.4.1 程序效率的準則 127
6.4.2 算法對效率的影響 127
6.4.3 存儲效率 127
6.4.4 輸入/輸出效率 128
6.5 冗余編程及容錯技術 128
6.5.1 冗余編程 128
6.5.2 軟件容錯技術 129
6.6 程序復雜性的度量 132
6.6.1 代碼行度量法 132
6.6.2 McCabe度量法 133
實訓 134
習題六 135
第7章 面向對象的分析與設計 137
7.1 面向對象概述 137
7.1.1 面向對象方法 137
7.1.2 面向對象的基本概念 139
7.1.3 面向對象的特性 145
7.2 面向對象分析與對象模型化技術 146
7.2.1 面向對象的分析過程 146
7.2.2 面向對象的開發方法 148
7.2.3 對象模型化技術 149
7.2.4 Coad&Yourdon面向對象分析 153
7.3 面向對象設計 158
7.3.1 面向對象設計準則 158
7.3.2 面向對象設計的啟發式規則 160
7.3.3 Coad&Yourdon 設計方法 161
7.4 面向對象編程 164
7.4.1 面向對象語言的優點 164
7.4.2 面向對象語言的技術特點 165
7.4.3 選擇面向對象語言的現實因素 167
7.4.4 程序設計風格 168
案例:自動取款機(ATM)系統的分析
與設計 169
習題七 178
第8章 統一建模語言UML 180
8.1 UML概述 180
8.1.1 UML的產生和發展 180
8.1.2 UML的組成 181
8.1.3 UML視圖 182
8.1.4 UML的主要特點 184
8.1.5 UML的應用 185
8.2 通用模型元素 186
8.2.1 模型元素 186
8.2.2 約束 187
8.2.3 依賴關系 187
8.2.4 細化 188
8.2.5 注釋 188
8.3 靜態建模機制 189
8.3.1 用例圖 189
8.3.2 類圖和對象圖 193
8.3.3 包圖 200
8.3.4 構件圖 201
8.3.5 配置圖 202
8.4 動態建模機制 203
8.4.1 消息 203
8.4.2 順序圖 204
8.4.3 協作圖 205
8.4.4 狀態圖 207
8.4.5 活動圖 210
案例:醫院電話掛號系統 213
實訓 217
習題八 221
第9章 統一軟件開發過程RUP 223
9.1 RUP概述 223
9.1.1 RUP的意義 223
9.1.2 RUP的特點 224
9.2 RUP的二維開發模型 227
9.3 RUP開發階段及里程碑 228
9.3.1 初始階段 229
9.3.2 細化階段 229
9.3.3 構造階段 230
9.3.4 交付階段 231
9.4 RUP的四個要素 232
9.4.1 人員至關重要 233
9.4.2 項目創造產品 233
9.4.3 產品不僅僅是代碼 234
9.4.4 過程指導項目 234
9.4.5 工具對于過程不可或缺 235
9.5 RUP制品 235
9.5.1 模型 235
9.5.2 其他制品 236
9.6 RUP的核心工作流 236
9.6.1 業務建模 237
9.6.2 需求 238
9.6.3 分析 240
9.6.4 設計 241
9.6.5 實現 244
9.6.6 測試 246
9.6.7 部署 248
9.6.8 配置和變更管理 249
9.6.9 項目管理 249
9.6.10 環境 249
9.7 RUP裁剪 251
9.8 RUP的迭代開發模式 251
習題九 253
第10章 軟件測試 255
10.1 軟件測試基礎 255
10.1.1 軟件測試的意義 255
10.1.2 軟件測試的目標 256
10.1.3 軟件測試的原則 256
10.1.4 軟件測試的信息流 257
10.1.5 軟件測試的對象 258
10.1.6 軟件測試與軟件開發階段的關系 258
10.1.7 軟件測試有關概念 259
10.2 軟件測試方法 260
10.2.1 靜態測試和動態測試 260
10.2.2 白盒測試和黑盒測試 260
10.2.3 測試用例的設計 262
10.3 軟件測試策略 281
10.4 軟件測試過程 281
10.4.1 單元測試 282
10.4.2 集成測試 283
10.4.3 確認測試 285
10.4.4 系統測試 287
10.4.5 調試 288
10.5 面向對象的測試 290
10.5.1 面向對象測試模型 291
10.5.2 面向對象分析的測試 291
10.5.3 面向對象設計的測試 293
10.5.4 面向對象編程的測試 294
10.5.5 面向對象的單元測試 294
10.5.6 面向對象的集成測試 295
10.5.7 面向對象的系統測試 295
10.6 測試計劃和分析報告 295
10.6.1 軟件測試計劃 296
10.6.2 測試分析報告 298
實訓 300
習題十 302
第11章 軟件維護 305
11.1 軟件維護概述 305
11.1.1 軟件維護的定義 305
11.1.2 軟件維護的類型 306
11.1.3 影響軟件維護工作量的因素 307
11.1.4 造成軟件維護困難的因素 308
11.1.5 結構化維護與非結構化維護 308
11.2 軟件維護策略 309
11.2.1 改正性維護 309
11.2.2 適應性維護 309
11.2.3 完善性維護 310
11.3 軟件維護成本 310
11.4 軟件維護的實施 310
11.4.1 軟件維護機構 310
11.4.2 軟件維護報告 311
11.4.3 軟件維護工作流程 312
11.4.4 軟件維護步驟 312
11.4.5 編寫維護檔案記錄 313
11.4.6 維護評價 314
11.5 軟件的可維護性 314
11.5.1 影響軟件可維護性的因素 314
11.5.2 軟件可維護性的度量 315
11.5.3 提高軟件可維護性的方法 318
11.6 軟件維護的副作用 321
11.6.1 軟件維護副作用的類型 321
11.6.2 控制軟件維護副作用的策略 322
習題十一 322
第12章 軟件項目管理 324
12.1 軟件項目管理概述 324
12.1.1 軟件項目管理的意義 324
12.1.2 軟件項目的特點 325
12.1.3 軟件項目管理的職能 325
12.2 軟件項目計劃 325
12.2.1 軟件項目計劃的目標和風險分析 325
12.2.2 軟件項目計劃的類型 325
12.2.3 項目實施計劃中任務的劃分 326
12.2.4 項目的進度安排 326
12.3 軟件項目組織 328
12.3.1 組織原則 329
12.3.2 組織結構的模式 329
12.3.3 程序設計小組的組織形式 330
12.4 軟件項目的人員配備 331
12.4.1 項目開發各階段所需人員 332
12.4.2 配備人員的原則 332
12.4.3 對項目經理的要求 333
12.4.4 評價軟件開發人員的標準 333
12.5 軟件配置管理 333
12.5.1 軟件配置管理的概念 333
12.5.2 軟件配置管理的基本目標 334
12.5.3 基線 334
12.5.4 軟件配置項 334
12.5.5 版本控制 335
12.5.6 變更控制 336
12.5.7 軟件配置管理應注意的問題 337
12.6 軟件質量管理 337
12.6.1 軟件質量的含義 337
12.6.2 影響軟件質量的因素 337
12.6.3 軟件質量保證措施 339
12.7 軟件能力成熟度模型 340
12.7.1 軟件過程的度量 340
12.7.2 關鍵過程域 340
實訓 342
習題十二 344
第13章 軟件復用技術 346
13.1 軟件復用概述 346
13.1.1 軟件復用的意義 346
13.1.2 軟件復用的層次 347
13.1.3 軟件成分的重用級別 348
13.2 可復用的軟件成分 348
13.3 軟件復用過程 349
13.4 軟件復用環境 350
13.5 面向對象的復用技術 351
13.5.1 類構件的復用 351
13.5.2 類庫 352
13.5.3 產生所需類的次序 353
13.5.4 既存類的復用方法 353
習題十三 354
參考文獻 356
- 機械制圖 [許淑珍 于利民]
- 微積分(經管類)導學篇(下冊) [王海棠 曹海軍 周玲麗]
- 大學生創新創業基礎 [主編 姜國權 姜福佳]
- 農產品云倉模式研究—以北京農產品流通物流供應鏈重構為例 [武曉釗 王成林 王春娟 等著]
- 信息技術(微課版) [王云 徐江鴻 李清霞 羅學鋒 ]
- 管理基礎與實務 [主編 王鳳基 顏漢軍]
- 高等數學導學篇(下冊) [主編 李文婧 胡雷 尹金生]
- 高等數學導學篇(上冊) [主編 李文婧 胡雷 尹金生]
- 高等數學(下冊) [主編 李愛芹 胡雷 尹金生]
- 高等數學(上冊) [主編 李愛芹 胡雷 尹金生]
- 庭院風骨—樹、灌、籬 [創意房主 著]
- Python語言程序設計教程 [郭其標 房宜汕]
- 微積分(經管類)教程篇(下冊) [曹海軍 王海棠 周玲麗]
- 微積分(經管類)教程篇(上冊) [曹海軍 王海棠 周玲麗]
- 微積分(經管類)導學篇(上冊) [王海棠 曹海軍 周玲麗]
- 網站前端技術案例教程(HTML+CSS+JavaScript)(第二版) [黃華升]
- 線性代數 [主編 史昱 陳鳳欣]
- 電力電子技術課程學習及實驗指導 [主編 陳榮]
- 成長對話:青春的榜樣 [主編 施端銀 黃武剛 應巨林]
- 人工智能應用基礎 [主編 楊纓 李佳]
- 中華水文化(慕課版)(第二版) [畢雪燕 楊華軻 羅玲誼 等編著]
- 電路與電子技術Ⅱ——電路分析基礎 [主編 陳曉 金哲]
- 飛機維修專業英語——飛機系統(第二版) [趙迎春]
- 英語大爆炸:跟趣味情景劇學口語(微課版) [秦然 編著]
- 機械工程制圖任務跟蹤訓練 [主編 王瑞清 趙金考 周彥云 ]
- 機械工程制圖 [主編 覃國萍 劉百順 禹晨]
- 平面設計與制作項目化教程 [主編 李晨]
- 后期影像剪輯技術 [主編 郭建偉]
- 人工智能概論(第二版) [主編 任云暉 丁紅 徐迎春 ]
- 信息時代美育之道 [主編 劉宏宇 黎婭]