第I部分 配置管理核心實踐 1
第1章 源代碼管理 3
術語和源代碼管理 4
源代碼管理的目標 5
源代碼管理的原則 5
1.1 為什麼源代碼管理如此重要 6
1.2 從哪裏開始 7
1.3 源代碼管理核心概念 8
1.3.1 建立基綫和時間機器 8
1.3.2 保留與非保留簽齣 9
1.3.3 沙箱和工作空間 10
1.3.4 變體管理 10
1.3.5 復製分支與增量分支 11
1.3.6 如何處理缺陷修復 11
1.3.7 流 12
1.3.8 閤並 13
1.3.9 變更集 14
1.4 權限和需求跟蹤 14
1.5 管理全球分布式開發團隊 15
1.6 工具的選擇 16
1.6.1 開源軟件與商業軟件 17
1.6.2 産品成熟度和供應商承諾 18
1.6.3 可擴展性和開放的API 18
1.6.4 不要過度工程化源代碼管理 19
1.7 認識質量成本和總擁有成本 19
1.8 培訓 20
1.9 建立使用模型 21
1.10 實施時間和風險 22
1.11 建立支持過程 22
1.12 高級特性和授權高級用戶 23
結論 23
第2章 構建工程 25
構建工程的目標 26
構建工程的原則 26
2.1 為什麼構建工程如此重要 27
2.2 從哪裏開始 27
2.3 構建工程的核心概念 28
2.3.1 版本ID和標記可執行文件 28
2.3.2 不可變的版本ID 28
2.3.3 打上版本標記或者標簽 28
2.3.4 管理編譯依賴 29
2.3.5 獨立構建 29
2.4 建立構建職能的注意事項 30
2.4.1 推廣獨立構建 30
2.4.2 過度工程化構建 30
2.4.3 保持正直和誠實 31
2.4.4 隸屬研發部門引起的利益衝突 32
2.4.5 組織結構的選擇 32
2.5 構建工具評估和選擇 33
2.5.1 Apache Ant進入構建舞颱 33
2.5.2 Maven 34
2.5.3 Maven與Ant 34
2.5.4 使用Ant生成復雜構建 34
2.5.5 持續集成 35
2.5.6 持續集成係統 35
2.5.7 集成開發環境 36
2.5.8 靜態代碼分析 36
2.5.9 構建框架 36
2.5.10 構建工具的選擇 36
2.5.11 對比優缺點達成一緻 37
2.6 質量和培訓成本 37
2.7 把構建做得更好 37
2.7.1 鮑勃的構建秘方 38
2.7.2 測試驅動的構建 38
2.7.3 信任但仍要核查 38
2.7.4 飛機的駕駛艙 38
2.8 構建工程師的角色 39
2.8.1 瞭解構建的項目 39
2.8.2 與開發人員閤作 40
2.8.3 招募新人 40
2.9 架構是構建的基礎 40
2.10 建立構建過程 41
2.11 持續集成與每日構建 41
2.12 構建工程的前景 42
結論 42
第3章 環境配置 43
環境配置控製的目標 44
環境配置控製的原則 44
3.1 為什麼環境配置如此重要 45
3.2 從哪裏著手 45
3.3 支持代碼提升 45
3.4 管理配置 46
3.4.1 使用的是哪個數據庫 46
3.4.2 那筆交易發生瞭嗎 46
3.4.3 少用幾個符號 47
3.4.4 集中分配環境變量 48
3.5 建立配置管理數據庫的實際方法 48
3.5.1 識彆和控製 48
3.5.2 理解環境配置 49
3.6 依賴於環境配置的變更控製 49
3.7 減少控製 49
3.8 管理環境 50
3.9 環境配置的未來 50
結論 51
第4章 變更控製 53
變更控製的目標 54
變更控製的原則 54
4.1 變更控製為何如此重要 54
4.2 變更控製從何做起 55
4.3 變更控製的七種類型 55
4.3.1 優先級 55
4.3.2 把關控製 56
4.3.3 配置控製 56
4.3.4 變更谘詢委員會 57
4.3.5 緊急變更控製 57
4.3.6 過程工程 57
4.3.7 高級管理人員監督 57
4.4 建立變更控製 58
4.5 變更控製實例 58
4.5.1 29分鍾變更控製會議 59
4.5.2 投資銀行變更控製 59
4.5.3 貿易公司的變更控製 60
4.5.4 僞造批準 61
4.6 時刻不要忘記風險 61
4.7 通過變更控製推動配置管理流程 62
4.8 進入/退齣標準 62
4.9 事後審查 63
4.10 自我評估 63
結論 64
第5章 發布管理 65
發布管理的目標 66
發布管理的原則 66
5.1 為什麼發布管理如此重要 66
5.2 從哪裏開始 67
5.3 發布管理的概念和實踐 67
5.3.1 可行的打包策略 67
5.3.2 發布包版本識彆 68
5.3.3 發布版本的材料清單 68
5.3.4 不可變ID意味著什麼 68
5.4 發布管理人類工程學 68
5.4.1 避免人為錯誤 69
5.4.2 瞭解技術 69
5.4.3 構建工程工具 69
5.4.4 避免人為錯誤 70
5.4.5 三步走 70
5.4.6 太多可變部分 70
5.5 發布管理的協調職能 71
5.5.1 溝通發布狀態 71
5.5.2 不要忘記發布日程錶 71
5.5.3 發布管理和配置控製 71
5.6 需求跟蹤 71
5.7 將發布管理提升到新的層次 72
5.7.1 使用加密技術簽名代碼 72
5.7.2 操作係統對發布管理的支持 72
5.7.3 改善你的發布管理過程 73
結論 73
第6章 部署 75
部署的目標 76
部署的原則 76
6.1 為什麼部署很重要 76
6.2 從哪裏開始 77
6.3 實踐和實例 77
6.3.1 發布中轉區 77
6.3.2 腳本控製發布過程 78
6.3.3 部署框架 78
6.3.4 如果鮑勃犯瞭個錯誤怎麼辦 79
6.3.5 細說存儲庫 79
6.3.6 審計發行版本 79
6.4 進行配置審計 80
6.5 不要忘記冒煙測試 80
6.6 小失誤導緻大問題 81
6.7 溝通計劃 81
6.8 部署應當授權 82
6.9 信任也要核查 82
6.10 改進部署過程 82
結論 82
第Ⅱ部分 架構和硬件配置管理 83
第7章 為配置管理設計應用程序架構 85
為配置管理設計應用程序架構的目標 86
7.1 為什麼架構很重要 86
7.2 從哪裏開始 87
7.3 配置管理如何促進良好的架構 87
7.4 架構師可以從測試人員那裏學到什麼 87
7.5 配置管理驅動開發 88
7.6 應對不斷變化的架構 89
7.7 使用源代碼管理促進架構 89
7.8 培訓是關鍵 89
7.9 作為服務的源代碼管理 90
7.10 作為服務的構建工程 90
結論 90
第8章 硬件配置管理 91
硬件配置管理的目標 92
8.1 為什麼硬件配置管理的重要 92
8.2 從哪裏開始 92
8.3 當無法版本控製電路芯片時 93
8.3.1 配置項的任何其他名稱 93
8.3.2 設計規範的版本控製 93
8.4 不要忘記接口 93
8.5 瞭解依賴關係 94
8.6 可追溯性 94
8.7 部署變更到固件 94
8.8 硬件配置管理的未來 94
結論 95
第Ⅲ部分 配置管理中人的因素 97
第9章 閤理精簡過程 99
閤理精簡配置管理過程的目標 100
9.1 為什麼閤理精簡配置管理過程很重要 101
9.2 從哪裏開始 101
9.3 繁瑣的過程隻會成為障礙 102
9.4 軟件過程改進網絡和推廣能力成熟度模型 102
9.5 正在消失的煩瑣過程 103
9.5.1 敏捷開發過程就是有用 103
9.5.2 開放統一過程 104
9.5.3 變得精益 104
9.5.4 希望能夠激勵人仔細瞭解精益軟件開發的一個非常簡短的描述 104
9.6 過程太少的危險 105
9.7 恰好夠用的過程改進 105
9.8 不要過度工程化配置管理 105
9.9 不要忘瞭技術 106
9.10 測試自己的過程 106
9.11 過程谘詢 106
9.12 創建一個可持續發展的結構 107
結論 107
第10章 剋服變革的阻力 109
剋服變革阻力的目的 110
10.1 為什麼剋服變革阻力很重要 111
10.2 從哪裏開始 111
10.3 過程與企業文化相匹配 111
10.4 心理學和計算機程序設計相結閤 112
10.5 從內部進行過程改進 113
10.6 選擇首先要解決的問題 114
10.7 培養團隊協作 114
10.8 為什麼優秀的開發人員反對過程改進 115
10.9 程序公正 115
10.10 聽取每個人的意見 115
10.11 展現領導能力 116
10.12 實施過程改進的人本身可能會成為問題 116
10.13 過程和技術培訓相結閤 116
10.14 傾聽節奏 117
10.15 過程需要得到測試 118
10.16 嬰兒般的步伐和過程改進 119
10.17 推銷過程改進 119
10.18 什麼是我需要的 119
10.19 作為服務的過程改進 120
10.20 過程改進的遊擊戰術 120
結論 121
第11章 個性與配置管理:一位心理學傢眼中的工作場所 123
瞭解個性的目的:對我而言有何用處 124
11.1 配置管理專業人員的個性處理 125
11.2 配置管理專傢從個性的角度所要考慮的因素 128
11.2.1 溝通風格 128
11.2.2 男人和女人使用和解釋語言或有差異 128
11.2.3 有效的協商 129
11.2.4 信息的核實 129
11.2.5 信息處理的偏好 130
11.2.6 工作中的齣生順序 131
11.2.7 作為領導者的長子 131
11.2.8 作為妥協者的老二 131
11.2.9 作為發起者的老幺 132
11.2.10 獨生子 132
11.2.11 做你自己 133
11.3 心理學在工作場所的應用 133
11.3.1 有效的團隊協作從傢庭開始 133
11.3.2 排球或有效協作 134
11.3.3 把構建工程師和測試人員嵌入開發團隊中 134
11.3.4 黑盒、白盒以及灰盒測試的對比 134
11.3.5 破壞性的小組形態 135
11.3.6 適閤配置管理和質量檢測的位置 135
11.4 傢庭動態 135
11.5 工作場所的文化和個性 136
11.5.1 個性和結構 137
11.5.2 我們已經發明瞭所有的好點子 137
11.5.3 我行我素,不守規矩 138
11.5.4 在保持列車運行的同時保持有效的監督 138
11.5.5 成功的配方 139
11.5.6 注意事項 139
結論 139
第12章 從錯誤中吸取教訓 141
從錯誤中吸取教訓的目的 142
12.1 從錯誤中吸取教訓的重要性 142
12.2 從錯誤中吸取教訓的第一步 142
12.3 明白我們的錯誤 142
12.4 我所犯的錯誤 143
12.4.1 缺乏大局觀 143
12.4.2 編寫發布自動化腳本是一項很有挑戰性的工作 144
12.4.3 關於良好的進程會自我運行的思考 144
12.4.4 未能取得共識 145
12.4.5 未能在配置管理上展現領導能力 145
12.4.6 成為問題的一部分 145
12.4.7 忘記嚮他人尋求幫助 146
12.5 把錯誤變成教訓 146
12.5.1 明確知道如何做纔能完成工作 146
12.5.2 獲得所需要的培訓 146
12.6 他人常犯的錯誤 147
12.6.1 象牙塔 147
12.6.2 沒能提高自己的技術和動手能力 147
12.6.3 缺乏誠實和坦然的態度 147
結論 148
第Ⅳ部分 閤規、行業標準和框架 149
第13章 建立IT控製及閤規性 151
建立IT控製及閤規性的目標 152
13.1 為什麼IT控製及閤規性很重要 153
13.2 建立IT控製及閤規性的第一步 153
13.3 理解IT控製及閤規性 154
13.3.1 2002年發布的“薩班斯-奧剋斯利法案” 154
13.3.2 內部控製的管理評估 154
13.3.3 發起機構委員會 155
13.3.4 用於IT控製框架的COBIT 155
13.3.5 核實並匯報管理層所做齣的評估 155
13.3.6 1996年發布的健康保險隱私及責任法案 156
13.3.7 當美國審計署來敲你門的時候 156
13.3.8 審計結果 157
13.3.9 美國審計署關於國傢檔案記錄管理局的配置管理實踐的報告 158
13.3.10 美國電子文件檔案館的配置管理規劃 158
13.3.11 有待改善的領域 159
13.3.12 瞭解審計結果 159
13.3.13 美國金融管理局 159
13.4 必不可少的閤規性要求 160
13.4.1 為版本發布提供可追溯的需求 160
13.4.2 控製生産分離 160
13.5 支持配置管理最佳實踐的道德觀點 161
13.6 通過閤規性來提高工作質量和效率 161
13.7 進行配置管理評估 162
13.7.1 評估的第一步 162
13.7.2 無論齣現多麼糟糕的情況也要先留心去聽 163
結論 164
第14章 行業標準和框架 165
使用行業標準和框架的目標 166
14.1 為什麼標準和框架很重要 166
14.2 以IT控製及閤規性為最佳實踐的第一步 166
14.3 必知的專業術語 167
14.3.1 配置項 167
14.3.2 配置標識 167
14.3.3 配置控製 168
14.3.4 接口控製 168
14.3.5 配置狀態統計 168
14.3.6 配置審計 169
14.3.7 分包商/供應商的管理手段 169
14.3.8 符閤規範與違規 170
14.4 將這些條款應用在標準和框架裏 170
14.5 行業標準 170
14.5.1 IEEE 828——標準軟件配置管理方案 171
14.5.2 ISO 10007質量管理體係——配置管理的指導方針 172
14.5.3 ANSI/ITAA EIA-649-A——配置管理的國傢統一標準 172
14.5.4 ISO/IEC/IEEE 12207和15288標準 173
14.6 行業框架 173
14.6.1 ISACA COBIT 173
14.6.2 能力成熟度模型/能力成熟度模型集成 182
14.6.3 itSMF的ITIL框架 183
14.6.4 軟件工程知識體係 189
14.6.5 開放統一過程(OpenUP) 190
14.6.6 敏捷/SCRUM 190
結論 191
· · · · · · (
收起)