出版信息
《未雨綢繆——理解軟體配置管理(第2版)》
董越 著
ISBN 978-7-121-16674-7
2012年6月出版
定價:69.00元
16開
272頁
內容簡介
軟體配置管理為軟體開發提供了基礎性的支持環境,它與軟體開發中的所有角色都有聯繫,因此本書是寫給所有與軟體開發有關的人士看的,而不僅僅是寫給軟體配置管理人員的。
本書的目標是讓讀者用很短的時間就能掌握軟體配置管理的基礎知識,在參與軟體開發時,具備軟體配置管理方面的基本素養。
本書的一大特色是作者用詼諧生動的語言來講述專業的技術知識。文中充滿睿智的調侃,為讀者營造出一種輕鬆的氛圍,讓原本比較沉悶的技術閱讀成為一種愉悅的享受!
目 錄
上篇 基本話題1
第1章 惱人不休的問題:什麼是軟體配置管理2
1.1 問題的引出3
1.2 有那么一類管理4
1.3 為什麼稱做配置管理6
1.4 其他一些比喻8
第2章 基本的版本控制:記錄歷史並防止混亂10
2.1 即使只有一個開發人員11
2.2 建立公共存儲區12
2.3 防止版本覆蓋15
2.4 行話18
第3章 當代版本控制方法21
3.1 變更集的概念22
3.2 以變更集為單位修改代碼並提交24
3.3 反方向:適時更新工作區27
3.4 原始碼的整體版本29
3.5 分散式版本控制32
第4章 集成:關注整體質量35
4.1 集成的概念36
4.2 保證提交的質量38
4.3 狹義集成的步驟40
4.4 在基線產生之後44
4.5 質量保證:集成前、集成中、集成後45
第5章 從原始碼到運行中的程式49
5.1 管理生成轉換過程和相關資產50
5.2 保證構建的可重複性51
5.3 全量構建和增量構建53
5.4 讓構建更快55
5.5 安裝包的版本控制57
5.6 管理測試運行環境60
第6章 邁向持續集成62
6.1 及早和經常地集成,持續集成63
6.2 化繁為簡65
6.3 全程自動化67
6.4 快!快!快!69
6.5 多層集成:當團隊規模擴大以後70
第7章 分支:減少等待,分頭工作74
7.1 檔案級分支75
7.2 產品級分支76
7.3 典型套用:實現多層集成79
7.4 溫故而知新:實現隔離與共享80
7.5 分支的其他典型套用82
7.6 公共版本庫中的分支84
7.7 私有版本庫中的分支85
第8章 管理文檔88
8.1 文檔的標識和存儲89
8.2 自帶的說明信息91
8.3 趨勢:Wiki93
8.4 趨勢:數據檔案和資料庫95
第9章 跟蹤缺陷,直到消滅98
9.1 別讓發現的缺陷跑掉99
9.2 狀態轉換圖100
9.3 準確記錄,便於修復104
9.4 消滅它?立刻消滅它?106
9.5 分析統計缺陷相關數據109
9.6 關聯缺陷記錄與變更集112
第10章 管理變更114
10.1 管理增強115
10.2 管理特性116
10.3 瀑布模型中的變更118
10.4 影響變更管理的因素121
10.5 控制產品版本間的差異123
10.6 表達產品版本間的差異125
第11章 玄妙的學院派127
11.1 配置識別128
11.2 配置控制130
11.3 配置狀態報告131
11.4 配置審計133
11.5 一些軟體研發模型中的配置管理135
下篇 複雜場景中的配置管理139
第12章 用分支實現交迭140
12.1 補丁版本141
12.2 復用另一條分支上的改動142
12.3 甚至早在1.0版發布之前145
12.4 甚至為了重要的內部版本147
12.5 甚至為了每次集成149
12.6 雙分支結構151
12.7 都是交迭153
第13章 用分支實現變體156
13.1 什麼是變體157
13.2 用分支支持變體158
13.3 隨主幹繼續演進160
13.4 把公共改動放到主幹上163
13.5 變更管理對交迭和變體的支持165
13.6 歷史版本與變體版本的命名166
第14章 用設定實現變體169
14.1 在構建時讀取設定信息170
14.2 安裝和運行時讀取設定信息171
14.3 資源與數據172
14.4 何時使用哪種方法173
14.5 設定對交迭的支持174
第15章 用組件的組合實現變體175
15.1 雛形:平台加套用176
15.2 在不同階段組裝177
15.3 複合基線180
15.4 複合分支183
15.5 實現軟體復用:分支、設定、組件相結合187
15.6 實現軟體復用:架構、過程和組織188
第16章 支持多地點開發192
16.1 何時出現多地點開發193
16.2 主要困難和解決方法194
16.3 離線工作模式195
16.4 遠程訪問模式197
16.5 當地版本庫模式199
16.6 唯讀模式201
16.7 多地點開發中的變更管理202
第17章 支持跨組織合作204
17.1 從開源到外包205
17.2 管理第三方資產206
17.3 本地記錄第三方原始碼的演進207
17.4 再加上本地的改造209
17.5 共同開發211
第18章 管理軟體部署213
18.1 安裝包的存儲和管理214
18.2 管理安裝過程216
18.3 記錄運行系統配置218
18.4 管理變更請求219
18.5 管理網站220
第19章 軟體配置管理實施223
19.1 不同階段,不同挑戰224
19.2 如何完成一項改進225
19.3 在一個項目的生命周期中227
19.4 平衡集權與自治231
19.5 管理眾多的項目234
19.6 軟體配置管理團隊的組織結構235
結語 提倡務實的精神238
附錄A 相關工具索引241
參考書目251
線上資源252
書網互動254
致本書讀者
據說我小的時候,吃西瓜就喜歡吃尖兒。一桌西瓜剛切好,大人一不留神,就有很多塊兒已經沒尖兒了。這說明的第一個問題是,打小我就不是個老實本分的孩子。這說明的第二個問題是,西瓜數尖兒最好吃,最甜。如果肚子容量不大的話,應該先吃它。
我要做的事,就是和本書的讀者們一起,去吃西瓜尖兒。軟體配置管理可是個大西瓜,涉及很多方面,有很多細節在裡面。作為廣大讀者,特別是並不以軟體配置管理為生的讀者,恐怕沒這個閒心,鑽研每一個方面的每一個細節,吃到西瓜露出青皮兒。這本書介紹的是軟體配置管理的基本概念、基本思想、基本方法和基本要點,總之,是最核心的內容,框架性的內容。本書的目標是,讓您用幾個小時的時間,掌握軟體配置管理的基礎知識。
軟體配置管理與軟體研發中的所有角色都有關係。開發人員需要版本控制來幫忙,以避免版本混亂,工作成果丟失;測試人員需要缺陷跟蹤系統來幫忙,防止自己發現的 Bug,程式設計師忘了改,最後連自己都忘記了;項目經理關心項目進度,這同樣和軟體配置管理有關。所以,不論您專注於什麼工作,不論您將來的理想是什麼,只要與軟體研發相關,相信本書都會有利於您的成長!
流水先生(董越)
丁亥初秋
第2版前言
本書第1版的寫作完成於2007年秋天。軟體配置管理領域最大的發展變化是,以Git為代表的分散式版本控制工具日漸流行。本書第2版添加了專門的章節(3.5節)介紹分散式版本控制工具,並在其他已有章節(第2、3、4、5、7、12、16章)中,介紹如何在不同的場景中使用這個新“裝備”。
然而,引入分散式版本控制工具,只是第2版所修訂內容的一小部分。讀過第1版的讀者在預覽本版目錄時會發現,本書的篇章結構發生了不少變化。比如,持續集成的內容進行了擴充,作為單獨的一章(第6章)體現出來。再如,在講解變更管理時,用一節的篇幅(10.2節)講解了Scrum等開發方法中,以特性(Feature)為單位的開發管理。
在具體內容的修改中,替換了第1版中兩三成文字,以進一步突出重點、說清本質,並幫助讀者更好地學以致用。此外,第1版中使用的若干術語在本版中進行了更新。比如改稱任務單元為變更集,與業界通用術語相符。
本書第2版的具體內容改變了很多,但與第1版相比,本書的敘述風格和目標讀者群沒有發生什麼變化。本書仍然力圖以生動、易懂的敘述,讓廣大的軟體開發人員、管理人員、質量保證與流程最佳化人員,當然也包括配置管理人員,對軟體配置管理有一個基本的了解。
感謝電子工業出版社張春雨等編輯的辛苦工作,使本書第2版得以付梓。同時感謝如下評審者認真、細緻的評審:我的配置管理同行李靖雯、李曉琴、李越、羅曉輝、王曉翔、趙延濤、鄭博星,他們足以保證本書的專業性;從事軟體研發中不同工作的關恆、齊文、張輝、莊孝德等同事,他們幫助我從不同視角審視考量本書;以及並不從事軟體研發工作的我的夫人,她負責保證本書的敘述通俗易懂,即使外行也能理解。感謝你們的幫助!
本書第1版在噹噹網和中國互動出版網得到了讀者的較好評價,並且從出版至售罄,一直位列兩網站軟體配置管理書籍銷量榜首。作為作者,最希望的事情就是寫出的一點東西能得到讀者的認可,對讀者有所幫助。很高興本書第1版初步實現了這一目標,並期望本書第2版能夠給讀者帶來更大的收穫。
董 越
2012年3月
推薦序
許多工科學生都參加過一門稱之為“金工實習”的課程,會在生產車間內真實地體會車、銑、刨、磨、鑽、鑄、鍛、焊等諸多生產工藝,同時也會領略到流水線生產的高效和有序。實際上配置管理就是保證這些工藝過程按生產大綱的安排,並行而有序地開展,最終將原材料或毛坯變為成品的關鍵方法。但軟體畢竟和製造業產品或硬體不同,軟體是“軟”的,靈活性高,而且易變。因此,如何理解軟體配置管理,並進而把握軟體配置管理的內在規律,真正使軟體配置管理起到為軟體交付保駕護航的作用,的確是值得業界仔細思考和研究的一個課題。
從流程角度看,軟體配置管理是整個軟體開發生命周期中一個非常核心的管理過程。配置管理實際貫穿了從需求分析、架構設計、項目管理、開發、集成構建、測試,以及上線的全過程。這一過程不僅涉及巨觀的項目進度控制、配置管理規範及計畫、多地點開發規劃等,也包括更細粒度的分支模型、構建及集成方式、變更處理流程,還包括微觀的與開發人員直接相關的版本控制、差異比較與歸併等。絕不誇張地講,軟體配置管理是一門“八面玲瓏”的技術或藝術,而讀者可以從董越先生的《未雨綢繆——理解軟體配置管理》一書中切實感受到這一點。當開發人員從配置管理工具的版本樹中靜靜欣賞自己作品的成形軌跡時,當集成人員從組件基線樹把握整個套用組件的里程碑脈絡時,當項目管理人員面對缺陷發展趨勢以判斷產品發布時機時,當構建生產人員順利將正確版本的原始碼從版本庫中取出、構建並在生產系統投產時,配置管理及相關工具不僅僅是這些人員的有力助手,而且隨著時間的推移它帶給大家更多的將是一份信任和感動!
從人員角度看,軟體配置管理人員在軟體企業中起著非常重要的作用,絕不是許多人頭腦中的文檔管理員、檔案管理員或者什麼其他的人員。他們是軟體企業中所有軟體資產的管理員,是最洞悉軟體整個開發及變更過程並參與其設計的關鍵人員,是能與項目經理/人員、質量保證經理/人員、軟體分析/設計/開發/構建/測試人員充分溝通並與之打成一片的“公關”人員,是了解作業系統管理、網路管理、各類開發語言和環境、深諳軟體過程改進理論和相關工具的技術人員。通過本書,讀者可以加深對配置管理的理解,加強企業配置管理的相關工作,重視配置管理人員的培養和提高。
全書儘管只有二百餘頁,但卻深入淺出地道出了與配置變更管理相關的多個基本概念,如版本控制、配置管理、缺陷跟蹤與變更管理、構建、組件、集成、分支等。同時書中根據不同實際場景給出了業界的最佳實踐,而且處處滲透了作者在軟體配置管理方面的心得,例如,對分支運用的分析、對組件復用的理解和實踐、對於集成過程及集成責任的清晰闡述等。並且,本書結合工具(ClearCase、ClearQuest、Subversion、Bugzilla等)簡單明了地指出了當前流行的配置工具是如何實現這些最佳實踐的。可以看出,《未雨綢繆——理解軟體配置管理》一書是作者多年專注於軟體配置管理理論和實踐的結晶,書中不少觀點實際上也代表了包括我在內的很多軟體配置管理相關從業人員的感受和心聲,是值得所有軟體開發從業人員仔細閱讀、細細品味及隨時參考的好書!
非常感謝董越先生在緊張工作之餘為大家所做的切切實實的貢獻!
李紀華
2007年10月
李紀華,現任IBM中國有限公司軟體部Rational軟體北方區技術負責人。曾經為國內外多家大型軟體研發組織提供軟體諮詢服務,範圍包括軟體需求管理、軟體配置與變更管理、IT項目管理、實時系統測試等多個方面。此前在Rational澳洲亞太技術支持中心專門從事亞太地區ClearCase用戶的技術支持工作。在加入Rational及IBM之前,李紀華先後在Platinum Technology中國、Computer Associates中國擔任技術顧問,主要從事軟體生命周期解決方案的諮詢工作。在軟體工程技術方面,李紀華有著多年的實踐經驗,目前主要專注於軟體配置與變更管理、項目組合管理及企業套用現代化等領域。
前 言
據說我小的時候,吃西瓜就喜歡吃尖兒。一桌西瓜剛切好,大人一不留神,就有很多塊兒已經沒尖兒了。這說明的第一個問題是,打小我就不是個老實本分的孩子。這說明的第二個問題是,西瓜數尖兒最好吃,最甜。如果肚子容量不大的話,應該先吃它。
我現在要做的事,就是和本書的讀者們一起,去吃西瓜尖兒。軟體配置管理(Software Configuration Management,SCM)可是個大西瓜,涉及很多方面,有很多細節在裡面。廣大讀者,特別是並不以軟體配置管理為生的讀者,恐怕沒這個閒心去鑽研每一個方面的每一個細節,吃到西瓜露出青皮兒。這本書介紹的是軟體配置管理的基本概念、基本思想、基本方法和基本要點。總之,是最核心的、框架性的內容。本書的目標是,讓您用幾小時的時間,掌握軟體配置管理的基礎知識。
本書是寫給所有與軟體研發有關的人士的,而不僅僅是寫給軟體配置管理專業人員的。原因之一在於軟體配置管理的特殊性。軟體配置管理與軟體研發中的所有角色都有關係。開發人員集中精力於編寫代碼,但是需要版本控制來幫忙,以避免版本混亂,工作成果丟失;測試人員集中精力於測試,但是需要缺陷跟蹤系統來幫忙,防止自己發現的缺陷開發人員忘了改,最後連自己都忘記了。項目經理關心項目進度,這同樣和軟體配置管理有關:如果能正確地運用分支這個手段,讓不同的工作(比如系統測試和開發人員繼續開發)並行起來,可以大大加快項目的進展速度。還有需求管理人員、系統架構師、用戶文檔編寫人員、質量保證人員……每個人都要面對軟體配置管理,都應學習使用它,並從它那裡受益,因為軟體配置管理為軟體研發提供了基礎性的支持環境。
另一個理由是,在很多情況下,軟體配置管理應該怎么做,深深地受當時特定情況的影響。而這特定的情況、特定的背景,往往是研發團隊的其他成員要比軟體配置管理工程師更清楚。就好像衣服穿多了還是穿少了,要聽本人的意見,冷暖自知。
對於正在從事或打算從事軟體配置管理工作的讀者,這本書也是頗有價值的。日常的工作,可能會讓我們只見樹木,不見森林。而通過這本書,可以概覽軟體配置管理的全貌,系統地了解我們要做的事情,了解我們的使命。另一方面,本書所給出的軟體配置管理的基本原理和基本方法,來自於業界的最佳實踐和已經形成的解決模式。這些為解決特定研發背景下的具體問題,提供了很好的指導。我們需要做的是,考察具體問題、具體情況,融會貫通地運用軟體配置管理的基礎知識,產生優秀的具體解決方案,並付諸實施。
至於本書的書名,其中的“未雨綢繆”有如下三層含義。首先,記錄歷史,以供不時之需,這是軟體配置管理的重要功能之一。其次,在軟體研發中,隨著軟體研發規模的不斷擴大,軟體系統複雜性的不斷增長,對軟體配置管理的需求也會越來越強烈。因此,了解軟體配置管理,是在為明天做準備。最後,本書幫助讀者充實自己。誰不想成長呢?不論你現在專注於什麼工作,不論你將來的理想是什麼,只要與軟體研發相關,相信本書都會有利於你的成長!
最後說一下本書的風格。就像這篇自序的風格一樣,本書通俗易懂,偶爾還詼諧一下。希望讀者在閱讀時,能分享我寫作時的愉悅。
致 謝
平日裡讀書時,每當看到作者列出的長長的致謝名單,我心中總是不免起疑。但這種想法不會再出現了,因為我自己終於也經歷了出書的過程——這需要許許多多的幫助和支持,這需要許許多多古道熱腸的人。幸運的是,我遇到了他們。
首先感謝SCMLife的創始人孫常波先生。本書的寫作,緣起於他的約稿。而在寫作完成後,常波又付出了大量的心血,幫忙聯繫出版。沒有你,就沒有這本書!
傳誠科技的曉黎女士,IBM的浦雪(神仙姐姐)、王燕青、楊楊和朱宏,在聯繫出版的過程中,也搭手相幫。謝謝你們!
電子工業出版社的博文視點是本書的出版商。這本書能在博文視點出版,令我十分喜悅。感謝你們在閱讀後把這本書歸類為好書並決定出版,感謝你們幾個月以來辛苦的工作。
本書推薦序的作者,IBM Rational的李紀華先生,在軟體配置管理領域有很高的威望。能得到他百忙之中的指點,進而欣然作序推薦,我感到非常的榮幸。
本書寫作完成後,得到了如下同行和(前)同事的評審。
摩托羅拉:石慶東、石瑩瑩、耿倩、張瑩
愛立信:趙延濤
諾基亞:張曉昀
西門子:雷瓊
北電:孫奕凌、朱東、周濤、陳勝利、劉曉鈺、宋愛賢
雅虎:劉振飛、徐曉明、李雪江
偉創力:陸媛
新浪:付麗
華為:李靖雯
神州數碼:宋京
中興通訊:任藝
上海貝爾阿爾卡特:唐雪蕾
是你們的反饋,幫助糾正了本書初稿中的某些技術問題,補充並完善了本書的內容;是你們的反饋,讓我有了把本書公諸於眾的信心。真誠地感謝你們!其中,孫奕凌女士的評審格外嚴謹、細緻,甚至在遣詞用句方面都幫忙做了很多潤色。在這裡特別感謝你,奕凌!
最後,感謝我的母親,感謝您所給予我的鼓勵和支持。在每章初稿完成時,您總是第一個讀者,並隨後提出中肯的建議。我沒有辜負您的期望,在您的著述出版二十年後,我的著述也將要出版了。