軟件交付通識

董越

  • 出版商: 電子工業
  • 出版日期: 2021-10-01
  • 定價: $534
  • 售價: 7.5$401
  • 語言: 簡體中文
  • 頁數: 260
  • 裝訂: 平裝
  • ISBN: 7121422026
  • ISBN-13: 9787121422027
  • 相關分類: DevOps軟體工程
  • 立即出貨 (庫存 < 3)

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

商品描述

軟件交付過程是指在編程序改代碼之後,直到將軟件發布給用戶使用之前的一系列活動,如提交、集成、構建、部署、測試等。本書作為通識類圖書,對軟件交付過程的各個方面進行了全面綜合的介紹。這包括三部分內容:第1部分,介紹在研究軟件交付過程時常見的思路和思考框架;第2部分,梳理軟件交付的總體過程;第3部分,考查軟件交付過程中的各個具體活動。總的來說,本書提供了一種類似於對人進行體檢的方法,對特定軟件產品的交付過程進行全方位的調研,可以根據其所在的業務領域、當前採用的技術棧、使用的工具、流程和方法等實際情況,找出當前最突出、最值得改進的問題。

作者簡介

董越,DevOps 資深專家,阿里巴#巴集團前研發效能事業部架構、高#級產品專家等職,從事 Aone&雲效 DevOps 產品設計、阿里雲專有云集成與交付解決方案設計等工作。在加入阿里之前,他還曾就職於西門子、摩托羅拉、雅虎、索尼、去哪兒網等大型企業,一直從事軟件配置管理、軟件集成與交付、DevOps 相關的工作

目錄大綱

第1部分 思維方式
第1章 本書要解決什麼問題 2
1.1  提供一種系統全面的方法 2
1.2  分析軟件交付過程 3
1.3  軟件交付過程包括三類事情 4
1.4  軟件交付不是按時間階段或角色劃分出來的 4
1.5  本書本質上是講述軟件交付這門學科 5
1.6  本書分成三個部分講述 5

第2章 我們要追求什麼 6
2.1  一切為了業務的成功 6
2.2  小步快跑 7
2.3  軟件實現側該追求什麼目標 8
2.4  軟件交付過程追求的目標 10

第3章 幾十年來的探索 12
3.1  軟件工程 12
3.1.1  軟件危機 12
3.1.2  工程化 13
3.2  敏捷 14
3.2.1  敏捷的理念 14
3.2.2  敏捷的實踐 15
3.3  精益 16
3.3.1  起源於製造業的精益思想 16
3.3.2  把精益應用於軟件開發 17
3.4  持續集成 18
3.4.1  持續集成是什麼 18
3.4.2  為什麼要持續集成 19
3.4.3  如何做到持續集成 19
3.5  持續交付 20
3.5.1  包括所有質量驗證工作 20
3.5.2  比較頻繁地發布上線 21
3.5.3  持續部署 22
3.6  DevOps 22
3.6.1  DevOps的誕生 22
3.6.2  DevOps三步工作法 23
3.6.3  DevOps落地實踐 23
3.7  技術方面的演進 24
3.7.1  軟件架構 24
3.7.2  部署運行 24
3.8  它們之間是什麼關係 25

第4章 做好軟件交付的10個策略 27
4.1  細粒度、低耦合、可複用的架構 27
4.1.1  軟件架構 27
4.1.2  測試腳本和測試數據的架構 28
4.1.3  組織架構 29
4.2  小批量持續流動的流程 30
4.2.1  大批量帶來等待等問題 31
4.2.2  短週期、小顆粒度、減少在製品 31
4.2.3  小批量持續流動的交付過程 32
4.3  運用綜合手段保證質量和安全 32
4.3.1  各種各樣的測試 32
4.3.2  左移+右移 33
4.3.3  測試人員+開發人員 33
4.3.4  人工測試+自動化測試 33
4.3.5  綜合運用 34
4.4  自動化與自助化 34
4.4.1  單項活動的自動化 34
4.4.2  流程的自動化 34
4.4.3  自助化 35
4.4.4  相關支持 35
4.5  加速各項活動 35
4.5.1  為什麼要加速 35
4.5.2  加速的通用思路 36
4.6  及時修復 36
4.6.1  為什麼要及時修復 37
4.6.2  如何做到及時修復 37
4.7  完備記錄,充分展現 38
4.7.1  任務及其執行情況 38
4.7.2  版本和配置信息 39
4.7.3  關聯關係 40
4.7.4  單一可信源 40
4.7.5  相關支持 41
4.8  標準化 41
4.8.1  規範可重複 41
4.8.2  方案收斂 41
4.8.3  環境一致性 42
4.9  協調完成完整功能 43
4.9.1  背景 43
4.9.2  開發全過程的協調 43
4.9.3  交付過程的協調 43
4.10  基於度量的持續改進 44

