出版社:人民郵電 ISBN:9787115264596 商品編碼:1027763386 開本:16 出版時間:2011-10-01 代碼:89 作者:亨布爾,法利,譯者:喬梁
" 基本信息 - 商品名稱:持續交付(發布可靠軟件的繫統方法)/圖靈程序設計叢書
- 作者:(英)亨布爾//法利|譯者:喬梁
- 代碼:89
- 出版社:人民郵電
- ISBN號:9787115264596
其他參考信息 - 出版時間:2011-10-01
- 印刷時間:2011-10-01
- 版次:1
- 印次:1
- 開本:16開
- 包裝:平裝
- 頁數:362
- 字數:512千字
編輯推薦語 Jez Humble編著的《持續交付(發布可靠軟件的繫統方法)》是一本軟件工程師的職場指南,以大量虛構的名字和情景描述了極客的日常工作,對他們常遇到的各類棘手問題給予了巧妙回答。作者以自己在蘋果、網景等公司中面臨的生死攸關的時刻所做的抉擇為例,總結了在硅谷摸爬滾打的經驗,旨在為軟件工程師*好地規劃自己的職業生涯提供幫助。本書適合軟件工程師以及所有職場人士閱讀。 內容提要 Jez Humble編著的《持續交付(發布可靠軟件的繫統方法)》講述如何 實現*快、*可靠、低成本的自動化軟件交付,描述了如何通過增加反饋 ,並改進開發人員、測試人員、運維人員和項目經理之間的協作來達到這 個目標。《持續交付(發布可靠軟件的繫統方法)》由三部分組成。**部 分闡述了持續交付背後的一些原則,以及支持這些原則的實踐。第二部分 是本書的核心,全面講述了部署流水線。第三部分圍繞部署流水線的投入 產出討論了*多細節,包括增量開發技術、**版本控制模式,以及基礎 設施、環境和數據的管理和組織治理。 《持續交付(發布可靠軟件的繫統方法)》適合所有開發人員、測試人 員、運維人員和項目經理學習參考。 目錄 **部分 基礎篇 **章 軟件交付的問題 1.1 引言 1.2 一些常見的發布反模式 1.2.1 反模式:手工部署軟件 1.2.2 反模式:開發完成之後纔向類生產環境部署 1.2.3 反模式:生產環境的手工配置管理 1.2.4 我們能做得*好嗎 1.3 如何實現目標 1.3.1 每次修改都應該觸發反饋流程 1.3.2 必須盡快接收反饋 1.3.3 交付團隊必須接收反饋並作出反應 1.3.4 這個流程可以推廣嗎 1.4 收效 1.4.1 授權團隊 1.4.2 減少錯誤 1.4.3 緩解壓力 1.4.4 部署的靈活性 1.4.5 多加練習,使其** 1.5 候選發布版本 1.6 軟件交付的原則 1.6.1 為軟件的發布創建一個可重復且可靠的過程 1.6.2 將幾乎所有事情自動化 1.6.3 把所有的東西都納入版本控制 1.6.4 提前並頻繁地做讓你感到痛苦的事 1.6.5 內建質量 1.6.6 “done”意味著“已發布” 1.6.7 交付過程是每個成員的責任 1.6.8 持續改進 1.7 小結 第2章 配置管理 2.1 引言 2.2 使用版本控制 2.2.1 對所有內容進行版本控 制 2.2.2 頻繁提交代碼到主干 2.2.3 使用意義明顯的提交注 釋 2.3 依賴管理 2.3.1 外部庫文件管理 2.3.2 組件管理 2.4 軟件配置管理 2.4.1 配置與靈活性 2.4.2 配置的分類 2.4.3 應用程序的配置管理 2.4.4 跨應用的配置管理 2.4.5 管理配置信息的原則 2.5 環境管理 2.5.1 環境管理的工具 2.5.2 變*過程管理 2.6 小結 第3章 持續集成 3.1 引言 3.2 實現持續集成 3.2.1 準備工作 3.2.2 一個基本的持續集成繫 統 3.3 持續集成的前提條件 3.3.1 頻繁提交 3.3.2 創建全面的自動化測試 套件 3.3.3 保持較短的構建和測試 過程 3.3.4 管理開發工作區 3.4 使用持續集成軟件 3.4.1 基本操作 3.4.2 鈴聲和口哨 3.5 必不可少的實踐 3.5.1 構建失敗之後不要提交 新代碼 3.5.2 提交前在本地運行所有 的提交測試,或者讓持 續集成服務器完成此事 3.5.3 等提交測試通過後再繼 續工作 3.5.4 回家之前,構建必須處 於成功狀態 3.5.5 時刻準備著回滾到前一 個版本 3.5.6 在回滾之前要規定一個 修復時間 3.5.7 不要將失敗的測試注釋 掉 3.5.8 為自己導致的問題負責 3.5.9 測試驅動的開發 3.6 推薦的實踐 3.6.1 極限編程開發實踐 3.6.2 若違背架構原則,就讓 構建失敗 3.6.3 若測試運行變慢,就讓 構建失敗 3.6.4 若有編譯警告或代碼風 格問題,就讓測試失敗 3.7 分布式團隊 3.7.1 對流程的影響 3.7.2 集中式持續集成 3.7.3 技術問題 3.7.4 替代方法 3.8 分布式版本控制繫統 3.9 小結 第4章 測試策略的實現 4.1 引言 4.2 測試的分類 4.2.1 業務導向且支持開發過 程的測試 4.2.2 技術導向且支持開發過 程的測試 4.2.3 業務導向且評價項目的 測試 4.2.4 技術導向且評價項目的 測試 4.2.5 測試替身 4.3 現實中的情況與應對策略 4.3.1 新項目 4.3.2 項目進行中 4.3.3 遺留繫統 4.3.4 集成測試 4.4 流程 4.5 小結 第二部分 部署流水線 第5章 部署流水線解析 5.1 引言 5.2 什麼是部署流水線 5.3 部署流水線的相關實踐 5.3.1 隻生成一次二進制包 5.3.2 對不同環境采用同一部 署方式 5.3.3 對部署進行冒煙測試 5.3.4 向生產環境的副本中部 署 5.3.5 每次變*都要立即在流 水線中傳遞 5.3.6 隻要有環節失敗,就停 止整個流水線 5.4 提交階段 5.5 自動化驗收測試之門 5.6 後續的測試階段 5.6.1 手工測試 5.6.2 非功能測試 5.7 發布準備 5.7.1 自動部署與發布 5.7.2 變*的撤銷 5.7.3 在成功的基礎上構建 5.8 實現一個部署流水線 5.8.1 對價值流進行建模並創 建簡單的可工作框架 5.8.2 構建和部署過程的自動 化 5.8.3 自測試和代碼 分析 5.8.4 自動化驗收測試 5.8.5 部署流水線的演進 5.9 度量 5.10 小結 第6章 構建與部署的腳本化 6.1 引言 6.2 構建工具概覽 6.2.1 make 6.2.2 ant 6.2.3 nant與msbuild 6.2.4 maven 6.2.5 rake 6.2.6 buildr 6.2.7 psake 6.3 構建部署腳本化的原則與實踐 6.3.1 為部署流水線的每個 階段創建腳本 6.3.2 使用恰當的技術部署 應用程序 6.3.3 使用同樣的腳本向所 有環境部署 6.3.4 使用操作繫統自帶的 包管理工具 6.3.5 確保部署流程是冪等 的(idempotent) 6.3.6 部署繫統的增量式演進 6.4 面向jvm的應用程序的項目 結構 6.5 部署腳本化 6.5.1 多層的部署和測試 6.5.2 測試環境配置 6.6 小貼士 6.6.1 總是使用相對路徑 6.6.2 消除手工步驟 6.6.3 從二進制包到版本控制 庫的內建可追溯性 6.6.4 不要把二進制包作為構 建的一部分放到版本控制庫中 6.6.5 “test”不應該讓構建失 敗 6.6.6 用集成冒煙測試來限制 應用程序 6.6.7 .net小貼士 6.7 小結 第7章 提交階段 7.1 引言 7.2 提交階段的原則和實踐 7.2.1 提供快速有用的反饋 7.2.2 何時令提交階段失敗 7.2.3 精心對待提交階段 7.2.4 讓開發人員也擁有所有 權 7.2.5 在超大項目團隊中指定 一個構建負責人 7.3 提交階段的結果 7.4 提交測試套件的原則與實踐 7.4.1 避免用戶界面 7.4.2 使用依賴注入 7.4.3 避免使用數據庫 7.4.4測試中避免異步 7.4.5 使用測試替身 7.4.6 *少化測試中的狀態 7.4.7 時間的偽裝 7.4.8 蠻力 7.5 小結 第8章 自動化驗收測試 8.1 引言 8.2 為什麼驗收測試是至關重要的 8.2.1 如何創建可維護的驗收 測試套件 8.2.2 gui上的測試 8.3 創建驗收測試 8.3.1 分析人員和測試人員的 角色 8.3.2 迭代開發項目中的分析 工作 8.3.3 將驗收條件變成可執行 的規格說明書 8.4 應用程序驅動層 8.4.1 如何表述驗收條件 8.4.2 窗口驅動器模式:讓測 試與gui解耦 8.5 實現驗收測試 8.5.1 驗收測試中的狀態 8.5.2 過程邊界、封裝和測試 8.5.3 管理異步與超時問題 8.5.4 使用測試替身對像 8.6 驗收測試階段 8.6.1 確保驗收測試一直處於 通過狀態 8.6.2 部署測試 8.7 驗收測試的性能 8.7.1 重構通用任務 8.7.2 共享昂貴資源 8.7.3 並行測試 8.7.4 使用計算網格 8.8 小結 第9章 非功能需求的測試 9.1 引言 9.2 非功能需求的管理 9.3 如何為容量編程 9.4 容量度量 9.5 容量測試環境 9.6 自動化容量測試 9.6.1 通過ui的容量測試 9.6.2 基於服務或公共api來 錄制交互操作 9.6.3 使用錄制的交互模板 9.6.4 使用容量測試樁開發測 試 9.7 將容量測試加入到部署流水 線中 9.8 容量測試繫統的附加價值 9.9 小結 **0章 應用程序的部署與發布 10.1 引言 10.2 創建發布策略 10.2.1 發布計劃 10.2.2 發布產品 10.3 應用程序的部署和晉級 10.3.1 **部署 10.3.2 對發布過程進行建模 並讓構建晉級 10.3.3 配置的晉級 10.3.4 聯合環境 10.3.5 部署到試運行環境 10.4 部署回滾和零停機發布 10.4.1 通過重新部署原有的 正常版本來進行回滾 10.4.2 零停機發布 10.4.3 藍綠部署 10.4.4 金絲雀發布 10.5 緊急修復 10.6 持續部署 10.7 小貼士和竅門 10.7.1 真正執行部署操作的 人應該參與部署過程的創建 10.7.2 記錄部署活動 10.7.3 不要刪除舊文件,而 是移動到別的位置 10.7.4 部署是整個團隊的責 任 10.7.5 服務器應用程序不應 該有gui 10.7.6 為新部署留預熱期 10.7.7 快速失敗 10.7.8 不要直接對生產環境 進行修改 10.8 小結 第三部分 交付生態圈 **1章 基礎設施和環境管理 11.1 引言 11.2 理解運維團隊的需要 11.2.1 文檔與審計 11.2.2 異常事件的告警 11.2.3 保障it服務持續性的計劃 11.2.4 使用運維團隊熟悉的 技術 11.3 基礎設施的建模和管理 11.3.1 基礎設施的訪問控制 11.3.2 對基礎設施進行修改 11.4 服務器的準備及其配置的 管理 11.4.1 服務器的準備 11.4.2 服務器的持續管理 11.5 中間件的配置管理 11.5.1 管理配置項 11.5.2 產品研究 11.5.3 考查中間件是如何處 理狀態的 11.5.4 查找用於配置的api 11.5.5 使用*好的技術 11.6 基礎設施服務的管理 11.7 虛擬化 11.7.1 虛擬環境的管理 11.7.2 虛擬環境和部署流 水線 11.7.3 用虛擬環境做高度的 並行測試 11.8 雲計算 11.8.1 雲中基礎設施 11.8.2 雲中平臺 11.8.3 沒有普適存在 11.8.4 對雲計算的批評 11.9 基礎設施和應用程序的監控 11.9.1 收集數據 11.9.2 記錄日志 11.9.3 建立信息展示板 11.9.4 行為驅動的監控 11.10 小結 **2章 數據管理 12.1 引言 12.2 數據庫腳本化 12.3 增量式修改 12.3.1 對數據庫進行版本 控制 12.3.2 聯合環境中的變* 管理 12.4 數據庫回滾和無停機發布 12.4.1 保留數據的回滾 12.4.2 將應用程序部署與 數據庫遷移解耦 12.5 測試數據的管理 12.5.1測試進行數 據庫模擬 12.5.2 管理測試與數據之 間的耦合 12.5.3 測試獨立性 12.5.4 建立和銷毀 12.5.5 連貫的測試場景 12.6 數據管理和部署流水線 12.6.1 提交階段的測試數據 12.6.2 驗收測試中的數據 12.6.3 容量測試的數據 12.6.4 其他測試階段的數據 12.7 小結 **3章 組件和依賴管理 13.1 引言 13.2 保持應用程序可發布 13.2.1 將新功能隱蔽起來, 直到它完成為止 13.2.2 所有修改都是增量 式的 13.2.3 通過抽像來模擬分支 13.3 依賴 13.3.1 依賴地獄 13.3.2 庫管理 13.4 組件 13.4.1 如何將代碼庫分成多 個組件 13.4.2 將組件流水線化 13.4.3 集成流水線 13.5 管理依賴關繫圖 13.5.1 構建依賴圖 13.5.2 為依賴圖建立流水線 13.5.3 什麼時候要觸發構建 13.5.4 謹慎樂觀主義 13.5.5 循環依賴 13.6 管理二進制包 13.6.1 制品庫是如何運作的 13.6.2 部署流水線如何與制品庫相結合 13.7 用maven管理依賴 13.8 小結 **4章 版本控制進階 14.1 引言 14.2 版本控制的歷史 14.2.1 cvs 14.2.2 svn 14.2.3 商業版本控制繫統 14.2.4 放棄悲觀鎖 14.3 分支與合並 14.3.1 合並 14.3.2 分支、流和持續集成 14.4 dvcs 14.4.1 什麼是dvcs 14.4.2 dvcs簡史 14.4.3 企業環境中的dvcs 14.4.4 使用dvcs 14.5 基於流的版本控制繫統 14.5.1 什麼是基於流的版本控制繫統 14.5.2 使用流的開發模型 14.5.3 靜態視圖和動態視圖 14.5.4 使用基於流的版本控制繫統做持續集成 14.6 主干開發 14.7 按發布創建分支 14.8 按功能特性分支 14.9 按團隊分支 14.10 小結 **5章 持續交付管理 15.1 引言 15.2 配置與發布管理成熟度模型 15.3 項目生命周期 15.3.1 識別階段 15.3.2 啟動階段 15.3.3 初始階段 15.3.4 開發與發布 15.3.5 運營階段 15.4 風險管理流程 15.4.1 風險管理基礎篇 15.4.2 風險管理時間軸 15.4.3 如何做風險管理的練習 15.5 常見的交付問題、癥狀和原因 15.5.1 不頻繁的或充滿缺陷的部署 15.5.2 較差的應用程序質量 15.5.3 缺乏管理的持續集成工作流程 15.5.4 較差的配置管理 15.6 符合度與審計 15.6.1 文檔自動化 15.6.2 加強可跟蹤性 15.6.3 在筒倉中工作 15.6.4 變*管理 15.7 小結 參考書目
" |