前言
二十多年來,Rational軟件一直致力于提供全面可靠的軟件開發(fā)管理解決方案,其中軟件配置管理(software configuration management,SCM)解決方案集成了兩個業(yè)界領(lǐng)先的工具:用于軟件工件管理(software artifact management,SAM)的Rational ClearCase和用于缺陷及變更跟蹤的Rational ClearQuest。這兩個工具合在一起構(gòu)成了一個市場領(lǐng)先的軟件配置管理系統(tǒng),提供了真正用于加速軟件開發(fā)周期和流程的解決方案,這一方案已連續(xù)四年居市場第一位(摘自IDC報告:"Rational′s SCM solution continued to dominate the software configuration management market in 2001, with a 36.5 percent share. Rational′s SCM solution market share grew in 2001 despite a decline in revenue in the overall SCM market during the year.")。
在大量軟件工程實踐經(jīng)驗和用戶反饋的基礎(chǔ)上,Rational軟件提出了第三代的配置管理解決方案- 統(tǒng)一變更管理(UCM)。這里,首先,讓我們簡單回顧一下軟件配置管理的發(fā)展歷程:軟件配置管理在其不長的發(fā)展歷史中不斷進(jìn)行演化,從七十年代基于文件(File Based)以版本控制、支持check-out/check-in模型和簡單分支為主要特征的第一代軟件配置管理,到基于項目庫(Project Based)將元數(shù)據(jù)與配置項分開存儲管理從而更好地支持并行開發(fā)、團(tuán)隊協(xié)作以及過程管理的第二代軟件配置管理,發(fā)展到今天基于文件訪問透明(File Transparency Based,即開發(fā)人員可以在不保留本地副本的情況下直接訪問受控配置項)、全面結(jié)合變更請求管理(Software Change Management)、軟件系統(tǒng)分析設(shè)計以及軟件測試等等各個軟件開發(fā)環(huán)節(jié)的完整的軟件配置管理方案。而Rational配置管理解決方案UCM正是體現(xiàn)這一趨勢的代表。
以前兩代配置管理方法為基礎(chǔ)上,Rational軟件提出的統(tǒng)一變更管理(UCM)是用于管理軟件開發(fā)過程(包括從需求到版本發(fā)布)中所有變更的"最佳實踐"流程。UCM定義了一個可以立即用于軟件開發(fā)項目的一致并基于活動的變更管理流程。通過Rational ClearCase和ClearQuest的支持,UCM已成為Rational用于軟件開發(fā)最佳實踐的全面框架--Rationial統(tǒng)一過程(RUP)的關(guān)鍵組成部分。根據(jù)軟件開發(fā)團(tuán)隊的具體需要,可以使用相應(yīng)的過程模型來加速軟件開發(fā)進(jìn)度,提高軟件質(zhì)量并優(yōu)化開發(fā)過程。
UCM通過抽象層次的提升簡化了軟件開發(fā),從而使得軟件開發(fā)團(tuán)隊從更高的層次根據(jù)活動(activity)來管理變更。通過UCM,一個開發(fā)活動可以自動地同其變更集(封裝了所有用于實現(xiàn)該活動的項目工件)相關(guān)聯(lián),這樣避免了管理人員手動跟蹤所有文件變更。使用UCM還可以獲得以下好處:
- 預(yù)定義的工作流程:可以直接采用預(yù)定義的UCM工作流程,快速提升開發(fā)組織的軟件配置管理水平;
- 項目的跟蹤和組織:項目管理人員可以實時掌握項目的最新動態(tài),合理分配資源和調(diào)度開發(fā)活動;
- 協(xié)作自動化:通過將許多耗時較多的任務(wù)自動化處理,UCM使得開發(fā)人員更多地將注意力集中在更高層次的開發(fā)活動上;
- 輕松管理基線:UCM將開發(fā)活動嵌入到各個基線中,這樣測試人員確切地知道他們將測試什么,而開發(fā)人員則確切地知道其他開發(fā)人員做了什么;
- 支持跨功能開發(fā)組:UCM已成為Rational Suite產(chǎn)品中的核心部分,從而可以將從需求到測試各個階段的工件(例如需求文檔、設(shè)計模型、應(yīng)用源代碼、測試用例以及HTML及XML內(nèi)容等)在UCM框架下進(jìn)行統(tǒng)一集成,簡化了貫穿整個軟件開發(fā)周期的變更過程;
- 基于同一代碼構(gòu)件可以進(jìn)行多項目開發(fā),簡化了多項目開發(fā)管理,增大了代碼共享,節(jié)省了開發(fā)資源;
- 可擴(kuò)展性:小型團(tuán)隊可以從ClearCase LT和UCM開始,而大型團(tuán)隊可以結(jié)合ClearCase的高級構(gòu)建管理(build managment)功能,以及ClearCase MultiSite和ClearQuest MultiSite跨地域的使用UCM。
本文第三代配置管理解決方案:一種基于活動的配置管理過程詳細(xì)描述了統(tǒng)一變更管理(UCM)的概念、優(yōu)點以及開發(fā)團(tuán)隊如何通過使用Rational ClearCase,Rational ClearQuest和Rational Suite來受益。
軟件開發(fā)過程中的變更
變更是非常頻繁并且是不可避免的!
今天的軟件開發(fā)團(tuán)隊面臨著巨大的挑戰(zhàn):一方面Internet驅(qū)動下的市場要求以空前的速度來開發(fā)高質(zhì)量的軟件應(yīng)用;另一方面,軟件應(yīng)用需求隨著開發(fā)環(huán)境和結(jié)構(gòu)的日趨復(fù)雜而變得更加復(fù)雜;加上分布式開發(fā)、高性能要求、多平臺、更短和連續(xù)的發(fā)布周期--這些及其他一些因素加重了軟件開發(fā)一直承受的壓力,實際上現(xiàn)在許多軟件開發(fā)團(tuán)隊經(jīng)常在能否成功開發(fā)一個新型應(yīng)用上"賭博"。
由于軟件開發(fā)不同于傳統(tǒng)意義的工程技術(shù)(如建筑、機(jī)械等),市場變化以及技術(shù)上的高速更新都注定了軟件變更是非常頻繁并且是不可避免的,可以說變更是軟件開發(fā)的基石。一方面在軟件開發(fā)環(huán)境下的內(nèi)部活動以新特性、新功能增強以及缺陷修復(fù)等方式不停地制造著變更;另一方面外部因素--例如新操作環(huán)境,新工具的集成,工程技術(shù)和市場條件的改善等以另一種力量驅(qū)動著變更。
管理變更的能力是項目成敗的關(guān)鍵!
既然變更是不可避免的,那么如何管理、追蹤和控制變更就顯得尤為重要。盡管有多種方式可以幫助開發(fā)團(tuán)隊提高變更處理能力,但其中最重要的一點是整個團(tuán)隊的協(xié)作性,這是因為以一種可重復(fù)和可預(yù)測的方式進(jìn)行高質(zhì)量軟件的開發(fā)需要一組開發(fā)人員相互協(xié)作。隨著系統(tǒng)變得越來越大和越來越復(fù)雜,盡管個人生產(chǎn)率依然十分重要,但是決定項目成敗更多的是作為一個整體的開發(fā)團(tuán)隊的生產(chǎn)率。
而軟件開發(fā)團(tuán)隊的生產(chǎn)率很大程度上是由其相互協(xié)作和組織活動的能力決定的,并且開發(fā)團(tuán)隊的成功同其如何高效地響應(yīng)不斷變化的環(huán)境因素緊密相連。
對在競爭激烈的市場下想占有一席之地的開發(fā)團(tuán)隊而言拒絕變更無疑是行不通的,只有積極面對變更,采取有效的工具、方法和流程有機(jī)地管理、追蹤和控制變更才是保證開發(fā)團(tuán)隊成功的關(guān)鍵。另外,由于各種因素的變更,原來采用的工具、方法和流程也會隨著組織的成長和不停變化的需求而逐步演化,因此對軟件開發(fā)團(tuán)隊來說另一個關(guān)鍵的成功因素是其擴(kuò)展能力。
統(tǒng)一變更管理
隨著開發(fā)團(tuán)隊的成長、產(chǎn)品發(fā)布周期的加速以及對軟件資產(chǎn)(包括代碼、文檔等)控制的加強,對基于第三代配置管理工具和過程的需要變得越來越大。Rational軟件的統(tǒng)一變更管理(UCM)通過Rational ClearCase,Rational ClearQuest以及Rational Suite所提供的開發(fā)平臺實現(xiàn)了貫穿整個軟件開發(fā)周期的配置管理過程,即基于活動對軟件構(gòu)件和項目進(jìn)行變更管理。
活動和工件
隨著軟件系統(tǒng)和開發(fā)團(tuán)隊在規(guī)模和復(fù)雜性上的不斷增長,對開發(fā)團(tuán)隊來說如何圍繞周期性的版本發(fā)布來合理地組織開發(fā)活動以及高效地管理用于實現(xiàn)這些活動的工件變得日益重要?;顒樱╝ctivity)可以是在現(xiàn)有產(chǎn)品中修復(fù)一個缺陷或者新加一個增強功能。工件(artifact)可以是在開發(fā)生命周期中涉及的任何東西,例如需求文檔,源代碼,設(shè)計模型或者測試腳本等。實際上軟件開發(fā)過程就是軟件開發(fā)團(tuán)隊執(zhí)行活動并生產(chǎn)工件(圖1)。UCM集成了由Rational ClearQuest提供的變更請求活動管理和Rational ClearCase提供的工件管理功能。
圖1:UCM集成了Rational ClearQuest提供的活動管理能力和Rational ClearCase提供的工件管理功能