第5章 一個典型的軟件交付過程 47
5.1  前傳 47
5.2  代碼改動累積並#終提交 48
5.3  特性改動累積並#終提交 48
5.4  集成並#終發布 49

第6章 各個細分領域 51
6.1  交付過程 51
6.2  源代碼及其構建 52
6.3  部署運行 54
6.4  靜態測試 54
6.5  動態測試 55

第7章 各個關注角度 58
7.1  執行時機 58
7.2  執行效果 60
7.3  執行效率 61
7.4  問題處理效率 62
7.5  避免引入問題 64

第2部分 總體過程
第8章 代碼改動累積 68
8.1  導論 68
8.1.1  考查範圍 68
8.1.2  關注重點 68
8.2  執行時機 68
8.2.1  包含改動的顆粒度:實時進行的測試 68
8.2.2  包含改動的顆粒度:隨時進行的測試 69
8.3  執行效率 70

第9章 代碼改動提交 71
9.1  導論 71
9.1.1  考查範圍 71
9.1.2  關注重點 71
9.2  執行時機 72
9.2.1  包含改動的顆粒度:提交的顆粒度 72
9.2.2  包含改動的顆粒度:提交時進行的測試 72
9.3  執行效果 73
9.4  執行效率 73
9.4.1  執行效率度量:從發起提交到提交完成的時間 73
9.4.2  工具輔助記錄和展現:代碼改動提交說明 73
9.4.3  工具間集成:代碼改動提交與工作項關聯 74

第10章 特性改動累積 75
10.1  導論 75
10.1.1  特性的概念 75
10.1.2  特性隔離 76
10.1.3  考查範圍 76
10.1.4  關注重點 76
10.2  執行時機 76
10.2.1  包含改動的顆粒度:代碼改動提交觸發的測試 76
10.2.2  包含改動的顆粒度:隨時進行的測試 77
10.2.3  流程順序和卡點:適當並行 78
10.2.4  管理並發:控制在研的特性數量 78
10.2.5  整體協調:完整的特性 79
10.3  執行效果 79
10.4  執行效率 81
10.4.1  自動執行:構建流水線 81
10.4.2  工具輔助記錄和展現:流水線執行情況 81
10.4.3  方案收斂 82
10.5  問題處理效率 83
10.5.1  問題處理效率度量 83
10.5.2  適當通知 83
10.5.3  記錄版本:流水線配置的修改歷史 83
10.6  避免引入問題 84

第11章 特性改動提交 86
11.1  導論 86
11.1.1  考查範圍 86
11.1.2  關注重點 86
11.2  執行時機 86
11.2.1  包含改動的顆粒度:特性的顆粒度 86
11.2.2  包含改動的顆粒度:當特性做不到既小又獨立時 87
11.2.3  包含改動的顆粒度:特性提交時進行的測試 88
11.2.4  流程順序和卡點:特性提交門禁 89
11.2.5  整體協調:完整的特性 89
11.3  執行效果 90
11.4  執行效率 90
11.4.1  執行效率度量:從發起提交到提交完成的時間 90
11.4.2  自動執行:合併請求 91
11.4.3  工具輔助記錄和展現:特性內容說明 91
11.4.4  工具間集成:特性的代碼改動與工作項之間的關聯 92
11.5  問題處理效率 92
11.5.1  問題處理效率度量 92
11.5.2  適當通知 93
11.5.3  便捷回退:特性摘除 93

