現代軟件工程:面向軟件產品 | 生病了怎麼辦 - 2024年11月
現代軟件工程:面向軟件產品
本書由國際知名的軟體工程專家伊恩·薩默維爾撰寫,系統地介紹了軟體產品工程化的基本思想、原理和方法。與同類書籍不同的是,本書重點關注與軟體產品相關的工程化過程和技術,而不是傳統的以過程為基礎的項目驅動型軟體工程技術。
本書的核心內容包括軟體產品、軟體架構、敏捷軟體工程、人物角色、場景、用戶故事、基於雲的軟體、微服務架構、安全和隱私以及DevOps等。建議讀者具有一定的Java或Python等物件導向語言的程式設計經驗,在學習過程中注重從產品工程化的視角來理解軟體工程技術,從而為開發高品質、高安全性、高可靠性的軟體產品打好基礎。
伊恩·薩默維爾(Ian Sommerville) 英國著名軟體工程專家,曾任聖安德魯斯大學軟體工程系教授。他在軟體工程的教學和科研方面有40多年的工作經驗,研究領域包括需求工程、大規模複雜系統和系統可靠性等。他撰寫的軟體工程教材暢銷全球,銷量超過75萬冊。
譯者簡介:
李必信,東南大學電腦科學與工程學院教授,中國電腦學會軟體工程專委會委員、容錯計算專委會常務委員,江蘇省電腦學會軟體專委會副主任。主要研究方向是軟體發展方法與技術、演算法設計與分析、高級軟體工程、軟體架構建模/分析/測試與驗證、軟體系統演化及軟體品質保證等。
Engineering Software Products: An Introduction to Modern Software Engineering
出版者的話
譯者序
前言
第1章 軟體產品 1
1.1 產品願景 6
1.2 軟體產品管理 9
1.2.1 產品願景管理 11
1.2.2 產品路線圖管理 11
1.2.3 用戶故事和場景開發 11
1.2.4 產品待定項管理 12
1.2.5 接受度測試 12
1.2.6 客戶測試 12
1.2.7 使用者介面設計 12
1.3 產品原型設計 13
要點 14
推薦閱讀 15
習題 16
第2章 敏捷軟體工程 17
2.1 敏捷方法 17
2.2 極限程式設計 20
2.3 Scrum爭球模型 22
2.3.1 產品待定項 27
2.3.2 限時衝刺 30
2.3.3 自組織團隊 35
要點 39
推薦閱讀 39
習題 40
第3章 特徵、場景和使用者故事 42
3.1 人物角色 46
3.2 場景 50
3.3 用戶故事 55
3.4 特徵識別 59
3.4.1 特徵推導 62
3.4.2 特徵清單 64
要點 67
推薦閱讀 67
習題 68
第4章 軟體架構 69
4.1 為什麼架構很重要 71
4.2 架構設計 74
4.3 系統分解 77
4.4 分佈架構 86
4.5 技術議題 91
4.5.1 資料庫 92
4.5.2 傳播平臺 93
4.5.3 伺服器 93
4.5.4 開源 94
4.5.5 開發技術 95
要點 95
推薦閱讀 96
習題 97
第5章 基於雲的軟體 98
5.1 虛擬化和容器 100
5.2 一切即服務 104
5.3 軟體即服務 107
5.4 多租戶系統和多實例系統 111
5.4.1 多租戶系統 111
5.4.2 多實例系統 116
5.5 雲軟體架構 118
5.5.1 資料庫組織 118
5.5.2 可擴展性和可恢復性 120
5.5.3 軟體結構 121
5.5.4 雲平臺 122
要點 124
推薦閱讀 125
習題 126
第6章 微服務架構 127
6.1 微服務 130
6.2 微服務架構 133
6.2.1 架構設計決策 135
6.2.2 服務通信 136
6.2.3 資料分發與共用 139
6.2.4 服務協調 142
6.2.5 故障管理 144
6.3 RESTful服務 147
6.4 服務部署 151
要點 154
推薦閱讀 155
習題 156
第7章 安全和隱私 157
7.1 攻擊和防範 159
7.1.1 注入攻擊 160
7.1.2 跨網站腳本攻擊 161
7.1.3 會話劫持攻擊 162
7.1.4 拒絕服務攻擊 163
7.1.5 暴力攻擊 164
7.2 認證 165
7.2.1 聯合身份 167
7.2.2 移動設備認證 169
7.3 授權 170
7.4 加密 172
7.4.1 對稱和非對稱加密 173
7.4.2 TLS和數位簽章 176
7.4.3 資料加密 177
7.4.4 金鑰管理 179
7.5 隱私 181
要點 184
推薦閱讀 184
習題 186
第8章 可信賴程式設計 187
8.1 避免錯誤 189
8.1.1 程式複雜度 190
8.1.2 設計模式 198
8.1.3 重構 202
8.2 輸入驗證 204
8.2.1 規則運算式 206
8.2.2 數字檢查 209
8.3 失效管理 210
要點 216
推薦閱讀 216
習題 217
第9章 測試 219
9.1 功能測試 221
9.1.1 單元測試 223
9.1.2 特徵測試 226
9.1.3 系統和發佈測試 227
9.2 自動化測試 230
9.3 測試驅動開發 238
9.4 安全測試 241
9.5 代碼評審 243
要點 246
推薦閱讀 247
習題 248
第10章 DevOps和代碼管理 250
10.1 代碼管理 253
10.1.1 原始程式碼管理基礎 254
10.1.2 使用Git 259
10.2 DevOps自動化 263
10.2.1 持續集成 264
10.2.2 持續交付和部署 268
10.2.3 基礎設施即代碼 270
10.3 DevOps度量 272
要點 276
推薦閱讀 276
習題 277
索引 279