圖書內容
本書以一個案例的演變模擬不斷變化的用戶需求,按照增量疊代的開發模式,將碎片化的功能開發、用戶互動、數據處理等知識,以及軟體設計、軟體測試和敏捷開發的最佳實踐,與軟體開發的原理、技術和工具融合到設計、編碼、調試及測試的構造過程。內容包括軟體構造的一般原理(如模組化、增量疊代)、常用技巧(如表驅動編程、測試驅動開發)、軟體設計(契約式設計、設計模式)、軟體知識(如軟體測試、軟體復用)以及軟體構造的工作要素(如編碼規範、構造工具)和活動(如設計、編碼、測試、交付)。
本書提供配套電子課件、案例源程式、例子代碼、教學參考方案等。本書面向計算機學科的本科學生,可作為“軟體構造”、“Java面向對象課程設計”等課程的教材,也可作為“實用軟體工程”的參考書,同時也適合學習軟體開發的其他專業及愛好者參考。
目 錄
第1章 軟體開發概述 1
1.1 程式與軟體 1
1.1.1 從程式到軟體 1
1.1.2 軟體類型 2
1.1.3 程式設計與軟體開發 2
1.2 軟體生存周期 4
1.2.1 使用角度的軟體生存周期 4
1.2.2 開發角度的軟體生存周期 4
1.3 軟體開發過程 6
1.3.1 瀑布式開發過程 7
1.3.2 增量開發模型 7
1.3.3 個體軟體過程 8
1.4 敏捷開發 9
1.4.1 概述 10
1.4.2 Scrum方法 12
1.5 軟體構造 13
1.5.1 有關概念 13
1.5.2 構造與開發過程 14
1.5.3 主要內容 15
1.5.4 軟體構造的重要性 15
1.6 為什麼不直接編寫軟體? 16
1.6.1 軟體開發語言 16
1.6.2 編程工具與集成化開發環境 18
1.6.3 軟體運行環境 19
1.6.4 軟體開發的最佳實踐 20
1.6.5 開發過程與管理 22
1.7 案例導讀 23
1.8 思考與練習題 24
第2章 模組化軟體構造 25
2.1 分解與模組化 26
2.1.1 分解的含義 26
2.1.2 模組化與結構化 28
2.2 數據結構與算法 29
2.2.1 數據結構與算法的關係 29
2.2.2 選擇與設計數據結構 30
2.2.3 選擇與設計算法 33
2.3 模組化設計理論初步 35
2.3.1 模組化原則 35
2.3.2 模組的內聚性 35
2.3.3 模組間的耦合性 36
2.4 測試程式 38
2.4.1 測試需求 39
2.4.2 測試設計與測試用例 40
2.5 調試程式 41
2.5.1 缺陷的相關術語 42
2.5.2 調試基礎 42
2.6 案例分析與實踐 43
2.6.1 案例程式的初始構造 43
2.6.2 無相同算式的基礎構造 45
2.6.3 編程實現測試 47
2.7 討論與提高 51
2.7.1 軟體質量 51
2.7.2 軟體測試的其他觀點 52
2.7.3 測試設計 52
2.7.4 編程風格 57
2.8 思考與練習題 58
第3章 面向對象的軟體構造 60
3.1 抽象與封裝 60
3.1.1 模組產生與合成 60
3.1.2 抽象與封裝 62
3.1.3 抽象數據類型 63
3.2 認識面向對象 64
3.2.1 設計類 64
3.2.2 設計操作 65
3.2.3 分類 66
3.3 面向對象的設計 67
3.3.1 面向對象的設計符號 68
3.3.2 案例設計一 69
3.3.3 案例設計二 72
3.4 調試的基本技術 79
3.4.1 單步調試源程式 80
3.4.2 檢查/更改變數的值 81
3.4.3 設定監視點觀察變數 81
3.4.4 上下移動調用棧 82
3.5 軟體自動化測試 82
3.5.1 初識JUnit 82
3.5.2 編寫JUnit測試代碼 84
3.6 案例分析與實踐 86
3.6.1 分析 86
3.6.2 構造 87
3.7 討論與提高 89
3.7.1 對調試的進一步認識 89
3.7.2 設計原則與設計模式 90
3.7.3 面向對象的設計原則 92
3.8 思考與練習題 95
第4章 數據處理的軟體構造 98
4.1 數據及其持久性 99
4.2 檔案與輸入/輸出流 100
4.2.1 檔案 100
4.2.2 輸入/輸出流 101
4.2.3 數據序列化 102
4.2.4 CSV格式的文本檔案 103
4.3 編寫健壯的程式 103
4.3.1 防禦性編程 104
4.3.2 使用斷言 107
4.4 字元串處理與正則表達式 108
4.5 程式中數據集的使用 111
4.5.1 算式基 111
4.5.2 表驅動編程 112
4.6 基於程式結構的測試 114
4.6.1 語句覆蓋測試 115
4.6.2 程式控制流圖 115
4.6.3 邏輯覆蓋測試 116
4.6.4 路徑覆蓋測試 117
4.7 運用JUnit 119
4.7.1 異常測試 119
4.7.2 參數化測試 120
4.7.3 測試套件 121
4.7.4 JUnit的斷言 122
4.7.5 JUnit使用指南 122
4.8 案例分析與實踐 122
4.8.1 批量生成100以內算式的習題 124
4.8.2 批改練習並存儲 125
4.8.3 算式基的構造與套用 127
4.9 討論與提高 129
4.9.1 套用表驅動編程 129
4.9.2 使用檔案還是資料庫 131
4.9.3 契約式編程 131
4.10 思考與練習題 132
第5章 用戶互動的軟體構造 135
5.1 程式及其功能的使用 136
5.1.1 程式的兩個觀察視角 136
5.1.2 多個功能程式的整合 136
5.1.3 多個功能的組織與呈現 137
5.1.4 基於選單式功能選擇的
用戶互動 138
5.2 用戶互動概述 143
5.2.1 基本概念 143
5.2.2 互動設備 143
5.2.3 互動風格 143
5.2.4 互動界面 144
5.2.5 互動設計的原則 145
5.3 用戶互動的開發 146
5.3.1 互動設計基本過程 146
5.3.2 快速原型法 147
5.4 靜態測試 148
5.4.1 程式的可用性與靜態測試 148
5.4.2 桌面檢查 148
5.4.3 代碼走查 149
5.4.4 正式審查 149
5.4.5 同行評審 149
5.4.6 檢查表 150
5.4.7 靜態程式分析 150
5.5 軟體集成與測試 151
5.5.1 驅動模組和樁模組 152
5.5.2 集成策略 153
5.5.3 回歸測試 154
5.5.4 集成測試與策略 154
5.6 案例分析與實踐 156
5.6.1 分析與設計 156
5.6.2 案例程式的選單式用戶互動的構造 157
5.6.3 循環語句的路徑測試 163
5.7 討論與提高 164
5.7.1 軟體建模 164
5.7.2 基於模型的測試 165
5.7.3 執行函式名符號串的表驅動編程 167
5.7.4 持續集成 168
5.8 思考與練習題 169
第6章 軟體重構與交付 171
6.1 代碼重構 171
6.1.1 代碼重構的案例研究 171
6.1.2 代碼重構概述 182
6.2 軟體交付 183
6.2.1 構建與打包 183
6.2.2 實現構建自動化的工具 184
6.2.3 Java程式的打包與交付 187
6.3 案例分析與實踐 189
6.3.1 代碼重構的案例分析 189
6.3.2 代碼重構實踐 190
6.3.3 提交案例程式 191
6.4 討論與提高 192
6.4.1 測試層次 192
6.4.2 測試驅動開發 193
6.4.3 軟體交付及其發展 200
6.5 思考與練習題 200
第7章 GUI軟體構造 202
7.1 GUI簡介 202
7.1.1 GUI發展軌跡 202
7.1.2 Java GUI的構造工具 202
7.2 GUI的基本元素與設計規範 203
7.2.1 GUI的基本元素 204
7.2.2 GUI基本設計規範 207
7.3 Java GUI設計模式 207
7.3.1 觀察者模式 208
7.3.2 MVC模式 210
7.4 事件驅動編程 210
7.4.1 事件捕捉與處理 210
7.4.2 焦點事件和Tab順序 212
7.4.3 實例講解 212
7.5 案例分析與實踐 215
7.5.1 探路的GUI構造任務 215
7.5.2 重構GUI構造任務 219
7.6 討論與提高 226
7.6.1 GUI的設計原則 226
7.6.2 GUI的測試 228
7.7 思考與練習題 229
第8章 套用資料庫 230
8.1 資料庫概述 230
8.1.1 關係資料庫 230
8.1.2 關係資料庫的數據模型 234
8.2 結構化查詢語言SQL 234
8.2.1 SQL概述 234
8.2.2 創建基本表的CREATE
語句 235
8.2.3 插入元組的INSERT語句 237
8.2.4 刪除元組的DELETE語句 237
8.2.5 更新元組的UPDATE語句 238
8.2.6 選擇元組的SELECT語句 238
8.3 資料庫的開發過程 242
8.4 編程運算元據庫 246
8.4.1 連線資料庫 246
8.4.2 查詢資料庫 248
8.5 案例分析與實踐 250
8.5.1 分析與設計 250
8.5.2 設計資料庫 250
8.5.3 開發資料庫應用程式 251
8.6 討論與提高 255
8.6.1 事務與並發 255
8.6.2 使用存儲過程 257
8.6.3 查詢最佳化——消除不必要的循環 259
8.6.4 測試資料庫 260
8.7 思考與練習題 261
第9章 基於復用的軟體構造 263
9.1 軟體復用 263
9.1.1 軟體產品復用 264
9.1.2 基於復用的軟體開發 265
9.1.3 程式庫 266
9.2 設計模式 267
9.2.1 基本概念 267
9.2.2 基本設計模式目錄 267
9.2.3 設計模式舉例 267
9.3 框架 274
9.3.1 基本概念 274
9.3.2 框架和設計模式 276
9.3.3 框架開發 276
9.3.4 軟體測試框架JUnit 277
9.4 案例分析與實踐 277
9.4.1 生成Word格式的習題 277
9.4.2 口算習題練習得分的可視化展示 283
9.4.3 完整案例的軟體構造 287
9.5 討論與提高 287
9.5.1 案例的Web應用程式 287
9.5.2 Android套用框架 288
9.6 思考與練習題 288
參考文獻 290