軟件工程猶如一座大迷宮,道路曲折,但是卻隱藏有無數的珍寶。每個探險迷宮的人在找到捷徑和珠寶后,都會有對于迷宮的獨特感悟。為了更好的指引有心的探險人,編輯部將從迷宮各個不同的入口,請來那些已經發掘過迷宮的先行者們,和他們一道感悟這座迷宮。
如果您已經找到了迷宮的珠寶或者即將向迷宮探險,都可以和我們聯系。
版本控制,是軟件開發中一項必不可少的管理手段,也是軟件配置管理(Software Configuration Management,SCM)的一個部分。而軟件配置管理,在軟件開發過程中占據著非常重要的地位,并且是CMM 2級的一個關鍵域。
2004年3月3日,本刊有機會請到了六位業內軟件配置管理的專家,組織了一次專門的研討會。通過討論,我們也許可以為中國的軟件配置管理作一個有益的點評。
迅速發展的軟件配置管理
配置管理的概念源于美國空軍,為了規范設備的設計與制造,美國空軍1962年制定并發布了第一個配置管理的標準“AFSCM375-1,CM During the Development & Acquisition Phases”。
而軟件配置管理概念的提出則在20世紀60年代末70年代初。當時加利福利亞大學圣巴巴拉分校的Leon Presser教授在承擔美國海軍的航空發動機研制合同期間,撰寫了一篇名為“Change and Configuration Control”的論文,提出控制變更和配置的概念,這篇論文同時也是他在管理該項目(這個過程進行過近一千四百萬次修改)的一個經驗總結。
Leon Presser在1975年成立了一家名為SoftTool的公司,開發了配置管理工具:Change and Configuration Control(CCC),這是最早的配置管理工具之一。
隨著軟件工程的發展,軟件配置管理越來越成熟,從最初的僅僅實現版本控制,發展到現在的提供工作空間管理、并行開發支持、過程管理、權限控制、變更管理等一系列全面的管理能力,已經形成了一個完整的理論體系。同時在軟件配置管理的工具方面,也出現了大批的產品,如:最著名的ClearCase;開源產品CVS;入門級工具Microsoft VSS;新秀Hansky Firefly。
在國外已經有30多年歷史的軟件配置管理,但在國內的發展卻是在21世紀這幾年的事。但是通過專家們的介紹,我們感受到,國內的軟件配置管理已經取得了迅速發展,并得到了軟件公司的普遍認可。
劉曉:1997年,開始在國內從事配置管理。那個時候如果和客戶講解配置管理,先要講配置管理是干什么的,能對企業起到什么作用。到了2002年,就可以直接介紹軟件配置管理的策略和使用,F在很多公司都能夠自主的向工具廠商咨詢,確實是已經意識到配置管理的重要性了。
思維加速是一家致力于業務架構平臺研發的軟件公司,有20多人的專業開發隊伍。對于這樣一種規模的軟件公司,在國內應該是最為普遍的。也許它實施配置管理的過程就是國內企業實施配置管理的一個典范。讓我們看看思維加速公司的總工宋興烈是如何描述的。
宋興烈:思維加速一直在從事較大規模的復雜軟件開發,需要對代碼、文檔進行版本控制,早期采用了最簡單的VSS(Visual Source Safe)進行版本控制。隨著開發的深入,版本控制已經遠遠不能滿足需要了,分支管理、權限管理的需求就出來了。但是VSS卻不能滿足這些要求,因此我們對VSS進行了二次開發,F在在VSS上能夠基本實現分支管理、權限控制、版本發布構建管理了。但隨著軟件規模的增長,我們正準備用CVS等開源軟件作為我們產品新版本的版本控制和管理工具。
這時,思維加速對于配置管理的理解上也有了一個較大的變化。配置管理已經不僅僅是對軟件代碼、文檔的版本管理,而應該是需求變更、缺陷管理等的一個整合體。對于需求變更、缺陷管理,最簡單的傳統處理方式是采用文檔記錄的形式,比如用Word文檔進行控制。對于一個逐漸成熟的開發團隊而言,這樣的傳統方法已經完全不能適用。對于商業性的成熟配置管理工具,由于相對昂貴的價格,也沒有采用。因此思維加速的辦法是:自己進行開發,建立一個適用的管理系統。
配置管理的三大誤區
國內軟件公司實施配置管理,已經取得了很多進步,也提高了軟件的質量。但是對于軟件配置管理,有很多公司對它的理解比較模糊,或者在真正的配置管理實施過程中存在著誤區。從專家們的討論中,我們了解到國內的軟件配置管理主要有三個方面的誤區。
誤區一:版本控制=軟件配置管理
也許很多人不承認自己對于軟件配置管理的理解局限在版本控制上,但在具體實施配置管理的過程中,就只見版本控制,而不見真正的配置管理。其實版本控制只是配置管理最基本的層次和功能。當然只有進行了版本控制,其他的功能才可能會逐漸提升。就是一個基本的版本控制,在部分軟件公司中也并不是一個非常正規和完善的過程。
這種問題,歸根到底在于軟件公司對軟件開發流程的管理在意識上不夠重視。國內軟件企業的開發管理不是很規范,即使在大的軟件公司里面,項目組對于開發管理的關注也是有限的。另外一個原因是由于開發管理中資源的不足,比如:資金的缺乏(導致不能購買功能齊全、價格昂貴的商業產品)、人力資源(不能招聘專業的配置管理人員),因此不能在公司內部實施體系化的配置管理。
誤區二:編碼水平最差=配置管理員
配置管理人員是配置管理具體實施的人?梢哉f公司制定了配置管理的流程和規章只是配置管理實施的基礎,而真正配置管理能否實施,能否有效,關鍵在于從事配置管理的人員。但國內的一個誤區是:在選擇配置管理人員的時候,是尋找開發團隊中編碼水平最差的人。比如張三寫代碼不行,測試也不行,那就只好去從事配置管理工作了。
谷煉對此深有體會。谷煉有在日本Rational和國內在配置管理領域工作的經歷。相比國內低水平的配置管理人員,國外公司一般都由有豐富編程經驗的人擔任軟件配置管理人員,有的時候配置管理部分的工作職責直接由開發經理擔任。配置管理人員的級別也相當高,被認為是項目經理的左右手,拿的是雙薪。
其實一個SCM人員的責任相當重大,一個團隊所有的代碼、文檔都由其負責,國內好像是處于一個相當尷尬的境地,認為一個什么都不懂的人擔任,才能保證這些代碼文檔的安全。
當然國內也不泛重視配置管理的公司。據傳說華為就非常重視軟件配置管理,除了設置CTO、CEO,好像還設置了一個CMO(Configuration Management Officer,或者叫配置經理)。
誤區三:采用配置管理工具=有效的配置管理
配置管理工具在軟件配置管理中起著不可替代的作用。沒有工具的支持,實施一個完整合格的配置管理是不可想象的。也許正是因為工具的重要,造成了很多軟件公司對于工具的迷信,以為只要部署了配置管理工具,尤其是一個專業的商業工具,就自以為建立了配置管理體系。
使用好的工具并不能代表就能實施好配置管理。因為工具就是工具,工具不能代替管理。否則為什么總是說配置“管理”而不單單說配置“工具”呢?一個成功的配置管理工具實施,需要兩個方面的條件:一是規范的軟件開發流程;二是合格的配置管理參與人員,這里的配置管理參與人員包括了配置管理員、開發人員、項目經理等。
對此,鄧小年認為:“無論怎么樣,沒有流程和規范地使用工具,那么再強的工具也沒有靈魂。比如簡單的一個check in操作,不同的人用起來可不一樣。有人修改后,進行build,然后check in;有人修改后,進行build,并簡單的測試再check in,也有人修改后馬上check in,……可看出不同的人使用工具的同一操作有不同的后果!
人——為何如此重要?
配置管理員在配置管理中是一個比較奇妙的角色,對于一個實施了配置管理、建立了配置管理工作平臺的團隊來說,他是非常重要的,整個開發團隊的工作成果都在他的掌管之下。如果他管理和維護的配置管理系統出現了問題,輕則影響團隊其他成員的工作效率,重則可能出現丟失工作成果、發布錯誤版本等嚴重的后果。
配置管理員應該做什么
一般而言,配置管理人員在軟件公司中應該具有下面的幾項主要職責:
1、 提交配置管理計劃;
2、 軟件配置管理工具的日常管理與維護,各配置項的管理與維護;
3、 執行版本控制和變更控制方案;
4、 完成配置審計并提交報告;
5、 對開發人員進行相關的配置管理培訓;
6、 識別軟件開發過程中存在的問題并擬出解決方案。
你是合格的配置管理員嗎
一個高水平的配置管理人員,對開發團隊在整體上有非常重要的作用。如果在一個企業中實施了配置管理工具如ClearCase,但沒有專業的配置管理人員管理,就像一個拖拉機安裝了一個奔馳的馬達,還是跑不快。早期在國內企業中,找一個合適的配置管理人員很困難,最后由系統管理人員來擔任。并且使用不同的配置管理工具,對配置管理人員的要求就不一樣,如VSS對配置管理人員的技術水平要求就較低。
按照配置管理的職責要求,一個合格的配置管理人員需要具備哪些素質呢?
1、職業道德是第一位的,這是由于配置管理人員負責管理軟件公司最為重要的資產。
2、軟件配置管理的專業知識,最好要精通一種配置管理工具,沒有工具是不可能實施軟件配置管理的,否則那只能是效率極其低下的紙上談兵。
3、項目管理的知識,對于軟件開發流程非常熟悉。一般而言,最好要經歷幾個軟件項目的開發管理過程,或者擔任過項目經理,對軟件開發的全過程有比較清晰的了解;有軟件開發經驗可以增強說服力,降低實施的難度,并且能夠切身以開發人員的身份去體會配置管理,才能改進配置管理過程。
4、有一定的大局觀,有一定的IT背景知識,對系統(操作系統、網絡、數據庫等方面)比較熟悉。
除了個人素質上的要求,在性格上也有一些共性的東西。
1、溝通技巧:在部署和實施配置管理的時候,肯定會遇到一些抵觸,對于程序員而言,使用配置管理之前,沒有什么約束,但是在實施后,會有一些約束,認為這并不是自己的工作。如果在使用中出現了問題,就需要配置管理人員進行溝通,并且能夠解決問題。
2、穩重、細心、有耐心。配置管理工作需要和開發人員、測試人員、項目經理打交道,但是他們對于遵循配置管理流程和工具不會非常的熱心,因此需要配置管理人員能夠穩重、有耐心。
3、能夠吵架。有的時候,如果溝通不行,就需要采取強迫的手段來保證具體配置工作的要求得到執行。記得在網上見到這樣的一句話:搞配置管理原來很好玩,就是要——兇~!
配置管理員的困惑
用友軟件工程公司的耿延煜現在擔任一個項目的配置管理員,她對于軟件配置管理人員的看法更有代表性。在用友軟件工程公司,采取的是一個項目設置一個配置管理人員,主要工作是項目產品的版本管理,并配合項目經理對項目中的文檔、代碼進行檢查。但是這個配置管理人員并不是專職的,在承擔配置管理職責之外,還會承擔一些項目的開發、測試工作。作為一個兼職的SCM人員,耿延煜認為,有兩個問題需要注意:
一是如何在工作任務緊張的時候保證配置管理工作?
作為一個配置管理人員,并不是僅僅從事配置管理工作,很多時候,會接受項目經理指派的開發工作,這個時候如何處理配置管理工作和開發工作的權重就非常重要,尤其是在一個項目處于緊要關頭的時候,開發進度緊,很多公司就忽視了配置管理,但是往往這個時候,配置管理才是最為重要的,并且這個時候出了問題,對于項目的影響會更大。因此在很多情況下,必須付出時間從事配置管理工作,如加班。出現了問題,配置管理人員必須立即進行修復。
二是定位模糊。很多SCM人員對自己的定位都比較模糊,沒有將自身置于一個項目管理者的角色。感覺自己只是項目組的一個無關緊要的角色。國內軟件開發中,向來就重開發人員,輕視測試人員,配置管理人員就更得不到重視了。然而,配置人員應該是一個項目經理的Backup,應該向項目經理發展。
配置管理員的最佳實踐
對于配置管理人員的部門設置,鄧小年認為,一般國內大中型軟件公司在配置管理部門可以設置如下的三個職位:
1、配置管理經理:負責公司全面的配置管理方面的工作;
2、創建發布工程師:主要負責創建和發布,部署產品;
3、工具管理工程師:主要負責開發、維護配置管理工具,對工具的使用進行培訓。
考慮到我國的現實情況,在一個軟件公司中的每個項目專門設置一個SCM人員還不現實。從上面可以看出,配置管理員的最佳實踐和推廣方式可以采用是“兼職+專職”的形式來進行。具體而言,可以這樣安排:
1、軟件公司在公司級必須有一個整體的配置管理解決方案和策略,對于各個具體開發的項目也有一個適合項目需要的配置管理策略。
2、公司級的SCM策略上,設置專職的配置管理人員,一般由水平較高的人員擔任,符合上面提到的配置管理員的素質要求。
3、項目級的SCM策略上,設置兼職的配置管理人員,一般可以由開發人員或者質量人員來兼任。
4、專職SCM人員和兼職SCM人員之間的溝通協調。并且對于SCM工具,如ClearCase,一般在前期部署的時候,任務比較緊張,在實施以后,操作就比較簡單,只需要一個兼職人員就可以了。通過專職SCM人員和兼職SCM人員之間不斷地反復溝通,才能將一個SCM過程具體實施好。
實施——從老板的角度思考
配置管理應該如何實施?軟件配置管理活動是一項支持性、保障性的工作,它本身并不直接為企業產生直接贏利的工作成果,它每一項活動都需要消耗企業的資源,還需要購置配置管理工具,這些都會導致企業生產成本的增加。因此對一個軟件公司來說,實施配置管理就需要從老板的角度進行思考。
什么是成功的配置管理
一個沒有實施配置管理的軟件項目,常常出現的問題有:版本混亂、文檔不統一、工件遺缺等。這些問題歸根到底是軟件質量的問題。因此對于什么是成功的軟件配置管理,一個最簡單的方法是比較配置管理實施活動前后,軟件產品的質量是不是得到了提高、開發團隊是不是能夠工作在一個有助于提高整體工作效率的配置管理平臺上。
具體到配置管理中的每項活動,是否成功的標準是:這項活動是不是真正有助于我們實施配置管理的活動?它對于提高我們產品的質量有多大的幫助?能否幫助開發團隊更高效地工作?
配置管理流程再造
軟件配置管理的實施首先需要有一個規范的軟件開發流程,因此對于一個軟件公司而言,要實施配置管理,首先是需要對自身的軟件開發流程進行再造。再造水平的好壞決定了配置管理是否僅僅是版本控制,是否能夠有效的實施配置管理。流程不好,也許就僅僅到達版本控制的水平,不能達到變更控制、過程管理等“配置管理”的較高水平上。
選擇合適的配置管理工具
有了配置管理流程,為了保證配置管理的效果、范圍和質量,就需要應用配置管理工具。對于如何選擇一個合適的配置管理工具,在這次的研討會上也是我們討論的熱點。我們認為,公司在選擇SCM工具的時候,可以遵循下面四個原則。
首先是工具的價格。一般國內中小型軟件企業都沒有足夠的資金來實施一些商業工具。因此就只能退而求其次了,采用一些變通的方法來實施。比如:對于變更管理,采用簽發變更單解決。有些公司采用一些簡單的MIS來管理,數據保存到數據庫,能夠做到查詢、保存等目的。
二是在功能上,滿足需要就可以,太過復雜的產品使用也麻煩,對配置管理人員的要求也高,價格也昂貴。工具只要符合需要就行,不必追求功能齊全。
三是性能。由于配置管理的都是開發中最為重要的資源,一旦崩潰,損失就會很大。因此配置管理工具的運行需要非常穩定,不出故障,出了故障應該有補救措施。
四是實施的過程是否順利,售后服務和技術支持是否完善。
正確實施配置管理工具
在實施配置管理工具的時候,工具必須和開發管理流程良好的結合起來,這樣才能保證工具的正確實施。而這點也是目前軟件公司在使用各種工具時一個最大的難點。
谷煉:一個規范的公司,實施軟件配置管理的時候,只是將他書面的東西電子化就可以了。而一個不規范的公司,第一步就是先要對流程就行規劃化,然后才是電子化的過程。
劉曉:工具和管理流程之間的關系是辨正的,其實我們更看重的是公司是否形成了一套有效的管理規范,是否有一個配置管理的流程和思想。工具只是起到一個輔助作用,當規范建立起來以后,采用工具就能夠事半功倍。沒有規范,使用什么工具都是沒有用處的。廠商一般都是采用工具結合現有的咨詢服務。就像:給你一支好筆,不一定寫出好的字,如果你字寫不好的話。但是如果你能夠寫一手好字,什么筆都沒有關系。工具只是起到一個輔助的作用,關鍵是開發流程。作配置管理,廠商的作用主要是將企業的流程進行規劃化,然后配置管理工具將開發過程進行質量的提升。最后能夠為用戶培養一些配置管理方面的專家,也才是最大的價值。同時當一個不規范的軟件企業中采用配置管理工具的時候,一個強制性的工具是否可以有效的實施下去呢?這對于企業流程、企業的員工都是一個非常關鍵的考驗。工具一般是強制性的,能否和軟件公司員工的工作過程相符合,他對軟件工程的了解能否滿足這種需要呢?
谷煉:在實施配置管理工具時,有一個軟件工程部署曲線,在工具實施后的一段時間內,軟件開發的流程會有一個震動,質量會有大幅下滑,這個時期是非常關鍵并且重要的。
宋興烈:我們就非常擔心這一點,有些許震動不要緊,但是震動過程必須可控。
梁峰:一般在公司中實施配置管理工具時,可以采取先試點后推廣的過程。先是一兩個項目或者一兩個開發模塊,通過實施配置管理工具的過程,為公司規范配置過程,培養配置管理人才;然后再推廣到整個公司的開發過程中。
配置管理的未來
軟件危機一直都存在著,軟件工程也一直都在不斷發展。對于軟件配置管理,未來究竟會如何發展呢?
劉曉:質量問題是軟件開發的根本問題,不僅僅和配置管理有關,還和設計、測試、代碼等有關。如果能夠有一個協同開發平臺,從需求,到代碼、測試用例都有一個對應,這樣的一個整體過程將會是發展的趨勢。以前,很多工具之間都是零散的,之間難以進行系統的集成化。Hansky的做法是有一個協同的開發平臺,將各個工具整合在一起,這是一個方向。
宋興烈:我希望整個配置管理能夠為軟件開發全過程形成一個開發的知識庫。從需求分析、討論;任務的制定、分工;詳細設計;軟件測試;缺陷管理等等都有一個詳細的管理過程。在配置管理中,如何做到將版本管理、測試、構建、發布等過程完整的結合在一起,做到自動化和程序化。同時我希望有這樣一個協同平臺,能夠將所有的開發過程集合起來。
谷煉:質量關乎每個環節,一個環節的好壞并不能提高質量,各個分開的環節也難以保證質量。只有一個整體的過程才能提高質量。軟件開發有一個IDE,對于軟件開發過程的管理也應該有一個IDE,這應該是必然的趨勢。Rational公司,已經有這樣一個整體的解決方案。以后也會以一個單獨的產品出現,包括需求、建模、自動化測試、配置管理等都整合在一起。
梁峰:在貝爾,配置管理和變更管理從來就是一個整體,沒有嚴格的將它們區分,是一個整合的管理過程。
劉曉:配置管理的發展趨勢是一個整合的過程。配置管理工具將會集成變更管理工具、需求管理工具、軟件建模工具等,形成一個統一的IDE,在使用上也會越來越簡單(主要體現在用戶界面和功能上)。當軟件公司在開發軟件的時候,一個完整的軟件開發生命流程管理工作將會在一個統一的軟件平臺上進行,這樣將會帶來軟件開發管理水平的提高,最終能夠提高軟件的質量。
而上海的鄧小年對于配置管理的發展,則有著自己的見解。
1、配置管理應該更自動化
變更管理應該支持從項目開始到維護整個生命周期不同的變更類型;代碼的版本管理到發布應該一氣呵成;版本的配置關系可以簡單表現出來。這些方面雖然配置管理工具涉及到,但沒有一個工具能夠完全的自動化。很多時候,我們需要額外的工作來維護配置管理系統本身?梢哉f:項目總的復雜度不變,實施配置管理后,降低了軟件開發的復雜度,卻增加了管理的復雜度。因此配置管理的自動化非常重要。
2、配置管理應該基于流程
沒有流程來執行配置管理是不切實際的,而現有的配置管理工具大多支持流程的管理,但是流程不一定適合于每個公司。如ClearCase的UCM流程,雖然很好,但是很難定制,我們只能讓公司項目環境來適應這個工具,而不是讓工具來適應現有的開發環境,這樣的做法并不少最好的。配置管理工具不僅要支持流程,并且能夠定制流程。
3、策略和標準化更加容易使用
實施配置管理的時候,需要定義許多的標準,比如版本名稱規則、文檔命名規則、什么時候check in、什么時候創建分支等。目前的一些配置工具,都沒有提供這方面的專門定義,需要配置管理員另外寫腳本或者程序來限制執行。這些地方都是需要改進的。
配置管理專家簡介
劉曉 1995年在西北工業大學獲工學碩士,后任職于Rational公司并參與Rational(中國)公司的組建,F就職于Hansky(中國)公司,任咨詢與服務總監,全面負責國內客戶的軟件開發管理咨詢、項目實施和維護工作。
谷煉 獲得工學碩士后到日本,曾經在富士通株式會社擔任項目經理,在Rational Japan擔任資深技術顧問。2002年回國,在Rational中國擔任資深技術顧問,現在Rational/IBM中國有限公司軟件部擔任資深信息工程師。
宋興烈 1996至1999年,在西南石油學院任教。其間,參與主持了多個軟件和科研項目。2000年開始,作為思維加速公司(www.justep.com)技術和產品的最高負責人,主持業務架構平臺的產品整體設計和技術架構工作。
梁峰 2000年在北方交通大學獲工學碩士學位,現供職于朗訊科技(中國)有限公司無線研發部,從事軟件開發環境和軟件配置管理相關工作。2002年創辦軟件配置管理專業站點SCMCHINA:www.scmchina.net。
耿延煜 在北京用友工程有限公司擔任軟件配置管理工程師,并參與公司級配置管理過程的制定與改進。
鄧小年 在上海一家通信公司負責配置管理工作。在CM方面有三年的實際工作經驗,熟悉CMM、RUP等現代軟件工程領域知識,熟悉ClearCase、ClearQuest、CVS等工具。
配置管理之好書推薦
《軟件配置管理策略與Rational ClearCase》:Brian A.White的軟件配置管理的經典書籍,透徹的闡述了軟件配置管理的思想。
《軟件過程管理》:Watts S. Humphrey著,是能力成熟度模型(CMM)奠基之作,其中有兩個章節講配置管理。
《配置管理原理與實踐》:Anne Mette Jonassen Hass著,清華大學出版社在2003年出版了該書的影印版和中文版。
《Software Configuration Management》,被譽為軟件配置管理的圣經,作者是Wayne A. Babich,出版商:Addison-Wesley,出版日期:1986年。
配置管理之網絡資源
文章來源于領測軟件測試網 http://www.kjueaiud.com/
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月