“預(yù)則立,不預(yù)則廢”,軟件配置管理計劃對于配置管理實施的重要性毋庸多言。大家想看看別人做的配置管理計劃或者模板,無非是想學(xué)學(xué)別人的成功經(jīng)驗,避免自己走一些彎路。 但是我想,在這方面,更應(yīng)該學(xué)習的應(yīng)該是計劃軟件配置管理實施的思路,畢竟,各個開發(fā)團隊不同的地方太多了。下面是我觀察和思考的一些成果,和大家分享。 像你的老板一樣思考 作為一個配置管理實施的執(zhí)行人員,你怎么樣才能夠保證這項活動的成功呢? 說起來很簡單、但是也是最重要的第一步,就是定義“成功”。
很多負責配置管理實施的人員都是技術(shù)人員出身,我經(jīng)常能在他們身上觀察到的一種現(xiàn)象就是:出于對技術(shù)的熱愛,他們希望把軟件配置管理學(xué)習、理解得很透徹,然后同樣出于對技術(shù)的熱情,希望能把所有在技術(shù)上很“誘人”的東西都實踐起來。
我絕對沒有貶低這種熱情的意思(事實上,我自己也經(jīng)常被這種熱情所導(dǎo)引);但是,我們一定要小心地提防這種熱情把我們引離了通向成功的方向。
為什么要實施軟件配置管理?因為有效的配置管理可以幫助我們提高軟件產(chǎn)品質(zhì)量、提高開發(fā)團隊工作效率。 什么是“成功”的配置管理實施?很簡單,只要比較配置管理實施活動前后,軟件產(chǎn)品的質(zhì)量是不是得到了提高、開發(fā)團隊是不是能夠工作在一個有助于提高整體工作效率的配置管理平臺上。
軟件配置管理活動在整個開發(fā)活動中是一項支持性、保障性的工作,它本身并不直接為企業(yè)產(chǎn)出可以直接贏利的工作成果;而配置管理每一項活動都需要消耗企業(yè)的人力資源,有些還需要購置專門的工具來支持活動的進行,這些都會導(dǎo)致企業(yè)生產(chǎn)成本的增加。
所以,在我們計劃實施配置管理時要做哪些事情的時候,要小心地界定每一項活動,取舍的標準就是:從事這項活動是不是真正有助于我們實施活動的成功?它對于提高我們產(chǎn)品的質(zhì)量有多大的幫助?能否幫助開發(fā)團隊更高效率地工作?
大多數(shù)情況下,你的老板花錢讓你來做配置管理,并不是來讓你學(xué)習配置管理或者研究配置管理,而是希望你的工作能幫助他改變些什么;他的投資成功與否,是用投資回報率(ROI,return-on-investment)來衡量,而不是你對于配置管理技術(shù)研究的程度。
評估開發(fā)團隊當前配置管理現(xiàn)狀
計劃配置管理實施的基礎(chǔ),是搞清楚開發(fā)團隊當前配置管理的現(xiàn)狀。知道自己現(xiàn)在站在哪里,才明白自己下一步要往哪里走。
對于配置管理現(xiàn)狀的評估,可以自己進行,也可以引入外部專業(yè)咨詢?nèi)藛T來完成評估活動
自己進行評估的話,可以參照SW-CMM中關(guān)于軟件配置管理這個關(guān)鍵過程域的資料;也可以利用PMT編寫的《軟件組織配置管理能力自我評估問題集》,來完成自我評估的工作。
引入外部專業(yè)咨詢?nèi)藛T進行評估有兩個好處,一是通常這樣的咨詢?nèi)藛T有比較豐富的配置管理實施經(jīng)驗,評估工作可以進行得更加細致,而且通常咨詢?nèi)藛T會在評估結(jié)果的基礎(chǔ)上提出實施的建議;二是引入外部人員,通常評估結(jié)果會比內(nèi)部自我評估更客觀。壞處是要花錢,而且如果該咨詢?nèi)藛T與具體的配置管理工具廠商有利益關(guān)系的時候,也可能會出現(xiàn)評估過程受到這種利益關(guān)系影響的情形。
不管以何種方式進行,評估這個步驟的工作是一定要仔細進行的。有了評估的結(jié)果,才談得上改進。做好這個工作,比到處去找一份配置管理計劃的模板更有意義。
定義實施的范圍
對于沒有正式實施過軟件配置管理的開發(fā)團隊來說,在配置管理方面存在的問題可能會比較多;經(jīng)過評估,會找出來很多需要改進的點,那么,怎么樣來計劃改進的工作步驟呢?
曾經(jīng)有一位朋友向我展示他撰寫的軟件配置管理計劃,從基本的版本控制、基線管理、變更管理,到軟件構(gòu)建的管理(Build Management)、配置審核(Auditing)、配置狀態(tài)的報告,洋洋灑灑,什么都做在計劃里了。他的團隊以前沒有太多配置管理的概念,因而也出現(xiàn)了很多一直困擾他的問題,在我向他介紹配置管理可以幫助他改善或解決這些問題以后他變成了一個配置管理技術(shù)的愛好者。我想他一定仔細研讀了RUP配置管理工作流、IEEE軟件配置管理標準之類的資料然后寫出了這份計劃。我對他的計劃提了一個問題:“你覺得按照日程安排我們做得完這么多事情嗎?”
這就是前邊說過的,熱愛技術(shù)的朋友最容易出現(xiàn)的情況,為技術(shù)而技術(shù)、為流程而流程;我記得一位朋友跟我說過一句非常有意義的話:流程改進應(yīng)該是以結(jié)果為導(dǎo)向的(Result Oriented)。配置管理的實施也是如此,應(yīng)當在當前評估的基礎(chǔ)上,抓住團隊最頭疼的幾個問題,努力想辦法解決這些問題。
大家都知道管理學(xué)里有一個黃金法則:80/20法則。在這里我們也可以套用一下,想一想:我如何才能找出20%的問題,在當前這個階段,這20%的問題給我的團隊帶來80%的困擾和痛苦,然后,我們集中80%的精力來解決這些問題。
一句話,不要企圖一口吃個胖子。流程改進是一個持續(xù)的歷程,一個階段會有一個階段改進的重點,抓住重點、做出成績,才是有效的改進之道。
計劃資源要素
俗話說,兵馬未動,糧草先行。配置管理的實施需要消耗一定的資源,在這個方面一定要預(yù)先規(guī)劃。
具體來說,配置管理實施主要需要兩方面的資源要素:一是人力資源,二是工具。下面分別論述。
人力方面,因為配置管理是一個貫穿整個軟件生命周期的基礎(chǔ)支持性活動,所以配置管理會涉及到團隊中比較多的人員角色。比如,項目經(jīng)理、配置管理員、開發(fā)人員、測試人員、集成人員、維護人員等。但是,工作在一個良好的配置管理平臺上并不需要開發(fā)人員、測試人員等角色了解太多的配置管理知識,所以,配置管理實施的主要人力資源會是集中在配置管理員上。
配置管理員是一個比較奇妙的角色,對于一個實施了配置管理、建立了配置管理工作平臺的團隊來說,他是非常重要的,整個開發(fā)團隊的工作成果都在他的掌管之下,他負責管理和維護的配置管理系統(tǒng)如果出現(xiàn)問題的話,輕則影響團隊其他成員的工作效率,重則可能出現(xiàn)丟失工作成果、發(fā)布錯誤版本等嚴重的后果。然而,由于傳統(tǒng)不了解配置管理重要性的原因,在國內(nèi)的開發(fā)團隊中,通常大家都不愿意去做配置管理員。我遇到很多情況,都是項目經(jīng)理找來找去,選出來一個不喜歡做開發(fā)工作的女孩,來擔任配置管理員。
在國外一些比較成熟的開發(fā)組織中,配置管理員被稱為CMO(Configuration Management Officer),或者是配置經(jīng)理;他們被稱為是項目經(jīng)理的左手。從這兩個稱謂我們可以看出他們對于配置管理員的重視。在選拔配置管理員的時候,也有相當高的要求,比如,有一定的開發(fā)經(jīng)驗,對于系統(tǒng)(操作系統(tǒng)、網(wǎng)絡(luò)、數(shù)據(jù)庫等方面)比較熟悉,掌握一定的解決問題(trouble shooting)的技巧,在個人性格上,要求比較穩(wěn)重、細心。
在配置管理員這個資源配置方面,要注意后備資源(Backup)的培養(yǎng)。在大家越來越重視配置管理的大環(huán)境下,經(jīng)驗豐富的配置管理員會成為搶手的人才;而配置管理員的離開可能會給團隊的工作進度帶來一定的影響,所以聰明的管理者會為自己留好備份。
選擇什么樣的配置管理工具,一直是大家關(guān)注的熱點問題。確實,與其他的一些軟件工程活動不一樣,配置管理工作更強調(diào)工具的支持;缺乏良好的配置管理工具的話,要做好配置管理的實施會非常困難。
具體來說,我想在配置管理工具的選型上,可以綜合考慮下邊的一些因素。
首先是經(jīng)費。市場上現(xiàn)有的商業(yè)配置管理工具,大多價格不菲。到底是選用開放源代碼的自由軟件、還是采購商業(yè)軟件,如果采購商業(yè)軟件的話,選擇哪個檔次的軟件,這些問題的答案,取決于你能從老板那兒拿到多少錢。
一般來說,如果經(jīng)費充裕的話,采購商業(yè)的配置管理工具會讓實施過程更順利一些,商業(yè)工具的操作界面通常更方便一些,與流行的集成開發(fā)環(huán)境(IDE)通常也會有比較好的集成,實施過程中出現(xiàn)與工具相關(guān)的問題也可以找廠商解決。
如果經(jīng)費有限的話呢,就不妨采用自由軟件,如CVS之類的工具。其實無論在穩(wěn)定性還是在功能方面,CVS的口碑都非常好,我看到過很多組織成功地在CVS上完成配置管理的工作。如果你(或者你的配置管理員)不是一個依賴性很強的人,喜歡自己鉆研、自己去尋找資料解決問題,CVS會是一個不錯的選擇。
如果準備選擇商業(yè)配置管理工具,就應(yīng)當重點考慮下面幾個因素。
一、工具的市場占有率。大家都選擇的東西通常會是比較好的東西。而且市場占有率高也通常表明該企業(yè)經(jīng)營狀況會好一些,被人收購或者倒閉的可能性小一點。
二、工具本身的特性,如穩(wěn)定性、易用性、安全性、擴展能力等。你應(yīng)當在投資以前仔細地對工具進行試用和評估。這兒比較容易忽略的是工具的擴展能力(Scalability),你現(xiàn)在可能只是在幾個人、十幾個人的團隊中部署這個工具,但是以后可能會有幾十個、幾百個人要在依賴這個工具建立的平臺上工作,到時候這個工具能不能提供這樣的支持能力?如果到時候要換一個工具的話,你一定會后悔今天的選擇。
三、廠商支持能力。工具使用過程中一定會出現(xiàn)這樣那樣的問題,有些是因為你使用不當引起的,有些則是工具本身的毛病。這樣的問題會影響到開發(fā)團隊的工作進度,你一定希望能隨時找到廠商的專業(yè)技術(shù)人員幫助你解決這些問題。
配置管理工具不是用一次兩次的工具,因此,選擇配置管理工具其實是選擇和哪個廠商來建立一種長期的關(guān)系;如果你不信任或者干脆就是不喜歡這個廠商的技術(shù)代表,那么,不管他把他的東西吹得怎么個天花亂墜,還是趕緊讓他走吧。
|