预购商品
书目分类
特别推荐
軟件交付過程是指在編程式改代碼之後,直到將軟件發佈給使用者使用之前的一系列活動,如提交、集成、構建、部署、測試等。 本書作為通識類圖書,對軟件交付過程的各個方面進行了全面綜合的介紹。這包括三部分內容:第1部分,介紹在研究軟件交付過程時常見的思路和思考框架;第2部分,梳理軟件交付的總體過程;第3部分,考查軟件交付過程中的各個具體活動。 總的來說,本書提供了一種類似於對人進行體檢的方法,對特定軟件產品的交付過程進行全方位的調研,可以根據其所在的業務領域、當前採用的技術棧、使用的工具、流程和方法等實際情況,找出當前突出、值得改進的問題。
第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章 發佈 107 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
董越,DevOps 資深專家,集團前研發效能事業部架構、高級產品專家等職,從事 Aone&雲效 DevOps 產品設計、阿裡雲專有雲集成與交付解決方案設計等工作。在加入阿里之前,他還曾就職於西門子、摩托羅拉、雅虎、索尼、去哪兒網等大型企業,一直從事軟體配置管理、軟件集成與交付、DevOps 相關的工作。當前主要從事企業級DevOps體系建設與諮詢工作,説明眾多企業提升軟件研發交付效能。已服務過的客戶有華為、工商銀行、交通銀行、招商銀行、中信銀行、中國移動、中國聯通、中國電信、華泰證券、泰康人壽等。
客服公告
热门活动
订阅电子报