本教材系統(tǒng)地講述了軟件工程的基本概念、原理、方法,并介紹了一個實際項目——高校圖書管理系統(tǒng)的分析與設計過程,突出“教、學、練、用”一體化,較全面地反映了軟件工程技術的全貌。全書共分10章,第1章是軟件工程基礎,第2章至第6章分別為可行性研究、需求分析、概要設計、詳細設計、軟件實現(xiàn)與維護,第7章介紹軟件項目管理的基礎知識,第8章、第9章分別講述面向對象方法學基礎和狀態(tài)圖。第10章結合實際項目講述了面向對象方法分析與軟件設計的全過程,不僅對讀者深入理解軟件工程學具有較大的幫助,也是實踐教學的良好素材。本教材可作為高等應用型學校計算機、軟件工程、信息類及管理類等專業(yè)相關課程的教材,也可供有一定實際經驗的軟件開發(fā)人員閱讀參考。
寇愛軍,男,漢族,中共黨員,湖州學院計算機專任教師,高級工程師,自2009年參加工作以來,負責或參與近20個軟件項目研發(fā)工作,經常為相關企事業(yè)單位提供軟件開發(fā)指導、軟件培訓工作,具有豐富的軟件工程教學與實踐經驗。主持教育部產學研項目3項,參與國家、省部級、市廳級科研、教改課題近10項。在教學方面,注重理論聯(lián)系實際,課堂氛圍活躍,深得學生喜愛
第1章 軟件工程基礎 1
1.1 軟件危機 1
1.1.1 有關軟件危機的介紹 1
1.1.2 原因與解決方法 2
1.2 軟件工程 3
1.2.1 定義和目標 3
1.2.2 相關原理 4
1.2.3 軟件工程的進步史 4
1.3 軟件過程與軟件生存周期 5
1.3.1 軟件過程 5
1.3.2 軟件生存周期 5
1.4 軟件生存周期模型 8
1.4.1 瀑布模型 8
1.4.2 快速原型模型 9
1.4.3 增量模型 10
1.4.4 螺旋模型 10
1.4.5 噴泉模型 11
1.4.6 面向對象開發(fā)模型 12
1.4.7 如何選定開發(fā)模型 12
習題1 13
第2章 可行性研究 14
2.1 目標與任務 14
2.2 研究過程 15
2.3 軟件立項、合同和任務書 16
2.3.1 立項 16
2.3.2 簽訂合同 16
2.3.3 任務下達 17
2.4 系統(tǒng)流程圖 17
2.4.1 主要用途 17
2.4.2 相關符號 17
2.5 軟件的經濟效益分析 18
2.5.1 關于貨幣的時間價值 19
2.5.2 投資回收期 19
2.5.3 純利潤 20
習題2 20
第3章 需求分析 21
3.1 需求分析的任務與步驟 21
3.1.1 需求分析的任務 21
3.1.2 需求分析的步驟 23
3.2 用戶需求的獲取方法 24
3.2.1 常用方法 24
3.2.2 快速建立軟件原型模型來獲取需求 25
3.3 需求分析的常用方法 26
3.4 結構化分析 26
3.4.1 結構化分析方法 27
3.4.2 面向結構化分析的建模工具 27
3.4.3 數據流圖 28
3.4.4 數據流圖實例 30
3.4.5 數據字典 32
3.4.6 處理過程描繪 34
3.4.7 狀態(tài)轉換圖 37
3.5 其他工具 38
3.5.1 層次方框圖 38
3.5.2 維納圖 38
3.5.3 IPO圖 39
習題3 40
第4章 概要設計 41
4.1 概要設計階段的目標與任務 41
4.2 概要設計階段的啟發(fā)規(guī)則 42
4.2.1 軟件結構設計的準則 42
4.2.2 軟件模塊設計的準則 42
4.3 軟件設計的基礎 43
4.3.1 模塊化 43
4.3.2 抽象 44
4.3.3 逐步求精 44
4.3.4 局部化和信息隱藏 45
4.3.5 模塊獨立性 45
4.4 軟件設計工具 47
4.4.1 軟件層次圖 47
4.4.2 HIPO圖 47
4.4.3 軟件結構圖 48
4.5 結構化的設計方法 48
4.5.1 數據流圖分類 49
4.5.2 軟件結構化設計方法的步驟 50
4.5.3 變換型分析設計 50
4.5.4 面向事務型數據流圖的設計 52
4.5.5 綜合分析設計 53
習題4 58
第5章 詳細設計 59
5.1 詳細設計階段的目標與任務 59
5.2 結構化程序設計介紹 59
5.3 詳細設計工具 60
5.3.1 程序流程圖 60
5.3.2 N-S圖 61
5.3.3 問題分析圖 62
5.3.4 過程設計語言 64
5.4 用戶界面設計 64
5.4.1 用戶的界面需求 65
5.4.2 用戶界面設計問題 65
5.4.3 用戶界面設計原則 66
5.4.4 設計界面的過程 66
習題5 67
第6章 軟件實現(xiàn)與維護 68
6.1 編碼 68
6.1.1 編程語言的選擇 68
6.1.2 編碼的規(guī)范 69
6.2 測試基礎 70
6.2.1 軟件測試的目標 70
6.2.2 軟件測試的原則 70
6.2.3 軟件測試的方法 71
6.2.4 軟件測試的步驟 71
6.2.5 軟件測試的信息流 72
6.3 單元測試 73
6.3.1 單元測試的內容 73
6.3.2 代碼審查 74
6.4 軟件集成測試 75
6.5 驗收測試 76
6.5.1 確認測試的要求 76
6.5.2 軟件配置的復查 77
6.5.3 Alpha測試與Beta測試 77
6.6 軟件的測試方法 77
6.6.1 黑盒測試 77
6.6.2 白盒測試 79
6.7 軟件維護 82
6.7.1 軟件維護概述 82
6.7.2 軟件維護過程 83
6.8 軟件維護中存在的問題 84
6.8.1 軟件維護存在的困難 84
6.8.2 軟件維護的弊端 84
習題6 85
第7章 軟件項目管理 86
7.1 軟件項目管理概述 86
7.1.1 軟件項目管理概念 86
7.1.2 軟件項目管理職能 86
7.2 項目組織管理 87
7.2.1 軟件開發(fā)項目啟動及任務 87
7.2.2 軟件開發(fā)組織管理 88
7.3 人員組織 89
7.3.1 民主制程序員組 89
7.3.2 現(xiàn)代程序員組 89
7.4 質量管理 90
7.4.1 軟件質量 90
7.4.2 質量管理的原則 91
7.4.3 軟件質量的管理方法 91
7.4.4 軟件項目的配置管理 92
7.5 軟件的評審與驗收 93
7.5.1 評審 93
7.5.2 驗收 94
習題7 95
第8章 面向對象方法學基礎 96
8.1 概述 96
8.2 面向對象的軟件工程 97
8.2.1 相關概念 97
8.2.2 面向對象的層次化設計技術 99
8.2.3 類與對象的關系的分析 99
8.3 關于UML 102
8.3.1 UML概述 102
8.3.2 UML圖 102
8.4 用例圖概述 104
8.4.1 用例圖的構成 104
8.4.2 泛化 108
8.5 類圖與包圖概述 116
8.5.1 類圖 117
8.5.2 包圖 121
8.6 順序圖概述 125
8.6.1 生命線與對象 126
8.6.2 消息 126
8.6.3 順序圖的創(chuàng)建 127
8.7 通信圖概述 130
8.7.1 通信圖的組成 130
8.7.2 創(chuàng)建對象 133
8.7.3 迭代 133
8.7.4 順序圖和通信圖 134
習題8 137
第9章 狀態(tài)圖 138
9.1 狀態(tài)圖基礎知識 138
9.2 相關符號 139
9.2.1 狀態(tài)標記符 139
9.2.2 轉移 139
9.2.3 決策點 141
9.2.4 同步 142
9.3 狀態(tài)圖中的動作與事件 142
9.4 組成狀態(tài) 143
9.4.1 順序子狀態(tài) 143
9.4.2 并發(fā)子狀態(tài) 144
9.4.3 子狀態(tài)機的引用狀態(tài) 144
9.4.4 同步狀態(tài) 146
9.5 狀態(tài)圖模型的創(chuàng)建步驟 146
9.5.1 狀態(tài)圖分析 146
9.5.2 狀態(tài)圖的實現(xiàn) 147
習題9 147
第10章 高校圖書管理系統(tǒng)的分析與設計 148
10.1 系統(tǒng)需求 148
10.2 系統(tǒng)需求分析 149
10.2.1 如何識別參與者與用例 149
10.2.2 用例描述 151
10.3 靜態(tài)的結構模型 154
10.3.1 定義系統(tǒng)中的對象和類 154
10.3.2 對用戶界面類進行定義 159
10.3.3 各類之間的關系 162
10.4 動態(tài)行為模型 165
10.4.1 創(chuàng)建順序圖 165
10.4.2 創(chuàng)建狀態(tài)圖 175
10.5 系統(tǒng)部署 176
習題10 177
參考文獻 178