第12章 集成 94
12.1  導論 94
12.1.1  考查範圍 94
12.1.2  關注重點 94
12.2  執行時機 94
12.2.1  包含改動的顆粒度:持續接收特性改動提交 94
12.2.2  包含改動的顆粒度:特性合入觸發的測試 95
12.2.3  包含改動的顆粒度:針對新特性的測試 95
12.2.4  流程順序和卡點:製品晉級 96
12.2.5  管理並發:適當交疊 97
12.2.6  管理並發:管理變體 98
12.3  執行效率 99
12.3.1  自動執行:部署流水線 99
12.3.2  工具間集成:版本的特性列表 100
12.3.3  工具間集成:特性狀態信息 101
12.3.4  工具間集成:自動維護說明文檔 102
12.3.5  自主完成:各項活動 102
12.3.6  自主完成:工具的配置 103
12.3.7  便捷配置 103
12.4  問題處理效率 103
12.4.1  問題處理效率度量:紅燈修復時長 103
12.4.2  問題處理效率度量:缺陷修復時長 104
12.4.3  及時發現 104
12.4.4  適當通知 105
12.4.5  及時處理 105
12.4.6  快速定位 106
12.5  避免引入問題 106

第13章 發布 10
13.1  導論 107
13.1.1  考查範圍 107
13.1.2  關注重點 107
13.2  執行時機 108
13.2.1  包含改動的顆粒度:發布的顆粒度 108
13.2.2  包含改動的顆粒度:發布前的測試 109
13.2.3  包含改動的顆粒度:生產環境的測試 109
13.2.4  減少等待:發佈時間窗口 109
13.2.5  操作對象的顆粒度 110
13.2.6  整體協調:按一定順序發布 111
13.2.7  整體協調:當在特性分支上完成全部測試時 112
13.2.8  整體協調:當每個微服務都有自己的迭代節奏時 113
13.2.9  整體協調:靜態庫典型情況之公共基礎庫 114
13.2.10  整體協調:靜態庫典型情況之整體應用的組成部分 115
13.2.11  整體協調:靜態庫典型情況之服務接口定義 116
13.3  執行效果 117
13.4  執行效率 117
13.4.1  執行效率度量 117
13.4.2  自主完成:精簡發布審批流程 118
13.5  問題處理效率 118
13.5.1  問題處理效率度量:故障恢復與缺陷修復的時長 118
13.5.2  及時發現 118
13.5.3  適當通知 119
13.5.4  及時處理 119
13.5.5  快速定位 119
13.5.6  便捷回退:發布回滾 119
13.5.7  緊急改動的生效方式:緊急發布 120

第3部分 具體活動
第14章 源代碼版本控制 122
14.1  導論 122
14.1.1  考查範圍 122
14.1.2  關注重點 122
14.2  執行時機 123
14.2.1  管理並發:晚分叉模式支持交疊 123
14.2.2  管理並發:早分叉模式支持交疊 124
14.2.3  管理並發:用主幹代表#新已發布版本 125
14.2.4  管理並發:特性分支的管理 126
14.2.5  操作對象的顆粒度:代碼庫的尺寸 127
14.3  執行效果 127
14.4   執行效率 128
14.4.1  執行效率度量 128
14.4.2  快速執行:分佈式版本控制工具 128
14.4.3  快速執行:便捷的頁面操作 129
14.4.4  規範可重複:管理眾多代碼庫 129
14.4.5  規範可重複:明確代碼庫內的目錄結構和內容 129
14.4.6  規範可重複:規範版本號 130
14.4.7  規範可重複:標識源代碼版本 131
14.5  問題處理效率 132
14.5.1  便捷回退:特性摘除 132
14.5.2  便捷回退:發布回滾 132
14.5.3  緊急改動的生效方式:已提交特性的修改 133
14.5.4  緊急改動的生效方式:緊急發布 133
14.6  避免引入問題 134

第15章 構建 135
15.1  導論 135
15.1.1  構建的概念 135
15.1.2  考查範圍 136
15.1.3  關注重點 136
15.2  執行時機 136
15.3  執行效率 137
15.3.1  工具輔助記錄和展現:構建遇到的問題 137
15.3.2  快速執行:從全局視角提速構建 138
15.3.3  規範可重複:構建的可重複性 140

第16章 構建環境管理 142
16.1  導論 142
16.1.1  考查範圍 142
16.1.2  關注重點 142
16.2  執行效率 142
16.2.1  規範可重複:構建環境標準化 142
16.2.2  資源復用:構建環境資源池化 143
16.2.3  快速執行:保障隨時有構建資源可分配 144
16.2.4  快速執行:保障構建所需的緩存 145

