軟體工程(第3版)

軟體工程(第3版)

《軟體工程(第3版)》,作者是張海藩、倪寧。本書可以作為高等院校“軟體工程”課程的教材或教學參考書,也可以供程式設計師、軟體測試工程師、系統工程師以及軟體項目經理等相關人員閱讀參考。

內容提要

本書是軟體工程領域的經典教材。

全書由5篇(16章)構成,第1篇(第1、2章)講述軟體工程與軟體過程;第2篇講述傳統方法學(第3~5章),包括結構化分析、設計與實現;第3篇講述面向對象方法學(第6~10章),包括面向對象的概念、模型、分析、設計、實現,同時介紹了統一建模語言UML;第4篇講述軟體項目管理(第11~14章),包括軟體項目的計畫、組織和控制,並介紹一些相關的國際標準;第5篇講述軟體工程的高級課題(第15、16章),包括形式化方法和軟體重用。

目錄

第1篇 軟體工程與軟體過程

第1章 軟體工程概述 1

1.1 軟體危機與軟體工程的起源 1

1.1.1 計算機系統的發展歷程 1

1.1.2 軟體危機介紹 2

1.1.3 產生軟體危機的原因 2

1.1.4 消除軟體危機的途徑 4

1.2 軟體工程 5

1.2.1 什麼是軟體工程 5

1.2.2 軟體工程的基本原理 5

1.3 軟體工程包含的領域 7

小結 9

習題 9

第2章 軟體過程 11

2.1 軟體生命周期的基本任務 11

2.2 瀑布模型 14

2.3 快速原型模型 16

2.4 增量模型 17

2.5 螺旋模型 18

2.6 噴泉模型 19

2.7 Rational統一過程 20

2.7.1 最佳實踐 21

2.7.2 RUP的十大要素 22

2.7.3 RUP生命周期 24

2.8 敏捷過程與極限編程 26

2.8.1 敏捷過程概述 26

2.8.2 極限編程 27

2.9 能力成熟度模型 29

2.9.1 能力成熟度模型的結構 30

2.9.2 能力成熟度等級 31

2.9.3 關鍵過程域 32

2.9.4 套用CMM 33

小結 33

習題 34

第2篇 傳統方法學

第3章 結構化分析 35

3.1 概述 35

3.2 與用戶溝通的方法 36

3.2.1 訪談 36

3.2.2 簡易的套用規格說明技術 37

3.2.3 軟體原型 38

3.3 分析建模與規格說明 39

3.3.1 分析建模 39

3.3.2 軟體需求規格說明 39

3.4 實體-關係圖 41

3.5 數據流圖 42

3.5.1 數據流圖符號 43

3.5.2 例子 44

3.5.3 命名 46

3.6 狀態轉換圖 47

3.6.1 狀態 47

3.6.2 事件 47

3.6.3 符號 48

3.6.4 例子 48

3.7 數據字典 49

3.8 結構化分析實例 51

3.8.1 問題陳述 51

3.8.2 問題定義 51

3.8.3 可行性研究 52

3.8.4 需求分析 57

小結 62

習題 63

第4章 結構化設計 65

4.1 結構化設計與結構化分析的關係 65

4.2 軟體設計的概念和原理 66

4.2.1 模組化 66

4.2.2 抽象 68

4.2.3 逐步求精 68

4.2.4 信息隱藏 69

4.3 模組獨立 70

4.3.1 耦合 70

4.3.2 內聚 71

4.4 啟發規則 72

4.5 表示軟體結構的圖形工具 74

4.5.1 層次圖和HIPO圖 74

4.5.2 結構圖 76

4.6 面向數據流的設計方法 77

4.6.1 概念 77

4.6.2 變換分析 78

4.6.3 事務分析 83

4.6.4 設計最佳化 84

4.7 人-機界面設計 85

4.7.1 人-機界面設計問題 85

4.7.2 人-機界面設計過程 86

4.7.3 界面設計指南 87

4.8 過程設計 89

4.9 過程設計的工具 90

4.9.1 程式流程圖 91

4.9.2 盒圖(N-S圖) 91

4.9.3 PAD圖 92

4.9.4 判定表 93

4.9.5 判定樹 94

4.9.6 過程設計語言 95

4.10 面向數據結構的設計方法 95

4.10.1 Jackson圖 96

4.10.2 改進的Jackson圖 97

4.10.3 Jackson方法 97

小結 101

習題 102

