內容簡介
本書著重從實用角度講述軟體工程的基本概念、原理和方法,系統地介紹目前較成熟的、廣泛使用的軟體工程技術。內容包括軟體工程概述,軟體計畫(軟體定義、可行性分析、需求分析),結構化設計(概要設計、詳細設計、界面設計和數據代碼設計等),軟體編碼與軟體測試,軟體維護,面向對象方法學與統一建模語言(UML),面向對象軟體設計與實現,軟體工程技術發展(CASE技術、軟體重用、RUP統一過程、Rational Rose簡介、軟體構件模型比較),軟體工程管理,軟體開發實例。每章都有小結供讀者復結,作者精心挑選了習題供讀者練習。
圖書目錄
第1章 概述 1
1.1 軟體工程的產生 1
1.1.1 軟體工程發展史 1
1.1.2 軟體危機 2
1.2 軟體工程學 4
1.2.1 什麼是軟體 4
1.2.2 什麼是軟體工程 4
1.2.3 軟體工程學的內容 4
1.2.4 軟體過程 7
1.2.5 軟體工程的基本原理 7
1.3 軟體生命周期 7
1.3.1 軟體生命周期的定義 7
1.3.2 軟體生命周期劃分階段的原則 8
1.3.3 軟體生命周期各階段的任務 8
1.4 軟體開發模型 9
1.4.1 瀑布模型 9
1.4.2 快速原型模型 11
1.4.3 增量模型 12
1.4.4 噴泉模型 13
1.4.5 螺旋模型 14
1.4.6 統一過程 15
小結 16
習題1 17
第2章 軟體計畫 19
2.1 軟體問題定義及可行性研究 19
2.1.1 軟體問題定義 19
2.1.2 可行性研究 20
2.1.3 制訂項目開發計畫 21
2.2 需求分析的任務 22
2.2.1 確定目標系統的具體要求 22
2.2.2 建立目標系統的邏輯模型 24
2.2.3 軟體需求規格說明 24
2.2.4 修正系統開發計畫 25
2.2.5 制訂初步的系統測試計畫 25
2.2.6 編寫初步的用戶手冊 25
2.2.7 編寫數據要求說明書 26
2.3 需求分析步驟 27
2.3.1 進行調查研究 27
2.3.2 分析和描述系統的邏輯模型 27
2.3.3 複審 28
2.4 實體-關係圖 28
2.4.1 實體 29
2.4.2 屬性 29
2.4.3 關係 29
2.5 數據流圖 30
2.5.1 數據流圖的基本符號 30
2.5.2 數據流圖的附加符號 31
2.5.3 畫數據流圖的步驟 32
2.5.4 幾點注意事項 32
2.6 狀態轉換圖 35
2.7 數據字典 36
2.7.1 數據字典的內容 36
2.7.2 數據字典使用的符號 37
2.7.3 數據字典與圖形工具 38
2.8 需求分析的其他圖形工具 38
2.8.1 層次圖 39
2.8.2 Warnier圖 39
2.8.3 IPO圖 40
2.9 軟體計畫階段文檔 40
2.9.1 軟體計畫階段文檔的編寫步驟 40
2.9.2 軟體計畫實例 41
小結 46
習題2 46
第3章 結構化設計 48
3.1 軟體設計步驟 48
3.1.1 概要設計步驟 48
3.1.2 詳細設計的基本任務 50
3.2 軟體結構設計 51
3.2.1 軟體結構設計的基本原理 51
3.2.2 模組化 53
3.2.3 模組獨立性 54
3.2.4 模組設計啟發規則 58
3.3 軟體結構設計的圖形工具 59
3.3.1 層次圖(或HIPO圖) 59
3.3.2 結構圖 60
3.4 面向數據流的設計方法 61
3.5 過程設計工具 63
3.5.1 流程圖 63
3.5.2 盒圖 67
3.5.3 PAD圖 69
3.5.4 判定表 70
3.5.5 判定樹 71
3.5.6 過程設計語言 71
3.6 系統人機界面設計 72
3.6.1 人機界面設計問題 72
3.6.2 人機界面設計過程 73
3.6.3 評估界面設計的標準 73
3.6.4 界面設計指南 73
3.7 數據代碼設計 75
3.7.1 代碼設計的目的 75
3.7.2 代碼設計的原則 75
3.7.3 代碼種類 76
3.7.4 代碼設計方法 78
3.8 面向數據結構的設計方法 78
3.9 軟體設計文檔 82
3.9.1 概要設計說明書 82
3.9.2 資料庫設計說明書 83
3.9.3 詳細設計說明書 84
3.9.4 操作手冊編寫提示 85
小結 86
習題3 86
第4章 軟體編碼和軟體測試 89
4.1 結構化程式設計 89
4.1.1 程式設計語言的選擇 89
4.1.2 程式設計風格 91
4.2 軟體測試目標 93
4.3 軟體測試方法 94
4.3.1 靜態分析與動態測試 94
4.3.2 黑盒法與白盒法 94
4.4 軟體測試步驟 95
4.4.1 模組測試 95
4.4.2 集成測試 95
4.4.3 程式審查會和人工運行 96
4.4.4 確認測試 97
4.4.5 平行運行 97
4.5 設計軟體測試方案 98
4.5.1 等價類劃分法 98
4.5.2 邊界值分析法 99
4.5.3 錯誤推測法 99
4.5.4 邏輯覆蓋法 99
4.5.5 程式環形複雜度的度量 102
4.5.6 因果圖法 105
4.5.7 用基本路徑覆蓋法設計測試用例 107
4.6 軟體測試原則和策略 110
4.6.1 軟體測試原則 110
4.6.2 實用測試策略 111
4.7 軟體調試、驗證與確認 111
4.7.1 軟體調試 111
4.7.2 軟體驗證 112
4.7.3 軟體確認 112
4.8 軟體測試文檔 113
小結 114
習題4 114
第5章 軟體維護 118
5.1 軟體維護的種類、過程和副作用 118
5.1.1 軟體維護的種類 118
5.1.2 軟體維護的特點 119
5.1.3 軟體維護的過程 120
5.1.4 軟體維護的副作用 123
5.2 軟體的可維護性 124
5.2.1 決定可維護性的因素 124
5.2.2 可維護性的度量 124
5.2.3 如何提高軟體的可維護性 125
小結 126
習題5 126
第6章 面向對象方法學與UML 128
6.1 面向對象方法概述 128
6.1.1 面向對象方法學的要素和優點 129
6.1.2 面向對象方法的概念 130
6.2 UML概述 133
6.2.1 UML的發展 133
6.2.2 UML的內容 133
6.3 UML圖 135
6.3.1 用例圖 135
6.3.2 類圖和包 137
6.3.3 對象圖 141
6.3.4 狀態圖 142
6.3.5 順序圖 143
6.3.6 活動圖 144
6.3.7 協作圖 144
6.3.8 構件圖 145
6.3.9 部署圖 145
6.4 UML的套用 147
6.4.1 UML模型 147
6.4.2 UML視圖 148
6.4.3 UML使用準則 150
6.4.4 UML的擴展機制 151
6.4.5 UML的套用領域 152
小結 153
習題6 153
第7章 面向對象軟體設計與實現 155
7.1 面向對象分析 155
7.1.1 面向對象分析過程 155
7.1.2 面向對象分析原則 156
7.2 建立對象模型 157
7.2.1 建立對象模型的基本方法 157
7.2.2 確定對象和類 158
7.2.3 確定類的相互關係 159
7.2.4 劃分主題 162
7.3 建立動態模型 164
7.4 建立功能模型 167
7.5 面向對象設計 169
7.5.1 系統設計 169
7.5.2 對象設計 172
7.5.3 面向對象設計的準則 173
7.5.4 面向對象設計的啟發規則 174
7.6 面向對象系統的實現 174
7.6.1 選擇程式設計語言 174
7.6.2 面向對象程式設計風格 175
7.6.3 面向對象實現的人員分工 177
7.7 面向對象的測試 177
7.7.1 面向對象的測試策略 177
7.7.2 面向對象的測試步驟 179
7.8 面向對象方法實例 183
7.8.1 面向對象分析實例 183
7.8.2 面向對象的設計實例 188
小結 193
習題7 193
第8章 軟體工程技術的發展 196
8.1 CASE技術 196
8.2 軟體工具 198
8.2.1 軟體工具的功能 198
8.2.2 軟體工具的性能 199
8.2.3 軟體工具的分類 199
8.3 軟體開發環境 200
8.4 軟體重用 202
8.4.1 可重用的軟體成分 202
8.4.2 軟體重用過程模型 203
8.4.3 開發可重用的軟體構件 204
8.4.4 分類和檢索軟體構件 205
8.5 RUP 206
8.6 Rational Rose簡介 208
8.6.1 Rational Rose 界面 210
8.6.2 Rational Rose模型的4個視圖 211
8.6.3 Rational Rose的使用 212
8.7 幾種軟體構件模型比較 213
8.7.1 CORBA 213
8.7.2 COM /DCOM 214
8.7.3 JavaBean 214
8.7.4 三種構件模型的分析比較 216
8.7.5 軟體構架技術 217
小結 218
習題8 218
第9章 軟體工程管理 219
9.1 軟體工程管理概述 219
9.2 軟體規模估算 220
9.2.1 軟體開發成本估算方法 220
9.2.2 代碼行技術 221
9.2.3 功能點技術 222
9.2.4 COCOMOⅡ模型 223
9.3 進度計畫 225
9.3.1 Gantt圖 225
9.3.2 工程網路技術 226
9.4 人員組織 228
9.5 軟體配置管理 231
9.6 軟體質量保證 233
9.6.1 軟體質量的特性 233
9.6.2 軟體質量保證措施 234
9.7 軟體開發風險管理 235
9.7.1 軟體開發風險的分類 236
9.7.2 軟體開發風險的識別 237
9.7.3 軟體開發的風險預測 237
9.7.4 處理軟體開發風險的策略 239
9.8 軟體工程標準與軟體文檔 240
9.8.1 軟體工程標準 240
9.8.2 軟體文檔的編寫 242
小結 243
習題9 243
第10章 實例——軟體開發實例與軟體工程實踐環節 245
10.1 問題定義 245
10.2 可行性研究 245
10.2.1 技術可行性 246
10.2.2 經濟可行性 246
10.3 需求分析 246
10.4 概要設計 248
10.4.1 資料庫結構設計 248
10.4.2 系統結構設計 248
10.4.3 設計測試方案 249
10.5 詳細設計 250
10.5.1 系統界面設計 250
10.5.2 考前處理 251
10.5.3 輸入設計 251
10.5.4 成績處理 252
10.5.5 錄用過程設計 252
10.5.6 輸出設計 253
10.5.7 測試用例設計 253
10.6 程式設計提示 255
10.7 軟體測試 256
10.8 軟體工程實踐環節 256
10.8.1 軟體工程課程設計實驗指導書(供參考) 257
10.8.2 職工工資管理系統 258
10.8.3 某校醫療費管理系統 258
10.8.4 學生成績管理系統 259
10.8.5 患者監護系統 259
10.8.6 銀行儲蓄管理系統 260
10.8.7 旅館客房管理 260
10.8.8 辦公室管理系統 260
10.8.9 商品銷售管理系統 261
習題10 262
附錄A 部分習題解答 263
參考文獻 276
作者簡介
女,上海套用技術學院教授,長期從事計算機教學工作,主講軟體工程,程式設計,數據結構等課程,有豐富的教學經驗,主編的《實用軟體工程》教材已經出版了第3版,累計印量幾萬冊,被幾百所高校選作了教材,深受師生歡迎。