第17章 製品管理 146
17.1  導論 146
17.1.1  製品的概念 146
17.1.2  考查範圍 147
17.1.3  關注重點 147
17.2  執行時機 147
17.3  執行效果 148
17.3.1  覆蓋範圍:外來製品 148
17.3.2  覆蓋範圍:工具和基礎軟件 148
17.4  執行效率 149
17.4.1  執行效率度量 149
17.4.2  工具輔助記錄和展現:製品的屬性信息 149
17.4.3  工具間集成:源代碼、構建、製品之間的關聯 150
17.4.4  快速執行:快速存取 150
17.4.5  資源復用:不重複存儲 151
17.4.6  規範可重複:管理眾多製品 151
17.4.7  規範可重複:標識製品版本 152
17.4.8  規範可重複:標識靜態庫版本 152
17.4.9  規範可重複:製品清理策略 153
17.5  問題處理效率 154
17.6  避免引入問題 154

第18章 部署 155
18.1  導論 155
18.1.1  部署單元的概念 155
18.1.2  考查範圍 156
18.1.3  關注重點 156
18.2  執行效果 156
18.3  執行效率 157
18.3.1  自動執行:完全自動化 157
18.3.2  工具間集成:以部署單元為核心對象 157
18.3.3  自主完成 158
18.3.4  便捷配置:避免重複配置 159
18.3.5  快速執行 159
18.4  問題處理效率 160
18.4.1  及時發現 160
18.4.2  便捷回退 160
18.5  避免引入問題 160
18.5.1  業務連續性:生產環境的部署策略 160
18.5.2  業務連續性:測試環境的部署策略 161
18.5.3  業務連續性:客戶端的部署策略 162

第19章 運行環境管理 163
19.1  導論 163
19.1.1  運行環境的概念 163
19.1.2  考查範圍 163
19.1.3  關注重點 164
19.2  執行效果 164
19.2.1  執行效果度量:保證足量供應 164
19.2.2  執行方法:聲明式 164
19.2.3  環境一致性:本機運行環境 165
19.2.4  環境一致性:整體運行環境 166
19.3  執行效率 166
19.3.1  執行效率度量 166
19.3.2  自動執行 167
19.3.3  工具間集成:製品、部署、環境之間的關聯 167
19.3.4  自主完成 167
19.3.5  資源復用:環境實例的分配與回收 168
19.3.6  資源復用:虛擬獨占方式 168
19.3.7  資源復用:處於整體環境中的個人開發環境 168
19.3.8  方案收斂 169
19.4  避免引入問題 169

第20章 配置參數管理 170
20.1  導論 170
20.1.1  系統配置參數的概念 170
20.1.2  業務配置參數的概念 170
20.1.3  考查範圍 171
20.1.4  關注重點 171
20.2  執行時機 171
20.2.1  流程順序和卡點:設置方式 171
20.2.2  流程順序和卡點:選擇設置方式 172
20.2.3  流程順序與卡點:確保質量 173
20.2.4  整體協調:程序與配置參數的匹配 173
20.2.5  整體協調:鍵值分離 173
20.3  執行效率 174
20.3.1  自動執行 174
20.3.2  自主完成 175
20.3.3  便捷配置:減少人工設置內容 175
20.4  問題處理效率 175
20.5  避免引入問題 176

第21章 數據存儲結構管理 177
21.1  導論 177
21.1.1  數據存儲結構管理的概念 177
21.1.2  考查範圍 177
21.1.3  關注重點 178
21.2  執行時機 178
21.3  執行效果 178
21.3.1  執行方法:應對挑戰的常見方法 178
21.3.2  執行方法:聲明式 179
21.3.3  環境一致性 180
21.4  執行效率 180
21.4.1  自動執行 180
21.4.2  自主完成 180
21.5  問題處理效率 181
21.6  避免引入問題 181

第22章 代碼評審 182
22.1  導論 182
22.1.1  代碼評審的概念 182
22.1.2  關注重點 182
22.2  執行時機 183
22.2.1  包含改動的顆粒度:通常以特性為單位 183
22.2.2  包含改動的顆粒度:結對編程 183
22.2.3  流程順序和卡點:事前評審和事後評審 183
22.3  執行效果 185
22.3.1  執行效果度量 185
22.3.2  覆蓋範圍:根據場景選擇合適的測試力度 185
22.3.3  覆蓋範圍:不僅包括源代碼的改動 186
22.3.4  執行方法:代碼評審的形式 187
22.3.5  執行方法:檢查清單 187
22.3.6  人員能力:做代碼評審需要專門的技能 188
22.4  執行效率 188
22.4.1  執行效率度量 188
22.4.2  工具輔助記錄和展現:記錄評審發現的問題 188
22.4.3  工具間集成:IDE能力 189

