現代軟件工程:面向軟件產品 Engineering Software Products: An Introduction to Modern Software Engineering

Ian Sommerville 李必信,廖力等譯

買這商品的人也買了...

商品描述

本書由國際知名的軟件工程專家伊恩·薩默維爾撰寫,系統地介紹了軟件產品工程化的基本思想、原理和方法。
與同類書籍不同的是,本書重點關注與軟件產品相關的工程化過程和技術,而不是傳統的以過程為基礎的項目驅動型軟件工程技術。
本書的核心內容包括軟件產品、軟件架構、敏捷軟件工程、人物角色、場景、
用戶故事、基於雲的軟件、微服務架構、安全和隱私以及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