活動管理
UCM中的活動管理是由Rational ClearQuest提供的,Rational ClearQuest是一個高度靈活和可擴(kuò)展的缺陷及變更跟蹤系統(tǒng),它可以捕獲和跟蹤所有類型的變更請求(例如產(chǎn)品缺陷、增強請求、文檔變動等)。在UCM中這些變更均以活動出現(xiàn)。
Rational ClearQuest為活動的跟蹤和管理提供了可定制的工作流,這使得開發(fā)團(tuán)隊可以更容易地:
- 將活動分配給某個具體的開發(fā)人員
- 標(biāo)識同活動相關(guān)的優(yōu)先級、當(dāng)前狀態(tài)和其他信息(如負(fù)責(zé)人、估計工期、影響程度等)
- 自動產(chǎn)生查詢、報告和圖表
根據(jù)開發(fā)團(tuán)隊或開發(fā)過程需求可以靈活地調(diào)整ClearQuest工作流引擎:如果開發(fā)團(tuán)隊需要快速部署,那么也可以不進(jìn)行定制,直接使用ClearQuest預(yù)定義的變更過程、表單和相關(guān)規(guī)則(圖2);當(dāng)開發(fā)團(tuán)隊需要在預(yù)定義的過程上進(jìn)行定制時,可以使用ClearQuest對他們的變更過程的各個方面--包括缺陷和變更請求的狀態(tài)轉(zhuǎn)移生命周期,數(shù)據(jù)庫字段,用戶界面(表單)布局,報告,圖表和查詢等進(jìn)行定制。
貫穿整個開發(fā)過程用于管理和跟蹤缺陷和其他變更的一個高效工作流對于滿足當(dāng)今高質(zhì)量標(biāo)準(zhǔn)及緊迫的產(chǎn)品工期的需要是非常重要的。UCM提升了這些變更的抽象層次以便可以從活動的角度來觀察變更,然后Rational ClearQuest工作流引擎將活動同相關(guān)的開發(fā)工件連接在一起。
圖2:Rational ClearQuest提供了一個現(xiàn)成的過程框架用于缺陷和變更跟蹤工作流