第5章 結構化實現 105

5.1 編碼 106

5.1.1 選擇程式設計語言 106

5.1.2 編碼風格 107

5.2 軟體測試基礎 109

5.2.1 測試目標 109

5.2.2 黑盒測試和白盒測試 109

5.2.3 測試準則 110

5.2.4 流圖 110

5.3 邏輯覆蓋 111

5.4 控制結構測試 114

5.4.1 基本路徑測試 114

5.4.2 條件測試 116

5.4.3 數據流測試 118

5.4.4 循環測試 119

5.5 黑盒測試技術 120

5.5.1 等價劃分 120

5.5.2 邊界值分析 122

5.5.3 錯誤推測 123

5.6 測試策略 123

5.6.1 測試步驟 124

5.6.2 單元測試 124

5.6.3 集成測試 126

5.6.4 確認測試 129

5.7 調試 130

5.7.1 調試過程 130

5.7.2 調試途徑 131

5.8 軟體可靠性 132

5.8.1 基本概念 133

5.8.2 估算平均無故障時間的方法 133

小結 135

習題 136

第3篇 面向對象方法學

第6章 面向對象方法學導論 140

6.1 面向對象程式設計實例 140

6.1.1 用對象分解取代功能分解 140

6.1.2 設計類等級 142

6.1.3 定義屬性和服務 143

6.2 面向對象方法學概述 144

6.2.1 面向對象方法學的要點 144

6.2.2 面向對象的軟體過程 146

6.3 面向對象方法學的主要優點 146

6.4 面向對象的概念 149

6.4.1 對象 150

6.4.2 其他概念 152

6.5 面向對象建模 155

6.6 對象模型 156

6.6.1 表示類的符號 156

6.6.2 表示關係的符號 158

6.7 動態模型 162

6.8 功能模型 163

6.9 3種模型之間的關係 163

小結 164

習題 164

第7章 面向對象分析 165

7.1 分析過程 165

7.1.1 概述 165

7.1.2 3個子模型與5個層次 166

7.2 需求陳述 167

7.2.1 書寫要點 167

7.2.2 例子 167

7.3 建立對象模型 168

7.3.1 確定類與對象 169

7.3.2 確定關聯 171

7.3.3 劃分主題 174

7.3.4 確定屬性 174

7.3.5 識別繼承關係 176

7.3.6 反覆修改 176

7.4 建立動態模型 178

7.4.1 編寫腳本 179

7.4.2 構想用戶界面 180

7.4.3 畫事件跟蹤圖 180

7.4.4 畫狀態圖 182

7.4.5 審查動態模型 182

7.5 建立功能模型 184

7.6 定義服務 185

7.7 面向對象分析實例 186

7.7.1 需求陳述 186

7.7.2 建立對象模型 186

7.7.3 建立動態模型 187

7.7.4 建立功能模型 189

7.7.5 進一步完善 190

小結 191

習題 191

第8章 面向對象設計 192

8.1 面向對象設計的準則 192

8.2 啟發規則 194

8.3 系統分解 195

8.3.1 子系統之間的兩種互動方式 196

8.3.2 組織系統的兩種方案 197

8.3.3 設計系統的拓撲結構 197

8.4 設計問題域子系統 197

8.5 設計人-機互動子系統 199

8.5.1 設計人-機互動界面的準則 199

8.5.2 設計人-機互動子系統的策略 200

8.6 設計任務管理子系統 201

8.6.1 分析並發性 201

8.6.2 設計任務管理子系統 202

8.7 設計數據管理子系統 203

8.7.1 選擇數據存儲管理模式 203

8.7.2 設計數據管理子系統 204

8.7.3 例子 205

8.8 設計類中的服務 206

8.8.1 確定類中應有的服務 206

8.8.2 設計實現服務的方法 206

8.9 設計關聯 207

8.10 設計最佳化 208

8.10.1 確定優先權 208

8.10.2 提高效率的幾項技術 209

8.10.3 調整繼承關係 210

8.11 面向對象分析與設計實例 211

8.11.1 面向對象分析 212

8.11.2 面向對象設計 213

小結 218

習題 218

第9章 面向對象實現 219

9.1 程式設計語言 219

9.1.1 面向對象語言的優點 219

9.1.2 面向對象語言的技術特點 220

9.1.3 選擇面向對象語言 223

9.2 程式設計風格 223

9.2.1 提高可重用性 224

9.2.2 提高可擴充性 225

