1 簡(jiǎn)介
1.1 目的
本文的目的是介紹某公司在將軟件資產(chǎn)從其他配置管理工具遷移到IBM Rational公司的ClearCase UCM配置管理解決方案的一些經(jīng)驗(yàn)。
1.2 概念
在使用ClearCase之前,必需理解某些概念:
Element 納入配置管理的包括版本信息的配置項(xiàng),包括文件與目錄。
VOB Version Object Base,存放配置項(xiàng)的庫(kù)。
UCM Unified Changed Management的縮寫(xiě),統(tǒng)一變更管理模式
Activity Activity是ClearCase UCM模式中的一個(gè)概念,通過(guò)變更集(Change Set)跟蹤完成一項(xiàng)開(kāi)發(fā)任務(wù)所引起的所有配置項(xiàng)的變更。在UCM模式下所有的Check Out、Check In、Add to Source Control等引起配置項(xiàng)發(fā)生變化的操作必須關(guān)聯(lián)到一個(gè)Activity。
Change Set Change Set記錄了Activity所關(guān)聯(lián)的所有的配置項(xiàng)的版本變更,每個(gè)Activity都有一個(gè)Change Set。
Component 可以理解為一些代碼、文檔、Model等按一定的目錄結(jié)構(gòu)組織成的完成某些功能的可以重用的集合。這是UCM所引入的概念,Component與UCM Project相關(guān)聯(lián),UCM Project所管理的所有的Element必定從屬于一個(gè)Component,每個(gè)UCM Project至少有一個(gè)Component。
Deliver UCM的概念,是一個(gè)從開(kāi)發(fā)流向UCM Project集成流或其他開(kāi)發(fā)流提交工作的一個(gè)動(dòng)作。
Development Stream UCM的概念,可以理解為一個(gè)獨(dú)立的開(kāi)發(fā)環(huán)境,包含了在這個(gè)開(kāi)發(fā)流上的Activity與修改的配置項(xiàng)的版本,UCM通過(guò)開(kāi)發(fā)流簡(jiǎn)化了并行開(kāi)發(fā)的配置管理工作。
Dynamic View Dynamic View是對(duì)VOB的一個(gè)動(dòng)態(tài)視圖,VOB的變化會(huì)及時(shí)反應(yīng)到Dynamic View上,每個(gè)Dynamic View都關(guān)聯(lián)到一個(gè)Stream上,在Dynamic View上會(huì)有一些View的私有文件,這些View私有文件不會(huì)被同一個(gè)Stream上的其他View所見(jiàn)到。
Integration Stream UCM的概念,可以理解為項(xiàng)目的主干,每個(gè)開(kāi)發(fā)流都是集成流的一個(gè)分支,在開(kāi)發(fā)流上完成工作后,再提交到主干,項(xiàng)目的Build環(huán)境建議采用集成流
Project 是ClearCase UCM的一個(gè)概念,包含了配置管理所需要的一些配置信息,如果Component、Baseline,Stream等,每個(gè)Project都有一個(gè)Integration Stream。
Project VOB(PVOB) 是存儲(chǔ)UCM所需要的一些特殊的信息,如Proejcts,Stream,Activity及Change Sets等,一個(gè)PVOB可以包含多個(gè)Project的信息, Project的信息必須保存在PVOB中。
Rebase UCM模式的一個(gè)操作,讓當(dāng)前Stream的View的內(nèi)容與Integration Stream推薦基線同步。
Snapshot view Snapshot View是對(duì)VOB的一個(gè)靜態(tài)視圖,將相關(guān)的VOB的選定的版本下載到本地保存,需要經(jīng)常進(jìn)行Update View操作以保證與關(guān)聯(lián)的stream同步。
Add to Source Control 執(zhí)行將選定的文件或目錄納入ClearCase管理的動(dòng)作,需要注意的是,如果要在某一目錄下添加文件或目錄,必須先將它所在的目錄先Check out,再在該目錄下執(zhí)行Add to Source Control動(dòng)作,而后再對(duì)當(dāng)前目錄執(zhí)行Check in;如果正確執(zhí)行完成后,該文件與目錄后的類(lèi)型會(huì)變?yōu)镕ile element Version或Directory Version,如果沒(méi)有將當(dāng)前目錄Checkout執(zhí)行Add to Source Control,則在執(zhí)行完成后文件的類(lèi)型還是View-private File或View-private Directory,在這種情況下,該文件或目錄實(shí)際上沒(méi)有納入配置管理。
2 計(jì)劃與準(zhǔn)備
2.1 計(jì)劃
配置管理切換大至可以劃分為以下幾個(gè)階段:計(jì)劃,準(zhǔn)備,配置庫(kù)的遷移,正式使用。
配置管理切換計(jì)劃的主要內(nèi)容包括進(jìn)度、資源等。
項(xiàng)目的規(guī)模與所處的階段不同,則配置管理切換所需要的時(shí)間也不同。一個(gè)20人左右,開(kāi)發(fā)進(jìn)度約達(dá)到計(jì)劃的一半,代碼量達(dá)到50K左右的項(xiàng)目,從開(kāi)始計(jì)劃到配置管理完全切換到ClearCase,少需要3-4周時(shí)間。如果盲目的追求進(jìn)度,想在1-2周內(nèi)切換完成,則可能在切換后產(chǎn)生一系列后遺癥,如版本丟失、版本錯(cuò)誤甚至可能會(huì)有部分項(xiàng)目組成員抵制,從而使項(xiàng)目開(kāi)發(fā)進(jìn)程中部分工作不能納入配置管理之下。
進(jìn)度安排建議:根據(jù)項(xiàng)目的情況用5-15個(gè)工作日進(jìn)行準(zhǔn)備,配置庫(kù)的遷移需要5個(gè)工作日左右的時(shí)間,配置管理工程師要用5-10個(gè)工作日的跟進(jìn)以使項(xiàng)目組成員熟悉并不再需要幫助。
任何計(jì)劃都有一個(gè)前提:資源,不同的資源會(huì)導(dǎo)致不同的進(jìn)度與成本。在配置管理切換中三類(lèi)資源非常重要:經(jīng)過(guò)培訓(xùn)并且有ClearCase經(jīng)驗(yàn)的配置管理工程師;經(jīng)過(guò)培訓(xùn)并了解ClearCase UCM概念的項(xiàng)目經(jīng)理與架構(gòu)師;Rational工程師的及時(shí)支持。
配置管理工程師在這3-4周時(shí)間內(nèi)要沒(méi)有其他的任務(wù)的打擾,全部的時(shí)間應(yīng)用于該項(xiàng)目的配置切換;每個(gè)項(xiàng)目在配置切換的準(zhǔn)備階段如果有Rational工程師的現(xiàn)場(chǎng)支持會(huì)少走許多彎路。
為了更好的完成工作,配置管理工程師必須經(jīng)過(guò)系統(tǒng)的ClearCase的培訓(xùn),同時(shí)為了提高配置管理工程師的能力,建議在內(nèi)部建立一個(gè)獨(dú)立的試驗(yàn)環(huán)境,可以讓配置管理工程師從安裝配置Server開(kāi)始,進(jìn)行ClearCase的各種功能的操作試驗(yàn),以獲得經(jīng)驗(yàn)。
2.2 準(zhǔn)備
如果決定應(yīng)用ClearCase,好的計(jì)劃與充分的準(zhǔn)備會(huì)起到事半功倍的效果。一個(gè)項(xiàng)目從啟動(dòng)應(yīng)用ClearCase則相對(duì)于從其他配置管理解決方案遷移到ClearCase在準(zhǔn)備上要容易的多,包括多個(gè)版本分支的產(chǎn)品的配置遷移則更加困難,如果準(zhǔn)備不充分,可能會(huì)造成多次反復(fù)、嚴(yán)重降低工作效率,甚至可能會(huì)造成版本錯(cuò)誤等嚴(yán)重后果。
首先,要決定是應(yīng)用ClearCase UCM還是Base ClearCase,UCM模式是基于Base ClearCase應(yīng)用Activity管理變更的一種模式。如果項(xiàng)目組全部在UNIX上進(jìn)行開(kāi)發(fā),比較熟悉CVS,對(duì)命令行及Shell很熟悉,項(xiàng)目團(tuán)隊(duì)配合時(shí)間較長(zhǎng),有專(zhuān)職配置管理工程師,建議應(yīng)用Base ClearCase,但是需要自行開(kāi)發(fā)腳本,以利于項(xiàng)目組成員的使用;跨平臺(tái)項(xiàng)目、配置管理工程師是與其他項(xiàng)目共用的、需要對(duì)項(xiàng)目的進(jìn)度與活動(dòng)有較高的透明度等建議應(yīng)用UCM模式。本文主要探討UCM模式。
在準(zhǔn)備的時(shí)候要確定當(dāng)前項(xiàng)目與其他的項(xiàng)目的關(guān)系,以確定PVOB的建立,如果項(xiàng)目和其他項(xiàng)目的關(guān)系不是很緊密,建議創(chuàng)建一個(gè)獨(dú)立的PVOB。因?yàn)橐话鉖VOB不占用過(guò)多的資源。
2.2.1 配置模式
PVOB建立完成后,要根據(jù)項(xiàng)目的實(shí)際情況確定項(xiàng)目的開(kāi)發(fā)模式,這里給出一些建議。
2.2.1.1 共享流模式
項(xiàng)目只有一個(gè)單獨(dú)的集成流,沒(méi)有開(kāi)發(fā)流。適用于調(diào)研項(xiàng)目或規(guī)模較小,且目標(biāo)單一,不會(huì)同時(shí)有多個(gè)變更存在的項(xiàng)目。比較大的項(xiàng)目也可以在實(shí)際項(xiàng)目的初始階段建立一個(gè)UCM Project,采用共享流模式,在需求完成后,在這個(gè)Project的Component上建立Final基線,在這個(gè)基線上建立一個(gè)新的多開(kāi)發(fā)流模式的UCM Project進(jìn)行設(shè)計(jì)與編碼。
優(yōu)點(diǎn):控制簡(jiǎn)單,如果設(shè)置的是Dynamic View,每個(gè)人的修改,其他人可以立即看到,不需要deliver,對(duì)有大量文檔的項(xiàng)目較適合;不需要針對(duì)Deliver及Rebase設(shè)置大量的基線,配置管理人員的工作相對(duì)較少;同時(shí)項(xiàng)目配置管理的Policy也比較簡(jiǎn)單,不需要考慮太多。
缺點(diǎn):如果同時(shí)支持多個(gè)不同的客戶(hù)或同時(shí)有多個(gè)變更,這些變更之間互相影響,則會(huì)產(chǎn)生開(kāi)發(fā)的混亂。
在Clearcase中共享流模式也支持同時(shí)多個(gè)用戶(hù)對(duì)同一文件進(jìn)行Check out操作,并在Check in時(shí)進(jìn)行歸并。但是如果多人對(duì)一個(gè)Element進(jìn)行Check out操作時(shí),只有一個(gè)人可以應(yīng)用Reserved checkout,其他的項(xiàng)目組成員只能進(jìn)行Unreserved Checkout。Reserved Checkout保證了開(kāi)發(fā)人員是在新的一個(gè)版本上進(jìn)行Checkout,只有在Reserved Checkout的人Check in之后才可以Check in并進(jìn)行歸并。Reserved與Unreserved的區(qū)別可見(jiàn)圖一。