工件管理
Rational ClearCase提供了一個軟件工件管理(SAM)框架,開發(fā)團(tuán)隊可以使用這一框架來管理貫穿項目生命周期的所有工件。UCM將Rational ClearCase基礎(chǔ)框架同Rational ClearQuest中的活動管理結(jié)合在一起,從而提供了對工件和活動的集成管理。Rational ClearCase提供了:
- 安全的工件存儲和版本化
- 并行開發(fā)基礎(chǔ)框架--無限分支能力和強大的合并功能
- 自動代碼共享
- 用于選擇正確工件版本的工作空間管理
- 完全的可延展性--從小型本地項目工作組到大型全球分布式開發(fā)團(tuán)隊
另外,Rational ClearCase提供了靈活的SCM的基礎(chǔ)框架,通過使用靈活的元數(shù)據(jù),如標(biāo)簽、分支、屬性、觸發(fā)器(trigger)和超級鏈接(hyperlinks)等,開發(fā)團(tuán)隊可以定制他們自己的SCM過程。
由此可見,不同開發(fā)團(tuán)隊和項目可以通過Rational ClearCase使用不同的策略,開發(fā)團(tuán)隊可以從這種靈活性中受益。而UCM是基于一個經(jīng)過驗證的、成功的開發(fā)過程,因此UCM為希望快速啟動高效SCM的開發(fā)團(tuán)隊也可以直接使用這一過程來自動實現(xiàn)項目策略。UCM具體在以下六個方面提供了開發(fā)過程。
UCM:六個過程領(lǐng)域
UCM在六個具體領(lǐng)域提供了所定義的過程:
- 開發(fā)人員在共享及公共代碼工件上的隔離和協(xié)作;
- 將一起開發(fā)、集成和發(fā)布的相關(guān)工件組按構(gòu)件(component)進(jìn)行組織;
- 在項目里程碑創(chuàng)建構(gòu)件基線(baseline)并根據(jù)所建立的質(zhì)量標(biāo)準(zhǔn)來提升基線;
- 將變更組織為變更集(change set);
- 將活動管理和工件管理集成在一起;
- 按項目來組織軟件開發(fā)并支持多項目之間的代碼共享;
開發(fā)人員的隔離和協(xié)作
開發(fā)人員需要相互隔離的工作環(huán)境以隔離彼此的工作,避免其他組成員的變更潛在地影響其工作的穩(wěn)定性。Rational ClearCase提供了兩種方式來訪問工件的正確版本并在私有工作空間中在這些工件上進(jìn)行工作。這兩種方式是靜態(tài)視圖和獨特的基于MVFS的動態(tài)視圖,它們可以據(jù)本地或網(wǎng)絡(luò)使用而分別進(jìn)行實施。
靜態(tài)視圖為開發(fā)人員提供了在斷開網(wǎng)絡(luò)連接的情況下進(jìn)行工作的靈活性,另外開發(fā)人員也可以容易地將他們的工作同開發(fā)主線進(jìn)行同步。動態(tài)視圖則通過一個獨特的虛擬文件系統(tǒng)(MVFS)來實現(xiàn),它使得開發(fā)人員可以透明地訪問正確工件的正確版本而無需將這些工件版本復(fù)制到本地硬盤驅(qū)動器上。另外由于動態(tài)視圖可以實時進(jìn)行自動更新,因此緊密工作在同一分支上的開發(fā)團(tuán)隊無需手動更新/復(fù)制文件即可立即看到其他人員所做的變動。不管使用何種方式,開發(fā)人員都可以并行工作在多個發(fā)布版本上。例如,一個開發(fā)人員工作在發(fā)布版本2上,同時他也可以修復(fù)發(fā)布版本1中的一個缺陷,而不用擔(dān)心自己的兩個活動涉及的代碼互相干擾或受其他開發(fā)人員的干擾。
隔離不穩(wěn)定的變更對于將錯誤最小化是非常關(guān)鍵的,但是將所有的變更集成到一個所有開發(fā)團(tuán)隊成員均可訪問的公共工作區(qū)域卻是團(tuán)隊開發(fā)環(huán)境下的一個基本要求。今天基于構(gòu)件的軟件開發(fā)方法論的廣泛應(yīng)用以及代碼變更頻率和幅度的增加都要求開發(fā)團(tuán)隊能經(jīng)常和較早地將各個開發(fā)人員的工作進(jìn)行集成。以便在盡早解決可能出現(xiàn)的問題。
使用Rational ClearCase,開發(fā)團(tuán)隊可以實現(xiàn)多種項目策略來同時進(jìn)行工作的隔離和協(xié)作。通過強大的分支和合并功能Rational ClearCase可以支持大規(guī)模的并行開發(fā)。
在ClearCase中可以根據(jù)不同用途來建立分支,如開發(fā)人員分支,新特性分支、缺陷修復(fù)分支、新需求分支等等,從而開發(fā)團(tuán)隊可以根據(jù)需要建立適于自身情況的分支模型,靈活實現(xiàn)軟件配置管理流程。但對于希望能快速利用成熟的軟件開發(fā)流程的開發(fā)團(tuán)隊而言,UCM則提供了一個直接可用的分支模型。實際上在UCM中,在分支基礎(chǔ)上對其在更高層次上進(jìn)行了抽象,從而形成了一個新概念--流(stream)。流表示一個私有或共享的工作空間,它定義了項目版本的一致配置并在UCM項目中的隔離和有效協(xié)作之間提供了一種平衡。熟悉ClearCase的讀者可以將流理解為開發(fā)人員分支,UCM中既有為每個開發(fā)人員配置的私有開發(fā)流,同時為負(fù)責(zé)集成所有交付工作的集成人員配置的公共集成流 (圖3)。由于UCM緊密結(jié)合了活動管理,因此其他分支用途,如特性分支、缺陷修復(fù)分支等將作為活動出現(xiàn)并附加到相應(yīng)的工作流中。
圖3:UCM提供了公共集成工作區(qū)和私有工作區(qū)

私有開發(fā)流為開發(fā)人員提供了相互隔離的工作空間,該空間在最開始由滿足一定質(zhì)量標(biāo)準(zhǔn)的公共工件進(jìn)行初始化。開發(fā)人員使用這些私有工作空間來進(jìn)行工件的變更,構(gòu)建和測試。當(dāng)開發(fā)人員對他們的變更感到滿意時,他們可以將這些變更交付(deliver)到公共集成流上。為了使開發(fā)人員同其他人員的進(jìn)度同步,開發(fā)人員也可以用來自項目公共集成流上最新的穩(wěn)定基線來變基(rebase)他們的私有工作流。使用UCM,開發(fā)人員可以選擇什么時候進(jìn)行交付和變基。
實際上項目集成流充當(dāng)了所有開發(fā)人員的所有變更的協(xié)調(diào)點。為了更好地協(xié)調(diào)所有開發(fā)人員的變更集成,UCM引入了基線(baseline)的概念作為對項目進(jìn)度的度量?;€是一次構(gòu)建(build)或配置的抽象表示,它實際上是構(gòu)件的一個版本,而構(gòu)件是相關(guān)工件的集合。項目開發(fā)團(tuán)隊在開發(fā)過程期間不斷地創(chuàng)建和提升基線。隨著不同開發(fā)人員交付變更給集成流,他們交付的變更將被逐一收集到項目基線中。隨著基線的構(gòu)建、測試和批準(zhǔn),它們可以被逐步提升到不同的基線級別。
基線提升級別具有兩方面的功能:第一,它使項目經(jīng)理或項目管理人員可以建立軟件質(zhì)量標(biāo)準(zhǔn)。由于當(dāng)基線達(dá)到某種預(yù)定義的質(zhì)量標(biāo)準(zhǔn)時就可以被標(biāo)以某種基線級別,因此項目經(jīng)理可以設(shè)置項目策略,標(biāo)識出在哪一個基線級別(如"通過測試的")開發(fā)人員可以執(zhí)行變基操作。第二,基線提升級別就具體的開發(fā)人員應(yīng)該如何同其所開發(fā)的工件進(jìn)行交互提供了指導(dǎo)。例如,根據(jù)某條基線通過某些冒煙測試的時間可以幫助測試人員確定什么時候開始測試。
構(gòu)件基線
第二個UCM過程領(lǐng)域是將工件組織為構(gòu)件。在第二代配置管理中,大多以文件版本形式來管理所有的文件,當(dāng)一個復(fù)雜項目中包含成千個文件上萬個版本時,整個項目的開發(fā)控制將變得相當(dāng)復(fù)雜,因此對眾多的文件進(jìn)行合理分類以呈現(xiàn)系統(tǒng)的設(shè)計要素可以大大簡化項目開發(fā)控制。
UCM通過將多個工件組織為構(gòu)件(在UCM中構(gòu)件指一個VOB的根目錄或VOB的某個第一層子目錄)從而擴(kuò)展了軟件工件管理的版本控制能力,并且UCM還提供了用于自動化構(gòu)件管理的工具和過程。即用基線對構(gòu)件而不是構(gòu)件中眾多的版本進(jìn)行標(biāo)識,然后用這一基線作為新的開發(fā)起點并更新開發(fā)人員的工作空間。
構(gòu)件基線是在ClearCase標(biāo)簽(label)的基礎(chǔ)上結(jié)合活動管理所做的擴(kuò)展,即您可以知道一個UCM構(gòu)件基線中包含了哪些開發(fā)活動,例如一條基線可能包含了三個開發(fā)活動,如BUG 101的修復(fù)、用戶登錄界面漢化以及新增打印特性的支持。
對于包含多個構(gòu)件的復(fù)雜系統(tǒng),UCM提供了基于多個構(gòu)件的組合基線,即多個構(gòu)件之間可以建立依賴關(guān)系,一旦底層構(gòu)件的基線發(fā)生變化,例如生成一條新基線,其上層構(gòu)件相應(yīng)地也自動建立起一條基線,該基線自動包含底層構(gòu)件基線。例如,一個較為復(fù)雜的MIS系統(tǒng)包含"數(shù)據(jù)庫訪問","業(yè)務(wù)邏輯處理"和"前端圖形界面"三個構(gòu)件,其中"前端圖形界面"構(gòu)件依賴于"業(yè)務(wù)邏輯處理"構(gòu)件,而"業(yè)務(wù)邏輯處理"構(gòu)件依賴于"數(shù)據(jù)庫訪問"構(gòu)件。這樣當(dāng)"數(shù)據(jù)庫訪問"構(gòu)件發(fā)生了變化并新建了一條新基線(如DB_BASELINE_Dec24)后,在"業(yè)務(wù)邏輯處理"構(gòu)件和"前端圖形界面"構(gòu)件各自動建立了一條新基線(如BUSINESS_BASELINE_Dec24和GUI_BASELINE_Dec24)。這樣上層構(gòu)件的最新基線可以自動跟蹤底層構(gòu)件的最新基線。
構(gòu)件管理的自動化對于高效無誤地開發(fā)可能包含數(shù)千個源代碼工件(還有其他相關(guān)的工件,如web內(nèi)容,設(shè)計模型,需求說明和測試腳本等)的復(fù)雜軟件系統(tǒng)而言意義重大。
構(gòu)件基線提升
項目開發(fā)團(tuán)隊的成員工作在一個UCM項目(project)中,項目經(jīng)理通過配置軟件構(gòu)件從而使項目成為由構(gòu)件構(gòu)成的體系結(jié)構(gòu)。大多數(shù)組織將UCM管理的構(gòu)件設(shè)計為可以反映出他們軟件體系結(jié)構(gòu)的方式(圖4),即將所有相關(guān)工件按體系結(jié)構(gòu)組織為有意義的子系統(tǒng),進(jìn)而放入不同的構(gòu)件中。
圖4:用UCM構(gòu)件直接對軟件體系結(jié)構(gòu)建模

如上節(jié)所描述的,開發(fā)人員在交付變更到公共集成流時可以周期性地更新他們私有開發(fā)流中的構(gòu)件。然后開發(fā)團(tuán)隊可以根據(jù)開發(fā)過程的當(dāng)前階段和質(zhì)量級別對構(gòu)件進(jìn)行評級。項目策略確定了在開發(fā)人員變基之前構(gòu)件基線必須達(dá)到的質(zhì)量級別以及其他開發(fā)團(tuán)隊成員(如測試人員)應(yīng)該如何同構(gòu)件基線交互。在稍后會對項目以及項目策略做更多描述。 UCM提供了五種預(yù)定義的基線級別,它們包括被拒絕(rejected),初始(initial),通過構(gòu)建(built),通過測試(tested)和已發(fā)布(released)。另外,UCM允許開發(fā)團(tuán)隊用他們自己的命名規(guī)范和提升策略對這些預(yù)定義基線級別進(jìn)行定制。
變更集
第四個UCM過程領(lǐng)域是將獨立的工件變更組織為可作為整體進(jìn)行交付、跟蹤和管理的變更集中。由于通常當(dāng)開發(fā)人員工作在一個活動(例如缺陷修復(fù))上時,他們很少只修改一個文件,因此用變更集可以表示用以完成某個具體活動的工件的所有變更,例如為修改一個編號為63的缺陷變動了50個目錄/文件的120個版本,則缺陷63的變更集為相關(guān)的120個文件/目錄版本。當(dāng)開發(fā)人員同時工作在多個變更請求上的需要使得這一過程更加復(fù)雜。例如,一個開發(fā)人員在進(jìn)行一個新發(fā)布版本的開發(fā),這時由于當(dāng)前發(fā)布版本的一個錯誤要求他不得不中斷當(dāng)前的開發(fā)工作轉(zhuǎn)而去修復(fù)這一缺陷,這樣該開發(fā)人員必須在同一工件上進(jìn)行兩種不同的變更,一種是在未來發(fā)布版本中的增強功能變更,另一種是在前一發(fā)布版本中修復(fù)缺陷的變更。
通過將同一個開發(fā)活動相關(guān)的所有變更收集到一個變更集中,UCM簡化了管理多個工件變更或者多個工件版本的過程。UCM圍繞具體的開發(fā)活動來進(jìn)行工作組織,同時UCM還確保已完成的活動包含所有必要工件上發(fā)生的所有變更。
活動和工件管理
第五個UCM過程領(lǐng)域是通過使用一個可將活動及其相關(guān)工件集鏈接起來的自動化工作流(圖5)將活動管理和工件管理集成起來。這給了開發(fā)團(tuán)隊極大的靈 活性來為不同類型活動的管理指定不同的工作流。UCM提供了最常用活動類型的預(yù)定義工作流,包括缺陷修復(fù)和增強請求。
圖5:UCM工作流概覽

開發(fā)團(tuán)隊還可以使用ClearQuest Designer這一模塊來對這些預(yù)定義過程進(jìn)行定制,項目經(jīng)理或者項目管理人員可以用它來創(chuàng)建所有需要的活動類型,包括缺陷修復(fù),增強功能請求,文檔變動以及Web網(wǎng)站變動等。使用ClearQuest Designer的圖形用戶界面,項目經(jīng)理也可以定義字段,表單以及每個記錄類型的狀態(tài)轉(zhuǎn)移。
為了方便開發(fā)人員更容易地標(biāo)識活動和項目代碼庫中工件間的關(guān)系,UCM自動將活動和其相關(guān)的變更集鏈接起來(圖6)。當(dāng)在一個UCM項目中工作時,開發(fā)人員所交付的是活動(見開發(fā)人員隔離和協(xié)作一節(jié))而不是文件形式的工件。類似的,當(dāng)開發(fā)人員變基時,他們根據(jù)新構(gòu)件基線提供的活動(而不是文件形式的工件)來重審將要在他們的私有開發(fā)流中接收的變更內(nèi)容。這樣,開發(fā)人員不僅可以看到所有相關(guān)工件完整的版本歷史,而且可以看到實現(xiàn)每個變更的所有活動。這給了開發(fā)團(tuán)隊一個項目是如何從一個階段演進(jìn)到下一個階段 演進(jìn)的全面視圖,當(dāng)需要標(biāo)識出一個工件版本的變更是如何影響另一個版本時,這一優(yōu)點所帶來的價值是無法估計的。
使用UCM一致、可重復(fù)的用于活動管理的過程,通過活動管理和工件管理的集成可以幫助開發(fā)團(tuán)隊減少錯誤,開發(fā)人員還可以避免許多通常需要手工作業(yè)的單調(diào)工作,從而更有效率地完成開發(fā)任務(wù)。
圖6:UCM將活動和相關(guān)的工件鏈接起來

項目和項目策略
UCM中的項目可以和實際軟件開發(fā)中的各種項目對應(yīng),每個UCM項目包含一個集成工作流和若干個私有開發(fā)流,項目可由一組構(gòu)件構(gòu)成。這里需要強調(diào)的是一個構(gòu)件可以被多個項目共享,進(jìn)而項目A中的開發(fā)人員可以對一個構(gòu)件進(jìn)行修改,創(chuàng)建新的構(gòu)件基線;而項目B的開發(fā)人員可以參照同一構(gòu)件以及該構(gòu)件在項目A中生成的基線,但不能對該構(gòu)件進(jìn)行任何改動。因而UCM項目從代碼級提供了軟件共享及重用的良好基礎(chǔ)。例如某系統(tǒng)集成公司的湖北分公司剛剛結(jié)束了為某銀行開發(fā)的客服系統(tǒng)1.0的開發(fā)(我們可以將最終交付的版本稱之為XBANK_CRM_HuBei_1.0),與此同時該系統(tǒng)集成公司的北京分公司正準(zhǔn)備為另一家銀行進(jìn)行類似系統(tǒng)的開發(fā)。另外XBANK_CRM_HuBei_1.0在推廣過程中出現(xiàn)了一些問題,亟待解決。還有該客服系統(tǒng)2.0版XBANK_CRM_HuBei_2.0的需 求分析準(zhǔn)備在下月開始。此時如果利用UCM的多項目機(jī)制則可以為在北京的開發(fā)團(tuán)隊建立一個新項目CRM_Beijing_1.0,但該項目并不是從零開始的,它可以從XBANK_CRM_HuBei_1.0開始,有選擇地借鑒XBANK_CRM_HuBei_1.0中可共享的部分。同時原有的XBANK_CRM_HuBei_1.0的開發(fā)人員可以繼續(xù)進(jìn)行2.0版的研制工作。而為了解決XBANK_CRM_HuBei_1.0中在推廣中出現(xiàn)的問題又可以新建一個XBANK_CRM_HuBei_1.0版的維護(hù)項目XBANK_CRM_HuBei_1.0_BUGFIX,部分原有開發(fā)人員既可以加入該項目進(jìn)行原有1.0版的錯誤修復(fù),又可以互不干擾地在原有項目中進(jìn)行2.0版的需求分析。
UCM在項目上另一個突出特點是不同項目中的開發(fā)流之間可以進(jìn)行跨項目的工作交付。即一個項目可以將一條構(gòu)件基線中包含的工件交付給另一個項目,也可以將一個開發(fā)流上的活動變更集交付給另一個項目。緊接上例,假設(shè)過了三個月后項目XBANK_CRM_HuBei_1.0_BUGFIX修復(fù)了8個缺陷,而項目CRM_Beijing_1.0也根據(jù)北京用戶的特點實現(xiàn)了3個不同的新特性,這時如果需要可以在恰當(dāng)時機(jī)將這兩個項目中的成果有選擇地交付給正在湖北進(jìn)行的客服2.0版的開發(fā),從而使得2.0版不僅修復(fù)了前一版本中的錯誤,而且具備了3個新特性。
可以看出項目從一個更高層次上支持了傳統(tǒng)意義上基于分支的并行開發(fā),這對于軟件開發(fā)組織從面向項目到面向產(chǎn)品的轉(zhuǎn)變,合理利用軟件開發(fā)人力資源,改善軟件產(chǎn)品體系結(jié)構(gòu)從而支持更為復(fù)雜的軟件開發(fā)具有重大意義。
由于同一代碼構(gòu)件上多項目開發(fā)的引入,相應(yīng)地UCM加入了多種項目策略來進(jìn)行支持,用戶可以根據(jù)需要靈活定義項目策略。例如上面提到的基線級別,可以定義只有基線級別提升到"Tested"才能作為其他開發(fā)工作流的推薦基線。另外,對于多項目間的代碼交付和共享,還可以定義是否允許接受其他項目的變更等。除了項目一級的策略以外,在工作流一級UCM也有類似的訪問策略,如某個工作流是否允許接受來自本項目或其他項目的工作流上的變更,是否允許向本項目或其他項目的工作流交付變更等等。
開發(fā)團(tuán)隊采用
成功的軟件配置管理需要同時重視人的活動和得到整個開發(fā)團(tuán)隊的全體接受。如果開發(fā)團(tuán)隊成員不能或不采用SCM方法論的話,SCM實現(xiàn)將會失敗。Rational軟件多年來從成功的軟件開發(fā)團(tuán)隊和自身的軟件開發(fā)中吸取最佳實踐經(jīng)驗,將UCM作為一個可為開發(fā)團(tuán)隊采用的優(yōu)化過程來進(jìn)行設(shè)計。UCM的功能已全部嵌入到Rational統(tǒng)一開發(fā)過程管理(Rational Unified Process,RUP)中,RUP是在軟件開發(fā)的各個生命周期應(yīng)用最佳軟件開發(fā)經(jīng)驗的一個實用框架。軟件開發(fā)團(tuán)隊通過直接訪問RUP并通過Rational ClearCase,Rational ClearQuest和Rational Suite的工具專家可以得到關(guān)于UCM過程及其詳細(xì)描述。
UCM通過使開發(fā)人員可以完成下面的工作而簡化了他們的工作:
- 快速準(zhǔn)確地訪問正確工件的正確版本
- 在他們的工作空間中相互隔離地進(jìn)行各自的工作,但可以選擇什么時候交付自己的工作及接收其他人員的變更
- 使用項目策略來標(biāo)識什么時候質(zhì)量達(dá)到了可以接受的級別從而可以在自己的私有工作空間中接收其他人員的變更
- 從他們自己的桌面透明地訪問SCM工具。使用可同他們最常使用的工具(如Visual C++)進(jìn)行集成的工具來進(jìn)行他們的工作--在開發(fā)活動上沒有附加不適當(dāng)約束或增加工作時間
- 自動而透明地將變更集同活動進(jìn)行集成
- 自動進(jìn)行活動的跟蹤、管理和報告。
另外,UCM還減輕了項目經(jīng)理的負(fù)擔(dān),從而項目經(jīng)理可以
- 通過一個預(yù)定義的生命周期工作流在任何時間標(biāo)識一個具體活動的狀態(tài)
- 用統(tǒng)一的報告來監(jiān)控最新的項目狀態(tài)
- 將精力集中在高優(yōu)先級或緊急的事件(活動)上
- 確定工作負(fù)載并平衡任務(wù)分配
貫穿生命周期的工件
到現(xiàn)在為止,本文主要集中在源代碼和其相關(guān)工件上,如對象文件和頭文件等。但是使用UCM時貫穿生命周期的變更也可以由非開發(fā)人員進(jìn)行管理,這樣就最佳實現(xiàn)了統(tǒng)一變更管理的全部好處。這些非開發(fā)人員包括分析人員,設(shè)計人員以及測試人員(圖7)。相應(yīng)的工件包括他們在相關(guān)領(lǐng)域產(chǎn)生的工件,例如分析人員所創(chuàng)建的需求文檔和用例(use cases),設(shè)計人員所建立的設(shè)計模型和用例,測試人員建立的測試腳本,測試數(shù)據(jù)和測試結(jié)果。
為了高效地通信和協(xié)作工作,開發(fā)團(tuán)隊成員需要有效地共享這些工件。Rational Suite包含有一個集成平臺,通過這一公共平臺可以訪問貫穿多個領(lǐng)域的所有類型的開發(fā)工件。作為Rational Suite的一部分,UCM提供了一個用于管理貫穿軟件開發(fā)生命周期的信息共享的過程層。現(xiàn)在每個Rational Suite產(chǎn)品套件中均包含了這兩個產(chǎn)品,這樣每個Rational Suite產(chǎn)品都包含了對UCM過程的支持。非軟件開發(fā)人員(如分析人員、設(shè)計人員以及測試人員)可以應(yīng)用UCM原理象控制代碼變更一樣來控制他們生產(chǎn)的工件(如需求文檔,用例,設(shè)計模型,測試腳本及測試數(shù)據(jù))。Rational ClearQuest工作流引擎強化了活動管理,另外一致的工作流使得所有的團(tuán)隊成員都可以容易地標(biāo)識優(yōu)先級,而ClearQuest提供的工作列表(to do list)特性可以使每個人均可從他們的桌面透明訪問待進(jìn)行的工作(活動)列表,從而容易地標(biāo)識出他們下一步需要進(jìn)行的工作。同樣構(gòu)件基線是新工作(分析、設(shè)計、開發(fā)及測試)的基礎(chǔ)并指導(dǎo)團(tuán)隊成員什么時候更新他們工作空間。
圖7:開發(fā)團(tuán)隊成員在生命周期的不同階段產(chǎn)生不同的工件

來自分析的工件
分析人員扮演著定義項目范圍的重要角色,分析人員需要確定解決方案是什么以及系統(tǒng)邊界。在分析期間這些專業(yè)人員創(chuàng)建了多種不同的工件來幫助解釋說明所建議的解決方案,這些工件包括需求文檔,用例以及可視化模型。開發(fā)團(tuán)隊在整個開發(fā)過程中不斷使用這些工件來管理項目變更是必不可少的。
成功的項目依賴于正確的需求管理。高效的需求管理包括減少開發(fā)的進(jìn)度風(fēng)險和系統(tǒng)的不穩(wěn)定性,以及跟蹤需求變更。項目管理,風(fēng)險評估以及相關(guān)評估標(biāo)準(zhǔn)的產(chǎn)生都依賴于需求管理和需求的可追溯性--即開發(fā)團(tuán)隊以一種規(guī)范過程接受變更并審查需求變更的歷史。
Rational RequisitePro是Rational Suite 開發(fā)團(tuán)隊統(tǒng)一平臺(Team Unifying Platform)中用于需求管理的工具。軟件開發(fā)團(tuán)隊可以使用RequisitePro來創(chuàng)建、管理和跟蹤分析工件--例如需求屬性、需求說明和管理計劃,以及用例模型,術(shù)語表以及涉眾(stakeholder)請求。
UCM項目以同管理代碼相似的方式管理需求,此外UCM還將這些需求工件包含在構(gòu)件基線中。這樣分析人員不僅知道哪些活動構(gòu)成了一條構(gòu)件基線中的工件,還知道哪些需求指導(dǎo)著這些工件的開發(fā)。
來自設(shè)計的工件
設(shè)計人員對系統(tǒng)基礎(chǔ)結(jié)構(gòu)建模并使用用例和設(shè)計模型進(jìn)一步細(xì)化系統(tǒng)定義。通過設(shè)計工件對系統(tǒng)進(jìn)行抽象,可以減少整個系統(tǒng)的復(fù)雜性。
在實際開發(fā)過程中經(jīng)常會出現(xiàn)這樣一種情況:一些開發(fā)團(tuán)隊不能繼續(xù)使用一些設(shè)計模型,因為正式的編碼工作已經(jīng)開始。這是一個錯誤,因為這些設(shè)計模型在幫助規(guī)劃整個工作,另外對于協(xié)助新的組成員快速上手,度量正在進(jìn)行中的變更請求的影響,以及評估整個項目風(fēng)險都非常有價值。由Rational Rose提供的雙向工程功能可以幫助開發(fā)團(tuán)隊保持當(dāng)前編碼進(jìn)度和這些模型之間的同步(圖8),而UCM確保模型與代碼是最新的。
在UCM項目中,構(gòu)件基線包含模型工件和代碼工件。Rose Model Integrator和ClearCase 比較/合并特性的緊密集成使得開發(fā)團(tuán)隊可以盡可能方便地在設(shè)計模型的同時進(jìn)行編碼。這時UCM中的變更集(參見變更集部分)可以擴(kuò)展到模型元素,這樣變更集便包含了代碼工件上的變更以及模型工件上的變更。Rational Rose支持UCM交付(deliver)和變基(rebase)操作(參見活動和工件管理部分),使得多個設(shè)計人員可以在Rose模型上同時工作,如同開發(fā)人員并發(fā)工作在代碼上一樣。
圖8:并行開發(fā)過程中模型和代碼之間的交互

來自測試的工件
傳統(tǒng)的開發(fā)方法將測試工作放到開發(fā)的末期,在編碼工作之后進(jìn)行。成功的構(gòu)件開發(fā)團(tuán)隊都體會到單元測試(unit test)對于項目成功是非常重要的,使用單元測試就是不將構(gòu)件的質(zhì)量保證放到集成階段,而是預(yù)先對單元、子系統(tǒng)和系統(tǒng)進(jìn)行測試。
所有這些并發(fā)測試產(chǎn)生了大量的測試工件--包括測試需求、測試腳本、測試數(shù)據(jù)和大量的測試結(jié)果。Rational Suite TestStudio以及Rational QualityArchitect為開發(fā)團(tuán)隊提供了可持續(xù)地生產(chǎn)高質(zhì)量軟件工件所需的集成框架。借助UCM,開發(fā)團(tuán)隊可以并發(fā)地管理他們的測試工件和相關(guān)的開發(fā)工件。
今天,大多數(shù)開發(fā)團(tuán)隊都意識到將這些測試工件和構(gòu)件基線集成到一起的好處。在UCM項目中,可以在一條構(gòu)件基線中包含所有的代碼工件以及相關(guān)的測試需求,測試程序和測試數(shù)據(jù)。
這樣前面描述的變更集就可以擴(kuò)展到測試用例,測試腳本和測試數(shù)據(jù)。集成的活動和工件管理將活動的整個范圍--從對代碼變更的測試校驗活動--到由其活動描述的UCM變更集鏈接起來。
分析,設(shè)計,編碼和測試工件
Rational Suite和UCM提供的優(yōu)點是無價的。構(gòu)件基線在一條基線中包容了所有的項目工件--從需求文檔到測試包--這對于任何需要進(jìn)行維護(hù)和升級任務(wù)的開發(fā)團(tuán)隊都是一個大優(yōu)點。借助UCM基線級別,使用Rational Suite跨功能的多個組可以更容易地:
- 標(biāo)識所需的活動
- 確定什么時候變基
- 標(biāo)識需測試的活動
- 評估開發(fā)中的工件
另外,UCM基線級別幫助開發(fā)團(tuán)隊識別什么時候開始跨功能的活動,例如,在編碼結(jié)束后經(jīng)過一系列單元測試和冒煙測試(smoke test)一條基線達(dá)到了可以進(jìn)行集成測試的質(zhì)量級別,這時可以提升該構(gòu)件基線從而啟動集成測試活動。 在UCM中,質(zhì)量監(jiān)控是依靠Rational ClearQuest提供的快速報告功能來進(jìn)一步進(jìn)行加強的。通過這些報告功能,組成員可以生成清晰而簡明的項目狀態(tài)數(shù)據(jù)以便快速探測問題,評估風(fēng)險并快速達(dá)成解決方案。另外項目管理人員可以將工作圍繞高優(yōu)先級的活動展開并且確保所有的發(fā)布版本都滿足預(yù)定義的質(zhì)量級別。
總結(jié)
隨著Internet持續(xù)增長并逐步成為同客戶交易和收集戰(zhàn)略信息的主要渠道,軟件開發(fā)團(tuán)隊建立支持這些功能應(yīng)用的壓力也在增長。這一趨勢使得軟件開發(fā)團(tuán)隊(包括所有類型和所有規(guī)模的軟件開發(fā)團(tuán)隊)對用于管理變更的、可預(yù)測和 可重復(fù)的過程的需要變得日趨迫切。通過Rational ClearCase,Rational ClearQuest以及Rational Suite中的統(tǒng)一變更管理能力,Rational軟件提供了用于控制軟件開發(fā)中變更的全面軟件配置管理方案。基于多年來對軟件開發(fā)領(lǐng)域的觀察和Rational軟件開發(fā)而得到的最佳經(jīng)驗,Rational UCM通過活動來組織變更并通過構(gòu)件和項目在更高的層次上抽象軟件開發(fā),從而提供了一種實用的解決方案來解決Internet時代高質(zhì)量軟件應(yīng)用帶來的挑戰(zhàn)。