9.2.3 提高健壯性 226

9.3 測試策略 226

9.3.1 面向對象的單元測試 227

9.3.2 面向對象的集成測試 227

9.3.3 面向對象的確認測試 227

9.4 設計測試用例 227

9.4.1 測試類的方法 228

9.4.2 集成測試方法 229

小結 231

習題 231

第10章 統一建模語言 232

10.1 概述 232

10.1.1 UML的產生和發展 232

10.1.2 UML的系統結構 233

10.1.3 UML的圖 234

10.1.4 UML的套用領域 235

10.2 靜態建模機制 236

10.2.1 用例 236

10.2.2 類圖和對象圖 240

10.3 動態建模機制 241

10.3.1 訊息 242

10.3.2 狀態圖 242

10.3.3 順序圖 243

10.3.4 協作圖 244

10.3.5 活動圖 245

10.4 描述物理架構的機制 246

10.4.1 邏輯架構和物理架構 246

10.4.2 構件圖 246

10.4.3 部署圖 247

10.5 使用和擴展UML 248

10.5.1 使用UML的準則 248

10.5.2 擴展UML的機制 249

小結 249

習題 250

第4篇 軟體項目管理

第11章 計畫 251

11.1 度量軟體規模 251

11.1.1 代碼行技術 251

11.1.2 功能點技術 252

11.2 工作量估算 254

11.2.1 靜態單變數模型 254

11.2.2 動態多變數模型 254

11.2.3 COCOMO2模型 255

11.3 進度計畫 257

11.3.1 基本原則 258

11.3.2 估算軟體開發時間 258

11.3.3 Gantt圖 259

11.3.4 工程網路 260

11.3.5 估算進度 261

11.3.6 關鍵路徑 263

11.3.7 機動時間 263

小結 264

習題 265

第12章 組織 267

12.1 民主製程序員組 267

12.2 主程式設計師組 268

12.3 現代程式設計師組 270

12.4 軟體項目組 271

12.4.1 3種組織方式 271

12.4.2 4種組織范型 273

小結 273

習題 273

第13章 控制 275

13.1 風險管理 275

13.1.1 軟體風險分類 275

13.1.2 風險識別 276

13.1.3 風險預測 280

13.1.4 處理風險的策略 281

13.2 質量保證 283

13.2.1 軟體質量 283

13.2.2 軟體質量保證措施 284

13.3 配置管理 286

13.3.1 軟體配置 286

13.3.2 軟體配置管理過程 288

小結 293

習題 293

第14章 國際標準 295

14.1 IEEE 1058.1軟體項目管理計畫標準 295

14.1.1 軟體項目管理計畫的組成 295

14.1.2 IEEE軟體項目管理計畫 296

14.2 ISO9000質量標準 298

14.2.1 基本思想 298

14.2.2 ISO9000-3標準 298

14.3 ISO/IEC12207軟體生命周期過程標準 301

14.3.1 概述 301

14.3.2 軟體生命周期過程 302

14.4 ISO/IECTR15504軟體過程評估標準 305

14.4.1 概述 305

14.4.2 標準的結構 305

小結 306

習題 307

第5篇 高級課題

第15章 形式化方法 308

15.1 概述 308

15.1.1 非形式化方法的缺點 308

15.1.2 軟體開發過程中的數學 309

15.1.3 套用形式化方法的準則 309

15.2 有窮狀態機 310

15.2.1 基本概念 310

15.2.2 電梯問題 311

15.2.3 評論 313

15.3 Petri網 314

15.3.1 基本概念 314

15.3.2 套用實例 315

15.4 Z語言 316

15.4.1 簡介 317

15.4.2 評論 318

小結 319

習題 319

第16章 軟體重用 321

16.1 可重用的軟體成分 321

16.2 軟體重用過程 322

16.2.1 構件組裝模型 322

16.2.2 類構件 323

16.2.3 重用過程模型 324

16.3 領域工程 325

16.3.1 分析過程 325

16.3.2 領域特徵 326

16.3.3 結構建模和結構點 326

16.4 開發可重用的構件 327

16.4.1 為了重用的分析與設計 327

16.4.2 基於構件的開發 328

16.5 分類和檢索構件 329

16.5.1 描述可重用的構件 329

16.5.2 重用環境 331

16.6 軟體重用的效益 332

小結 333

習題 333

參考文獻 334

相關詞條

熱門詞條

聯絡我們