[转]比较 Rational Unified Process (RUP) 和 Microsoft Solutions Framework (MSF)
级别: 初级
Sandra Sergi Santos, 软件工程专家, IBM
2007 年 6 月 15 日
![]() 是的,两者都包含过程规程、角色、原则、最佳实践和工件。但在某些情况下,这些元素拥有不同的定义和用途。这意味着很难将 RUP 元素直接映射到 MSF 元素上,但尽管如此,我也可以提出相似之处,并且提供一些比较两个框架的方法。
RUP 和 MSF 的定义
目前 RUP 7.0 版将其本身定义为规程和阶段中安排的软件工程的过程。RUP 基于软件工程的最佳实践。除了包含开发过程中的所有基本元素(角色、任务、活动、工件、工作流)之外,RUP 展示了关于和软件工程相关的元素的广泛概念库。就像 Per Kroll 和 Philippe Kruchten 提到的,1RUP 定义了一种迭代、以架构为中心,及用例驱动的软件开发方法。RUP 目前是 IBM Rational Method Composer 的一部分,您可以将过程环境按照您具体的组织需求来裁剪。您可以通过访问 IBM Rational 网站来更多地了解 RUP。2
目前的 MSF 4.0 版将其本身定义为一种定义了一组已经由 Microsoft 证明了的规则、模型、规程、概念、指导和实践的开发项目的方法。Microsoft 没有将 MSF 分类为方法,相反,MSF 是作为软件开发的大范围的指导,以及大量的最佳实践。3
第一印象:从 MSF 到 RUP 的高层的映射
首先,映射两个框架似乎是微不足道的事 —— 就是分析阶段、里程碑、迭代和工件的问题。但是进一步观察阶段和规程的整个分类,会发现该映射不是那样直接的。让我们考虑两种在高层上比较两个框架的方法。
一种方法
由于两种框架使用了类似的术语,所以我们可能总想将软件开发的 RUP 生命周期映射到 MSF 的迭代概念上:也就是说,1 RUP 开发周期 = 1 MSF 迭代。该比较将把每个框架中建立的四个阶段都等同起来,如下:
RUP Inception(初始) = MSF Envisioning(展望)
RUP Elaboration(精化) = MSF Planning(计划) RUP Construction(构建) = MSF Developing(开发) RUP Transition(产品化) = MSF Stabilizing(稳定化)及 MSF Deploying(部署) MSF 描述了一个迭代过程,它指出对于小型且普通的项目,单个迭代就足够了,而对于较大的项目,在产品完成,且达到所需的质量之前,需要更多的迭代。我们可以说,每个 MSF 迭代都把其目标定为拥有所有必要工件的“最终”交付。
根据 RUP 所说的开发周期有多个迭代,且在每个迭代的末尾,我们都将拥有部分的“内部”或“外部”版本,而只有在开发生命周期的末尾,我们才会拥有带有完整工件的“最终”版本。
依我看,无论如何,这都是比较 RUP 和 MSF 的错误方法。
更好的方法
我相信比较这两个框架的更好方法要包括,将 RUP 迭代映射到 MSF 迭代上,这将导致把 MSF 阶段映射为 RUP 规程。该方法表明,在每个 RUP 迭代的末尾,我们将会有已经完成的外部版本,由于在 MSF 迭代的末尾,生成了“稳定”且“完整”的版本。
总之,就像我们看到的,映射不像我们想象的那样直接。如果我们有机会比较解决同一问题的两个项目,一个使用 MSF,而另一个使用 RUP,那么一个阶段接一个阶段的现象将不可能出现。
过程设想
比较 RUP 和 MSF 的另一个困难是关于不同的设想或过程模型。
简单的说,RUP 根据拥有迭代的阶段来描述开发过程。每个迭代都包含规程,其中有角色、任务和工件。在迭代的末尾,我们会得到迭代里程碑,而在每个阶段的末尾,我们会得到阶段里程碑。
阶段、迭代和规程的集合组成了完整的基于 RUP 的生命周期,如图 1 所示。在该生命周期的末尾,我们得到了“完整的”版本。
图 1:RUP 生命周期
相反,MSF 划分为两个不同的过程模型:“团队模型”和“过程模型”。两个模型都可以分类为根据生命周期中的团队和活动,可视化地表示项目安排的描述。“团队模型”定义了在项目中工作的人,及其各自的活动,而“过程模型”在高层次上,安排了项目活动的顺序。MSF 过程模型分为多个阶段,每个阶段都描述了一组副产品和应该达到的里程碑。
图 2:MSF 团队模型和过程模型
映射其他元素
RUP 和 MSF 定义的其他过程元素更容易比较。例如:
工件
MSF 使用通用的术语“可交付的产品”,而 RUP 定义了三种不同类型的“工作产品”:可交付的产品、工件和结果。大多数 MSF 的工件可以映射到 RUP 工件上。但是,反过来就不总是对的了,因为 RUP 拥有许多 MSF 中目前不存在的工件。
在 RUP 中,工作产品总是任务的结果,其中包含任务将如何执行的细节,而对于 MSF,工件是阶段的结果,没有那么多关于如何生产该工件的细节。
角色
RUP 和 MSF 之间的角色比较揭示出了这两个过程框架之间的主要差别之一。非常重要的是要识别出该术语“角色”所定义的不同概念。
MSF 中的团队模型,通称“团队角色”,是基于多组活动的,而 RUP 中所描述的角色是基于职责的。
如图 2 所示,MSF 有六个角色,并将它们定义为“团队角色”。这些可以映射到 RUP 角色上,表 1 中提供了一个这样的实例。RUP 有与开发规程相关的更大量的角色(商业建模、需求、分析 & 设计、实现、测试,部署)并支持规程(配置及变更管理、项目管理和环境)。
尽管有这些差别 —— 也就是,MSF 中的角色定义没有 RUP 中的角色描述详细 —— 但执行两个框架之间的角色映射也是可能的,如表 1 中的测试实例所示。
规程
对于 MSF,单词“规程”指的是比 RUP 中更加全面和一般的过程集合。RUP 将规程与开发过程的“步骤”相关联,而这些被分为不同的主题,如下一部分中所描述的。
表 2 展示了 MSF 和 RUP 中被分为规程类的内容。
活动、任务和步骤
两个框架的活动、任务和步骤之间没有直接的映射。RUP 中的一个“活动”与带有任务安排的工作流相关联。
RUP 活动中的每项任务的步骤都很详细。这意味着,在 RUP 中,我们拥有关于过程将“如何”执行的较大量的细节。图 3 展示了需求规程中 RUP 工作流的实例。对于每个活动,我们可以深入到任务、角色和步骤的更多细节上。对于大多数 RUP 规程来说,您将会找到展示了经常一起执行的任务分组的图,如图 4 所示。
图 3:说明了 RUP 需求规程的活动图
图 4:RUP 需求规程中的典型活动
相反,MSF 以更表面的方式,为三个规程中的每一个规程定义了工作流。事实上,这些工作流简单地称为“过程步骤”,如图 5 所示。
图 5:MSF 预备管理规程中的过程步骤
其他关键的概念
出于本文的原因,我将不会详细地讨论两个框架剩余的关键概念。然而,值得提到的是 MSF 关键概念 Customers、Stakeholders、 Solution、Baselining、Scope 和 Tradeoff 在 RUP 中命名不同。这应该不会引起任何混乱,但 RUP 术语对类似的关键概念使用了不同的名称。特别是 RUP 将方法元素定义为关键概念,而主要的是“角色”、“工作产品”和“任务”。
原则
再次说到,RUP 和 MSF 原则之间应该不存在混乱。事实上,人们可以证明两种框架都是基于相似的原则。
MSF 使用八条原则:
作为过程框架,RUP 是迭代的、以架构为中心的,并且是用例驱动的。这融入进 RUP 的六条原则中:
结束语
我们可以说 MSF 和 RUP 在某些方面不同,而在其他方面相象。RUP 拥有更大量的与开发过程相关的细节和内容,而 MSF 以不太详细,更一般的方式来对待类似的概念。
一个要提到的重点是,MSF 有两个公共的裁剪,一个用于 Agile,一个用于 CMMI。对于 RUP 来说,有针对小项目或大项目的裁剪,还有针对不同需要的其他裁剪 —— 举例来说,RUP for SOA Governance、RUP for COTS 开发、RUP for Java 及 .Net 环境,等等。
我们可以说,RUP 是一个完整的过程框架,因为它描述了谁做什么、在什么时候,以及怎样做。MSF 和 RUP 之间的一个主要差别是与“怎样做”相关的 —— 换句话说,MSF 常常不提供关于如何达到特定目标(制造工件、执行任务)的指导。例如,MSF 说,您必须执行功能规范,但并没有指出应该使用什么技术,什么符号,等等。
两种框架都极力倡导早点减小风险。在这一点上,RUP 通过展示用例和架构稳定性的优先化技术来提供广泛的指导。
致谢:
特别感谢 Ricardo Balduino 帮助将本文从原来的葡萄牙语翻译过来,并且感谢 Ricardo 和 Scott Ambler 仔细的技术检查。
注释
1 Per Kroll 和 Philippe Kruchten, Rational Unified Process Made Easy,Addison-Wesley Professional:2003。ISBN-10:0321166094。
2 IBM 网站的 “Process and Portfolio Management” 部分提供了大量参考资料。要了解 Rational 统一过程的具体细节,请阅读这里的文章:Rational 统一过程 —— 软件开发团队的最佳实践
3 要了解更多关于 MSF 的信息,请访问 Microsoft TechNet Microsoft Solutions Framework 页面。
参考文献:
现在对本文进行讨论!
尊敬的读者:现在开办了一个特别为 Rational Edge 的文章创办的新论坛,现在您就可以分享您对本文或本期杂志或以前杂志中的其他文章的想法。阅读世界各地您的同行们所说的内容,生成您自己的讨论,或者加入正在进行的讨论。单击 这里开始。
参考资料
关于作者
|
[转]比较 Rational Unified Process (RUP) 和 Microsoft Solutions Framework (MSF)的更多相关文章
- [转]Microsoft Solutions Framework (MSF) Overview
本文转自:http://msdn.microsoft.com/zh-CN/library/jj161047(v=vs.120).aspx [This documentation is for prev ...
- RUP(Rational Unified Process)
RUP Rational Unified Process 目前阶段在学习UML,怎么会写RUP呢?学习UML是为了更好的把系统搭建好,RUP也是一样,为系统服务! 软件危机 美国国家总审计局,在198 ...
- RUP(Rational Unified Process),统一软件开发过程
RUP(Rational Unified Process),统一软件开发过程 https://baike.baidu.com/item/RUP/8924595?fr=aladdin RUP最重要的它有 ...
- UML——RUP(Rational Unified Process)
一.宏观导图 二.论细节 RUP(Rational Unified Process)统一软件过程,是指要达到一个指定的目标而采取的一些系列有序的步骤,其目的是高效.准时地提交一个满足业务需求的软件产品 ...
- 探讨Microsoft Solution Framework(MSF)框架下管理的秘密
hello,同学们,同胞们,同志们,同龄们,这样们,那样们,们们们,我又回来写“论文”了,半年时间没见我发布任何博文,是不是认为我被潜规则了啊,哈哈.我想死你们了.好了,废话不多说,进入今天主题: ...
- RUP(Rational Unified Process)统一软件过程概述
RUP是Rational公司三位杰出的软件工程大师Grady Booch,Ivar Jacobson,James Rumbaugh提出的一个软件工程过程方法.软件开发过程是将一个用户需求转化为软件系统 ...
- RUP(Rational Unified Process)笔记整理
RUP,统一软件开发过程是一种面向对象且基于网络的程序开发方法论. RUP的思路:Implementing BestPractices ·迭代式开发 在软件开发的早期阶段就想完全.准确的捕获用户的需求 ...
- Microsoft Win32 to Microsoft .NET Framework API Map
Microsoft Win32 to Microsoft .NET Framework API Map .NET Development (General) Technical Articles ...
- Introducing Microsoft Sync Framework: Sync Services for File Systems
https://msdn.microsoft.com/en-us/sync/bb887623 Introduction to Microsoft Sync Framework File Synchro ...
随机推荐
- Indoor Positioning System & Real time location system
背景 惨痛的背景,正如我前面提到的,参加了公司的一个训练营.刚进来公司的新人,内心充满着对未来的美好憧憬,期待自己能闯出属于自己的天地.更何况,作为一名程序员,无比的希望所有人对自己写得代码或者App ...
- spring 定时器设置每隔10秒触发
<property name="cronExpression" value="0/10 * * * * ?" />
- Sublime Text 插件列表(整理中...)
作为Java Web的开发者,前端和后端的技术都会用到,用了几款文本编辑器,Uedit32.EditPlus.Sublime Text等,发现还是Sublime Text用起来最方便. 首先安装pac ...
- CSS 中定位的使用
position relative 设置区块基准点为左上角(相对定位 以区块的左上角为基准点 仍然会暂居原来的位置) a.不影响元素本身的特性: b.不使元素脱离文档流: c.如果没有定位偏移量,对元 ...
- matplotlib 绘制柱状图的几个例子
1 error bar #!/usr/bin/env python # a bar plot with errorbars import numpy as np import matplotlib.p ...
- win32 API 学习
SendMessage 函数原型 LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam) 详情:百度百科 msd ...
- 聊聊Oracle 11g的Snapshot Standby Database(上)
Oracle 11g是Data Guard的重要里程碑版本.在11g中,Active DataGuard.Advanced Compression等特性大大丰富了Data Guard的功能和在实践领域 ...
- js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
最近做了一个项目,需要用子域名调用主域名下的一个现有的功能,于是想到了用jsonp来解决,在我们平常的项目中不乏有这种需求的朋友,于是记录下来以便以后查阅同时也希望能帮到大家,需要了解的朋友可以参考下 ...
- PHP include()和require()方法的区别
本文总结了PHP的include()和require()两种包含外部文件的方法的不同之处.基本上就是,加载失败的处理方法,性能,以及使用弹性方面的不同. PHP的include()和require() ...
- 嵌入式 详解udev
如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略.在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev ...