轉(zhuǎn)自:http://www.ibm.com/developerworks/cn/rational/rationaledge/content/may07/santos/
目前 RUP 7.0 版將其本身定義為規(guī)程和階段中安排的軟件工程的過(guò)程。RUP 基于軟件工程的最佳實(shí)踐。除了包含開發(fā)過(guò)程中的所有基本元素(角色、任務(wù)、活動(dòng)、工件、工作流)之外,RUP 展示了關(guān)于和軟件工程相關(guān)的元素的廣泛概念庫(kù)。就像 Per Kroll 和 Philippe Kruchten 提到的, 1 RUP 定義了一種迭代、以架構(gòu)為中心,及用例驅(qū)動(dòng)的軟件開發(fā)方法。RUP 目前是 IBM Rational Method Composer 的一部分,您可以將過(guò)程環(huán)境按照您具體的組織需求來(lái)裁剪。您可以通過(guò)訪問(wèn) IBM Rational 網(wǎng)站來(lái)更多地了解 RUP。 2
目前的 MSF 4.0 版將其本身定義為一種定義了一組已經(jīng)由 Microsoft 證明了的規(guī)則、模型、規(guī)程、概念、指導(dǎo)和實(shí)踐的開發(fā)項(xiàng)目的方法。Microsoft 沒(méi)有將 MSF 分類為方法,相反,MSF 是作為軟件開發(fā)的大范圍的指導(dǎo),以及大量的最佳實(shí)踐。 3
首先,映射兩個(gè)框架似乎是微不足道的事 —— 就是分析階段、里程碑、迭代和工件的問(wèn)題。但是進(jìn)一步觀察階段和規(guī)程的整個(gè)分類,會(huì)發(fā)現(xiàn)該映射不是那樣直接的。讓我們考慮兩種在高層上比較兩個(gè)框架的方法。
由于兩種框架使用了類似的術(shù)語(yǔ),所以我們可能總想將軟件開發(fā)的 RUP 生命周期映射到 MSF 的迭代概念上:也就是說(shuō),1 RUP 開發(fā)周期 = 1 MSF 迭代。該比較將把每個(gè)框架中建立的四個(gè)階段都等同起來(lái),如下:
RUP Inception(初始) = MSF Envisioning(展望)
RUP Elaboration(精化) = MSF Planning(計(jì)劃)
RUP Construction(構(gòu)建) = MSF Developing(開發(fā))
RUP Transition(產(chǎn)品化) = MSF Stabilizing(穩(wěn)定化)及 MSF Deploying(部署)
MSF 描述了一個(gè)迭代過(guò)程,它指出對(duì)于小型且普通的項(xiàng)目,單個(gè)迭代就足夠了,而對(duì)于較大的項(xiàng)目,在產(chǎn)品完成,且達(dá)到所需的質(zhì)量之前,需要更多的迭代。我們可以說(shuō),每個(gè) MSF 迭代都把其目標(biāo)定為擁有所有必要工件的“最終”交付。
根據(jù) RUP 所說(shuō)的開發(fā)周期有多個(gè)迭代,且在每個(gè)迭代的末尾,我們都將擁有部分的“內(nèi)部”或“外部”版本,而只有在開發(fā)生命周期的末尾,我們才會(huì)擁有帶有完整工件的“最終”版本。
依我看,無(wú)論如何,這都是比較 RUP 和 MSF 的錯(cuò)誤方法。
我相信比較這兩個(gè)框架的更好方法要包括,將 RUP 迭代映射到 MSF 迭代上,這將導(dǎo)致把 MSF 階段映射為 RUP 規(guī)程。該方法表明,在每個(gè) RUP 迭代的末尾,我們將會(huì)有已經(jīng)完成的外部版本,由于在 MSF 迭代的末尾,生成了“穩(wěn)定”且“完整”的版本。
總之,就像我們看到的,映射不像我們想象的那樣直接。如果我們有機(jī)會(huì)比較解決同一問(wèn)題的兩個(gè)項(xiàng)目,一個(gè)使用 MSF,而另一個(gè)使用 RUP,那么一個(gè)階段接一個(gè)階段的現(xiàn)象將不可能出現(xiàn)。
比較 RUP 和 MSF 的另一個(gè)困難是關(guān)于不同的設(shè)想或過(guò)程模型。
簡(jiǎn)單的說(shuō),RUP 根據(jù)擁有迭代的階段來(lái)描述開發(fā)過(guò)程。每個(gè)迭代都包含規(guī)程,其中有角色、任務(wù)和工件。在迭代的末尾,我們會(huì)得到迭代里程碑,而在每個(gè)階段的末尾,我們會(huì)得到階段里程碑。
階段、迭代和規(guī)程的集合組成了完整的基于 RUP 的生命周期,如圖 1 所示。在該生命周期的末尾,我們得到了“完整的”版本。
圖 1:RUP 生命周期
相反,MSF 劃分為兩個(gè)不同的過(guò)程模型:“團(tuán)隊(duì)模型”和“過(guò)程模型”。兩個(gè)模型都可以分類為根據(jù)生命周期中的團(tuán)隊(duì)和活動(dòng),可視化地表示項(xiàng)目安排的描述?!皥F(tuán)隊(duì)模型”定義了在項(xiàng)目中工作的人,及其各自的活動(dòng),而“過(guò)程模型”在高層次上,安排了項(xiàng)目活動(dòng)的順序。MSF 過(guò)程模型分為多個(gè)階段,每個(gè)階段都描述了一組副產(chǎn)品和應(yīng)該達(dá)到的里程碑。
圖 2:MSF 團(tuán)隊(duì)模型和過(guò)程模型
RUP 和 MSF 定義的其他過(guò)程元素更容易比較。例如:
MSF 使用通用的術(shù)語(yǔ)“可交付的產(chǎn)品”,而 RUP 定義了三種不同類型的“工作產(chǎn)品”:可交付的產(chǎn)品、工件和結(jié)果。大多數(shù) MSF 的工件可以映射到 RUP 工件上。但是,反過(guò)來(lái)就不總是對(duì)的了,因?yàn)?RUP 擁有許多 MSF 中目前不存在的工件。
在 RUP 中,工作產(chǎn)品總是任務(wù)的結(jié)果,其中包含任務(wù)將如何執(zhí)行的細(xì)節(jié),而對(duì)于 MSF,工件是階段的結(jié)果,沒(méi)有那么多關(guān)于如何生產(chǎn)該工件的細(xì)節(jié)。
RUP 和 MSF 之間的角色比較揭示出了這兩個(gè)過(guò)程框架之間的主要差別之一。非常重要的是要識(shí)別出該術(shù)語(yǔ)“角色”所定義的不同概念。
MSF 中的團(tuán)隊(duì)模型,通稱“團(tuán)隊(duì)角色”,是基于多組活動(dòng)的,而 RUP 中所描述的角色是基于職責(zé)的。
如圖 2 所示,MSF 有六個(gè)角色,并將它們定義為“團(tuán)隊(duì)角色”。這些可以映射到 RUP 角色上,表 1 中提供了一個(gè)這樣的實(shí)例。RUP 有與開發(fā)規(guī)程相關(guān)的更大量的角色(商業(yè)建模、需求、分析 & 設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試,部署)并支持規(guī)程(配置及變更管理、項(xiàng)目管理和環(huán)境)。
盡管有這些差別 —— 也就是,MSF 中的角色定義沒(méi)有 RUP 中的角色描述詳細(xì) —— 但執(zhí)行兩個(gè)框架之間的角色映射也是可能的,如表 1 中的測(cè)試實(shí)例所示。
MSF 團(tuán)隊(duì)角色 | RUP 角色 |
---|---|
測(cè)試 | 測(cè)試分析人員 |
測(cè)試設(shè)計(jì)師 | |
測(cè)試經(jīng)理 | |
測(cè)試人員 |
對(duì)于 MSF,單詞“規(guī)程”指的是比 RUP 中更加全面和一般的過(guò)程集合。RUP 將規(guī)程與開發(fā)過(guò)程的“步驟”相關(guān)聯(lián),而這些被分為不同的主題,如下一部分中所描述的。
表 2 展示了 MSF 和 RUP 中被分為規(guī)程類的內(nèi)容。
MSF 規(guī)程 |
---|
項(xiàng)目管理 風(fēng)險(xiǎn)管理 預(yù)備管理 |
RUP 開發(fā)規(guī)程 |
商業(yè)建模 需求 分析 & 設(shè)計(jì) 實(shí)現(xiàn) 測(cè)試 部署 |
支持規(guī)程 |
配置和變更管理 項(xiàng)目管理 環(huán)境 |
兩個(gè)框架的活動(dòng)、任務(wù)和步驟之間沒(méi)有直接的映射。RUP 中的一個(gè)“活動(dòng)”與帶有任務(wù)安排的工作流相關(guān)聯(lián)。
RUP 活動(dòng)中的每項(xiàng)任務(wù)的步驟都很詳細(xì)。這意味著,在 RUP 中,我們擁有關(guān)于過(guò)程將“如何”執(zhí)行的較大量的細(xì)節(jié)。圖 3 展示了需求規(guī)程中 RUP 工作流的實(shí)例。對(duì)于每個(gè)活動(dòng),我們可以深入到任務(wù)、角色和步驟的更多細(xì)節(jié)上。對(duì)于大多數(shù) RUP 規(guī)程來(lái)說(shuō),您將會(huì)找到展示了經(jīng)常一起執(zhí)行的任務(wù)分組的圖,如圖 4 所示。
圖 3:說(shuō)明了 RUP 需求規(guī)程的活動(dòng)圖
圖 4:RUP 需求規(guī)程中的典型活動(dòng)
相反,MSF 以更表面的方式,為三個(gè)規(guī)程中的每一個(gè)規(guī)程定義了工作流。事實(shí)上,這些工作流簡(jiǎn)單地稱為“過(guò)程步驟”,如圖 5 所示。
圖 5:MSF 預(yù)備管理規(guī)程中的過(guò)程步驟
出于本文的原因,我將不會(huì)詳細(xì)地討論兩個(gè)框架剩余的關(guān)鍵概念。然而,值得提到的是 MSF 關(guān)鍵概念 Customers、Stakeholders、 Solution、Baselining、Scope 和 Tradeoff 在 RUP 中命名不同。這應(yīng)該不會(huì)引起任何混亂,但 RUP 術(shù)語(yǔ)對(duì)類似的關(guān)鍵概念使用了不同的名稱。特別是 RUP 將方法元素定義為關(guān)鍵概念,而主要的是“角色”、“工作產(chǎn)品”和“任務(wù)”。
再次說(shuō)到,RUP 和 MSF 原則之間應(yīng)該不存在混亂。事實(shí)上,人們可以證明兩種框架都是基于相似的原則。
MSF 使用八條原則:
作為過(guò)程框架,RUP 是迭代的、以架構(gòu)為中心的,并且是用例驅(qū)動(dòng)的。這融入進(jìn) RUP 的六條原則中:
我們可以說(shuō) MSF 和 RUP 在某些方面不同,而在其他方面相象。RUP 擁有更大量的與開發(fā)過(guò)程相關(guān)的細(xì)節(jié)和內(nèi)容,而 MSF 以不太詳細(xì),更一般的方式來(lái)對(duì)待類似的概念。
一個(gè)要提到的重點(diǎn)是,MSF 有兩個(gè)公共的裁剪,一個(gè)用于 Agile,一個(gè)用于 CMMI。對(duì)于 RUP 來(lái)說(shuō),有針對(duì)小項(xiàng)目或大項(xiàng)目的裁剪,還有針對(duì)不同需要的其他裁剪 —— 舉例來(lái)說(shuō),RUP for SOA Governance、RUP for COTS 開發(fā)、RUP for Java 及 .Net 環(huán)境,等等。
我們可以說(shuō),RUP 是一個(gè)完整的過(guò)程框架,因?yàn)樗枋隽?em>誰(shuí)做什么、在什么時(shí)候,以及怎樣做。MSF 和 RUP 之間的一個(gè)主要差別是與“怎樣做”相關(guān)的 —— 換句話說(shuō),MSF 常常不提供關(guān)于如何達(dá)到特定目標(biāo)(制造工件、執(zhí)行任務(wù))的指導(dǎo)。例如,MSF 說(shuō),您必須執(zhí)行功能規(guī)范,但并沒(méi)有指出應(yīng)該使用什么技術(shù),什么符號(hào),等等。
兩種框架都極力倡導(dǎo)早點(diǎn)減小風(fēng)險(xiǎn)。在這一點(diǎn)上,RUP 通過(guò)展示用例和架構(gòu)穩(wěn)定性的優(yōu)先化技術(shù)來(lái)提供廣泛的指導(dǎo)。
聯(lián)系客服