講解如何構建穩定的軟件 《軟件工程入門經典》揭秘專業開發人員為設計和構建穩定、、高效軟件所運用的軟件工程技術和方法。本書通俗易懂,在大量案例的引導下,演示適用于任何編程語言的重要概念和技術;即使你目前不具有編程、開發和管理經驗,同樣可以閱讀和學習本書。每章末尾附有精選習題,以測試你對知識的理解程度,引導你悟透主要概念。本書介紹了瀑布、生魚片、敏捷、RAD、Scrum、看板和極限編程等各種開發方法所涉及的基本任務。 主要內容 詳述軟件工程概念 闡釋參與軟件工程項目的團隊成員的角色和職責 指出軟件工程項目都必須經歷哪些重要階段才能開發出功能的應用程序 詳述主流軟件開發方法及其處理重要開發任務的不同方式 提供從每章主要知識點引申的習題 附有詳明的軟件工程術語表
詳述軟件工程概念 闡釋參與軟件工程項目的團隊成員的角色和職責
Rod Stephens兒時夢想成為數學家,但當在麻省理工學院學習時,他發現編程非常有趣,從此便開始了專業的編程生涯。在其職業生涯中,他從事過很多不同領域的應用程序開發,如電話交換、計費、維修調度、稅務處理、污水處理、演唱會門票銷售、制圖以及專業足球運動員培訓。十多年來,Rod 一直都是“微軟Visual Basic 最有價值專家(MVP)”,曾教授過一些編程的入門課程。他撰寫過30 多本書,并且這些書籍還都被翻譯成不同的語言。他撰寫過250 多篇雜志文章,主要涉及Visual Basic、C#、Visual Basic for Applications、Delphi 以及Java。Rod 廣受歡迎的VB Helper 站點(www.vb-helper.com)包含有數千個針對Visual Basic 程序開發人員的提示、技巧以及示例程序頁面。他的C# Helper 站點(www.csharphelper.com)包含類似的一些C#開發資源。可以通過RodStephens@CSharpHelper.com 或RodStephens@vb-helper.com 和Rod 保持聯系。
第Ⅰ部分 進階
第1章 軟件工程概覽 3
1.1 需求收集 3
1.2 概要設計 4
1.3 詳細設計 5
1.4 開發 5
1.5 測試 6
1.6 部署 7
1.7 維護 8
1.8 總結和反思 8
1.9 一次性處理所有事項 8
1.10 本章小結 9
第2章 入手之前 13
2.1 文檔管理 13
2.2 歷史文檔 15
2.3 電子郵件 16
2.4 代碼 18
2.5 代碼文檔 18
2.6 應用程序文檔 21
2.7 本章小結 21
第3章 項目管理 25
3.1 管理支持 26
3.2 項目管理 27
3.2.1 PERT圖 28
3.2.2 關鍵路徑方法 33
3.2.3 甘特圖 35
3.2.4 軟件日程安排 36
3.2.5 估算時間 36
3.3 風險管理 41
3.4 本章小結 42
第4章 需求收集 45
4.1 需求定義 46
4.1.1 清晰 46
4.1.2 沒有歧義 46
4.1.3 一致 47
4.1.4 優先級排序 47
4.1.5 可驗證 50
4.1.6 應避免使用的詞 51
4.2 需求分類 51
4.2.1 受眾導向的需求 51
4.2.2 FURPS 54
4.2.3 FURPS 54
4.2.4 通用需求 56
4.3 收集需求 57
4.3.1 傾聽客戶(和用戶)的需要 57
4.3.2 使用5W(和一個H) 57
4.3.3 研究用戶 59
4.4 細化需求 60
4.4.1 復制現有系統 60
4.4.2 未卜先知 61
4.4.3 頭腦風暴 62
4.5 記錄需求 64
4.5.1 UML 64
4.5.2 用戶故事 65
4.5.3 用例 65
4.5.4 原型 66
4.5.5 需求說明 67
4.6 確認和驗證 67
4.7 更改需求 67
4.8 本章小結 68
第5章 概要設計 71
5.1 縱覽全局 72
5.2 指定的事項 73
5.2.1 安全性 73
5.2.2 硬件 74
5.2.3 用戶接口 75
5.2.4 內部接口 76
5.2.5 外部接口 76
5.2.6 架構 77
5.2.7 報表 83
5.2.8 其他輸出 83
5.2.9 數據庫 84
5.2.10 配置數據 86
5.2.11 數據流及狀態 86
5.2.12 培訓 87
5.3 UML 87
5.3.1 結構圖 88
5.3.2 行為圖 90
5.3.3 交互圖 93
5.4 本章小結 95
第6章 詳細設計 97
6.1 面向對象設計 98
6.1.1 識別類 99
6.1.2 創建繼承體系 99
6.1.3 對象組合 103
6.2 數據庫設計 104
6.2.1 關系數據庫 104
6.2.2 及時范式 106
6.2.3 第二范式 109
6.2.4 第三范式 111
6.2.5 更高級的規范化 112
6.3 本章小結 113
第7章 開發 117
7.1 使用正確的工具 118
7.1.1 硬件 118
7.1.2 網絡 119
7.1.3 開發環境 119
7.1.4 源代碼控制 120
7.1.5 分析器 120
7.1.6 靜態分析工具 120
7.1.7 測試工具 121
7.1.8 源代碼格式器 121
7.1.9 重構工具 121
7.1.10 培訓 121
7.2 選擇算法 121
7.2.1 有效果 122
7.2.2 有效率 122
7.2.3 可預測 124
7.2.4 簡潔 124
7.2.5 預包裝 125
7.3 自上而下的設計 125
7.4 編程提示和技巧 127
7.4.1 保持清醒 127
7.4.2 為人編寫代碼,并非計算機 127
7.4.3 注釋優先 128
7.4.4 編寫自文檔化的代碼 130
7.4.5 保持小巧 131
7.4.6 保持專注 132
7.4.7 避免副作用 132
7.4.8 驗證結果 133
7.4.9 實踐“進攻式”編程 135
7.4.10 使用異常 136
7.4.11 首先編寫異常處理程序 136
7.4.12 切勿重復代碼 137
7.4.13 推遲優化 137
7.5 本章小結 138
第8章 測試 141
8.1 測試的目的 142
8.2 永不消亡的bug 143
8.2.1 收益遞減 143
8.2.2 期限 143
8.2.3 影響 143
8.2.4 為時尚早 143
8.2.5 有用性 144
8.2.6 過時 144
8.2.7 這并非一個bug 144
8.2.8 沒有盡頭 145
8.2.9 有總比沒有好 145
8.2.10 修復 bug很危險 145
8.2.11 修復哪些bug 146
8.3 測試級別 146
8.3.1 單元測試 146
8.3.2 集成測試 148
8.3.3 自動化測試 148
8.3.4 組件接口測試 149
8.3.5 系統測試 150
8.3.6 驗收性測試 150
8.3.7 其他測試類型 151
8.4 測試技術 152
8.4.1 窮舉測試 152
8.4.2 黑盒測試 153
8.4.3 白盒測試 153
8.4.4 灰盒測試 153
8.5 測試習慣 154
8.5.1 清醒時再進行測試和調試 154
8.5.2 測試自己的代碼 154
8.5.3 讓其他人測試你的代碼 155
8.5.4 修復自己的bug 156
8.5.5 修改前請“三思” 157
8.5.6 不要相信魔法 157
8.5.7 查看改變之處 157
8.5.8 修復bug,并非癥狀 158
8.5.9 對測試用例進行測試 158
8.6 如何修復bug 158
8.7 估算bug的數量 159
8.7.1 跟蹤發現的bug 159
8.7.2 播種 160
8.7.3 林肯指數 161
8.8 本章小結 162
第9章 部署 165
9.1 范圍 166
9.2 計劃 166
9.3 切換 167
9.3.1 階段性部署 167
9.3.2 逐步切換 168
9.3.3 增量部署 169
9.3.4 并行測試 170
9.4 部署任務 170
9.5 部署錯誤 171
9.6 本章小結 172
第10章 度量 175
10.1 慶祝會 176
10.2 缺陷分析 176
10.2.1 bug的種類 176
10.2.2 石川圖 178
10.3 軟件度量 181
10.3.1 好的屬性和度量指標的一些特征 182
10.3.2 度量的用途 182
10.3.3 需要度量的對象 184
10.3.4 規模標準化 186
10.3.5 功能點標準化 188
10.4 本章小結 192
第11章 維護 195
11.1 維護成本 196
11.2 任務分類 197
11.2.1 完成性任務 197
11.2.2 適應性任務 200
11.2.3 糾正性任務 201
11.2.4 預防性任務 203
11.2.5 個別bug 207
11.2.6 “非我發明” 207
11.3 任務執行 208
11.4 本章小結 208
第Ⅱ部分 模型
第12章 預測模型 215
12.1 模型 215
12.2 預備知識 216
12.3 預測和自適應 216
12.3.1 成功和失敗的標志 217
12.3.2 利與弊 218
12.4 瀑布 219
12.5 帶有反饋的瀑布 220
12.6 生魚片 221
12.7 增量瀑布 222
12.8 V模型 224
12.9 系統開發生命周期 224
12.10 本章小結 227
第13章 迭代模型 229
13.1 迭代與預測 230
13.2 迭代與增量 231
13.3 原型 232
13.3.1 原型的類型 233
13.3.2 優缺點 234
13.4 螺旋模型 235
13.4.1 澄清 237
13.4.2 優勢和不足 238
13.5 統一過程 239
13.5.1 優勢和不足 240
13.5.2 RUP 241
13.6 潔凈室模型 241
13.7 本章小結 242
第14章 RAD 245
14.1 RAD的主要原則 246
14.2 James Martin RAD 249
14.3 敏捷開發 249
14.3.1 自組織團隊 252
14.3.2 敏捷方法 253
14.4 XP 256
14.4.1 XP的角色 257
14.4.2 XP的價值觀 257
14.4.3 XP實踐 258
14.5 Scrum 264
14.5.1 Scrum角色 264
14.5.2 Scrum沖刺 265
14.5.3 計劃撲克 266
14.5.4 燃盡圖 267
14.5.5 速率 268
14.6 精益軟件開發 268
14.7 水晶方法 269
14.7.1 透明水晶 271
14.7.2 黃色水晶 272
14.7.3 橙色水晶 272
14.8 功能驅動開發 274
14.8.1 FDD角色 274
14.8.2 FDD階段 275
14.8.3 FDD迭代里程碑 277
14.9 敏捷統一過程 278
14.10 規范敏捷交付 280
14.10.1 DAD原則 280
14.10.2 DAD角色 280
14.10.3 DAD階段 281
14.11 動態系統開發方法 282
14.11.1 DSDM階段 282
14.11.2 DSDM原則 283
14.11.3 DSDM角色 284
14.12 看板軟件開發方法 285
14.12.1 看板的一些原則 285
14.12.2 和看板有關的一些實踐 286
14.12.3 看板圖 286
14.13 本章小結 287
附錄A 習題答案 293
術語表 337
?能力是必不可缺的一環,但僅僅依靠語言是不夠的,還需要有一定的組織能力、總結能力以及團隊合作意識,才能讓分析出來的現象和得出的結論有一個好"歸宿"。
1.3.7 熟知--企業業務
不同的企業有不同的業務,數據分析師必須要熟知自己所在企業的業務,只有這樣才能實現高效、實用的數據分析操作。若數據分析師脫離了企業業務背景,那么分析出來的結果必然會偏離原本的軌道,導致實用性不強。
對于剛進企業的新手而言,想要一蹴而就地熟知企業業務是很難實現的,數據分析新手,可以通過以下幾點來了解,如圖1-15所示。
圖1-15 數據分析新手入門要點
一如既往的好
不錯
書不錯,郵寄速度很快
好評
很不錯的一本書
包裝完好,物流很快!
挺好的書,值得一看!你值得擁有!
挺好哈哈哈哈哈
發貨快,質量好。