第23章 代碼掃描 190
23.1  導論 190
23.1.1  代碼掃描的概念 190
23.1.2  關注重點 191
23.2  執行時機 191
23.2.1  流程順序和卡點:只卡增量 191
23.2.2  流程順序和卡點:技術債可以通融 191
23.3  執行效率 192
23.3.1  快速執行 192
23.3.2  規範可重複:定制規則 192
23.4  問題處理效率 193

第24章 製品分析 194

第25章 單元測試 196
25.1  導論 196
25.1.1  單元測試的概念 196
25.1.2  自動化測試用例和測試腳本的概念 196
25.1.3  關注重點 197
25.2  執行時機 197
25.2.1  包含改動的顆粒度 197
25.2.2  流程順序和卡點:嘗試性工作推遲測試 197
25.2.3  流程順序和卡點:測試驅動開發 198
25.3  執行效果 198
25.3.1  覆蓋範圍:代碼覆蓋率 198
25.3.2  人員能力:測試設計是一門學問 199
25.4  執行效率 200
25.4.1  快速測試準備:測試腳本的自動化生成 200
25.4.2  快速執行:只測試增量部分 200
25.5  問題處理效率 201
25.5.1  快速定位:調試器 201
25.5.2  記錄版本 201

第26章 自動化接口測試 202
26.1  導論 202
26.1.1  自動化接口測試的概念 202
26.1.2  關注重點 202
26.2  執行時機 202
26.2.1  包含改動的顆粒度 202
26.2.2  流程順序和卡點:先做增量測試 203
26.2.3  流程順序和卡點:測試驅動開發及其變體 203
26.3  執行效果 203
26.3.1  覆蓋範圍:較高的覆蓋率 203
26.3.2  覆蓋範圍:僅在必要時Mock 204
26.3.3  覆蓋範圍:單次調用和完整場景 205
26.4  執行效率 205
26.4.1  工具間集成:特性、測試腳本、測試執行、缺陷之間的關聯 205
26.4.2  自主完成:鼓勵開發人員編寫測試腳本 206
26.4.3  快速測試準備:測試腳本與測試數據分離 206
26.4.4  快速測試準備:測試腳本的分層與復用 207
26.4.5  快速測試準備:測試數據的分層與復用 208
26.4.6  快速測試準備:事先創建測試數據的方法 208
26.5  問題處理效率 208
26.5.1  快速定位:問題自動分類 208
26.5.2  快速定位:接口調試工具 208
26.5.3  記錄版本:與源代碼同步 209
26.6  避免引入問題 209
26.6.1  引入問題度量:減少誤報 209
26.6.2  隔離性:不受其他測試干擾 210
26.6.3  隔離性:管理測試用例之間的依賴 210
26.6.4  工具可靠性:測試數據備份 210

第27章 人工UI測試 211
27.1  導論 211
27.1.1  UI測試的概念 211
27.1.2  關注重點 211
27.2  執行時機 212
27.2.1  包含改動的顆粒度 212
27.2.2  流程順序和卡點 212
27.3  執行效果 212
27.4  執行效率 213
27.4.1  工具間集成:特性、測試執行、缺陷之間的關聯 213
27.4.2  自主完成:開發人員自測 213
27.4.3  快速測試準備:探索性測試 214
27.5  問題處理效率 214

第28章 自動化UI測試 215
28.1  導論 215
28.2  執行時機 215
28.3  執行效果 216
28.4  執行效率 216
28.5  問題處理效率 217

第29章 非功能測試 218
29.1  導論 218
29.1.1  考查範圍 218
29.1.2  關注重點 218
29.2  執行時機 218
29.3  執行效果 219
29.3.1  覆蓋範圍:性能與容量 219
29.3.2  覆蓋範圍:安全性 220
29.3.3  覆蓋範圍:兼容性 220
29.3.4  覆蓋範圍:易用性 220
29.4  執行效率 221
29.4.1  自動執行 221
29.4.2  快速測試準備:事先創建測試數據的方法 221

第30章 生產環境測試 222
30.1  導論 222
30.1.1  考查範圍 222
30.1.2  關注重點 222
30.2  執行效果 222
30.2.1  覆蓋範圍:功能測試方面 222
30.2.2  覆蓋範圍:非功能測試方面 223
30.2.3  執行方法:小範圍試用 223

後記 225