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