Jez Humble ThoughtWorks公司首席咨詢顧問,致力于幫助企業(yè)快速、可靠地交付高質(zhì)量軟件,經(jīng)常在各種敏捷技術(shù)大會上發(fā)表演講,擁有牛津大學物理學學士學位和倫敦大學民族音樂學碩士學位。2000年至今,他曾在各行業(yè)和不同技術(shù)領(lǐng)域擔任系統(tǒng)管理員、開發(fā)人員、培訓人員、咨詢師和經(jīng)理人員。David Farley 具有20多年的大型分布式系統(tǒng)開發(fā)經(jīng)驗,是采用敏捷開發(fā)技術(shù)的先行者,曾作為技術(shù)負責人參加了ThoughtWorks公司許多極具挑戰(zhàn)性的軟件項目。目前幫助構(gòu)建倫敦多項金融衍生品交易所(London Multi-Asset Exchange,LMAE)。
圖書目錄
目錄
Part I: Foundations / 基礎(chǔ)篇 1
Chapter 1: The Problem of Delivering Software / 軟件交付的問題 3
Introduction / 引言 3
Some Common Release Antipatterns / 一些常見的發(fā)布反模式 4
Antipattern: Deploying Software Manually / 反模式:手工部署軟件 5
Antipattern:Deploying to a Production-like Environment Only after Development Is Complete / 反模式:開發(fā)完成之后才向類生產(chǎn)環(huán)境部署 7
Antipattern: Manual Configuration Management of Production Environments / 反模式:生產(chǎn)環(huán)境的手工配置管理 9
Can We Do Better? / 我們能做得更好嗎 10
How Do We Achieve Our Goal? / 如何實現(xiàn)目標 11
Every Change Should Trigger the Feedback Process / 每次修改都應該觸發(fā)反饋流程 13
The Feedback Must Be Received as Soon as Possible / 必須盡快接收反饋/ 14
The Delivery Team Must Receive Feedback and Then Act on It / 交付團隊必須接收反饋并作出反應 15
Does This Process Scale? / 這個流程可以推廣嗎 16
What Are the Benefits? / 收效 17
Empowering Teams / 授權(quán)團隊 17
Reducing Errors / 減少錯誤 18
Lowering Stress / 緩解壓力 20
Deployment Flexibility / 部署的靈活性 21
Practice Makes Perfect / 多加練習,使其完美 22
The Release Candidate / 候選發(fā)布版本 22
Every Check-in Leads to a Potential Release 23
Principles of Software Delivery / 軟件交付的原則 24
Create a Repeatable,Reliable Process for Releasing Software / 為軟件的發(fā)布創(chuàng)建一個可重復且可靠的過程 24
Automate Almost Everything / 將幾乎所有事情自動化 25
Keep Everything in Version Control / 把所有的東西都納入版本控制 26
If It Hurts, Do It More Frequently, and Bring the Pain Forward / 提前并頻繁地做讓你感到痛苦的事 26
Build Quality In / 內(nèi)建質(zhì)量 27
Done Means Released / “DONE”意味著“已發(fā)布” 27
Everybody Is Responsible for the Delivery Process / 交付過程是每個成員的責任 28
Continuous Improvement / 持續(xù)改進 28
Summary / 小結(jié) 29
Chapter 2: Configuration Management / 配置管理 31
Introduction / 引言 31
Using Version Control / 使用版本控制 32
Keep Absolutely Everything in Version Control / 對所有內(nèi)容進行版本控制 33
Check In Regularly to Trunk / 頻繁提交代碼到主干 35
Use Meaningful Commit Messages / 使用意義明顯的提交注釋 37
Managing Dependencies / 依賴管理 38
Managing External Libraries / 外部庫文件管理 38
Managing Components / 組件管理 39
Managing Software Configuration / 軟件配置管理 39
Configuration and Flexibility / 配置與靈活性 40
Types of Configuration / 配置的分類 41
Managing Application Configuration / 應用程序的配置管理 43
Managing Configuration across Applications / 跨應用的配置管理 47
Principles of Managing Application Configuration / 管理配置信息的原則 47
Managing Your Environments / 環(huán)境管理 49
Tools to Manage Environments / 環(huán)境管理的工具 53
Managing the Change Process / 變更過程管理 53
Summary / 小結(jié) 54
Chapter 3: Continuous Integration / 持續(xù)集成 55
Introduction / 引言 55
Implementing Continuous Integration / 實現(xiàn)持續(xù)集成 56
What You Need Before You Start / 準備工作 56
A Basic Continuous Integration System / 一個基本的持續(xù)集成系統(tǒng) 57
Prerequisites for Continuous Integration / 持續(xù)集成的前提條件 59
Check In Regularly / 頻繁提交 59
Create a Comprehensive Automated Test Suite / 創(chuàng)建全面的自動化測試套件 60
Keep the Build and Test Process Short / 保持較短的構(gòu)建和測試過程 60
Managing Your Development Workspace / 管理開發(fā)工作區(qū) 62
Using Continuous Integration Software / 使用持續(xù)集成軟件 63
Basic Operation / 基本操作 63
Bells and Whistles / 鈴聲和口哨 63
Essential Practices / 必不可少的實踐 66
Don’t Check In on a Broken Build / 構(gòu)建失敗之后不要提交新代碼 66
Always Run All Commit Tests Locally before Committing, or Get Your CI Server to Do It for You / 提交前在本地運行所有的提交測試,或者讓持續(xù)集成服務器完成此事 66
Wait for Commit Tests to Pass before Moving On / 等提交測試通過后再繼續(xù)工作 67
Never Go Home on a Broken Build / 回家之前,構(gòu)建必須處于成功狀態(tài) 68
Always Be Prepared to Revert to the Previous Revision / 時刻準備著回滾到前一個版本 69
Time-Box Fixing before Reverting / 在回滾之前要規(guī)定一個修復時間 70
Don’t Comment Out Failing Tests / 不要將失敗的測試注釋掉 70
Take Responsibility for All Breakages That Result from Your Changes /為自己導致的問題負責 70
Test-Driven Development / 測試驅(qū)動的開發(fā) 71
Suggested Practices / 推薦的實踐 71
Extreme Programming (XP) Development Practices / 極限編程開發(fā)實踐 71
Failing a Build for Architectural Breaches / 若違背架構(gòu)原則,就讓構(gòu)建失敗 72
Failing the Build for Slow Tests / 若測試運行變慢,就讓構(gòu)建失敗 73
Failing the Build for Warnings and Code Style Breaches / 若有編譯警告或代碼風格問題,就讓測試失敗 73
Distributed Teams / 分布式團隊 75
The Impact on Process / 對流程的影響 75
Centralized Continuous Integration / 集中式持續(xù)集成 76
Technical Issues /技