【IT168 技术文章】
为了向初学者介绍 RUP 框架,软件开发的过程经常和建筑过程相比较。但是和建造房屋比起来,使用 RUP 进行软件开发更像是在制作电影,这正如文章题目所说的那样。
每个 IBM Rational Unified Process 框架的新用户都容易因为它的大小,因为它包含的上百个工件和活动而感觉到沮丧。但事实上理解 RUP? 框架的要点是相对容易的,特别是在介绍时把它们同一些熟悉的过程相类比。一个常用的类比是将使用 RUP 进行软件开发的过程和建造房屋的过程相比较。我感觉这种类比有一些缺乏考虑,而我在本文中打算使用另一个不同的类比。我认为使用 RUP 框架创建软件系统的过程在很多方面同构思并制作一部长的电影很类似。
用建造房屋类比的问题
我经常会奇怪为什么 RUP 经常被比作建造房屋的过程。我理解这样类比的动机,是为了向 RUP 的新用户提供一种他们熟悉的类比。毕竟这是关于使用类似的角色和词汇的关于构建有形实体的过程。作为软件系统,必须在建造墙和屋顶之前完成地基(软件方面的架构)。但是在其他方面,这两个过程并不很相似。例如,软件架构设计师处理诸如软件系统内部工作之类的问题。而另一方面,建筑师更关心外观上和功能上的设计,这和软件领域的系统分析师更类似。深入的钻研这两个过程就很容易发现他们之间其他的分歧。对于将这二者进行类比,我主要的异议在于,建造房屋的过程可以是完全可预知的瀑布式的过程(参见图1),而软件开发的过程不能!
图1.传统的瀑布式建筑过程
土木工程师可能会不同意,并且认为建筑项目中和软件项目中的问题是共同的。然而事实是土木工程依靠的是一些众所周知的物理定律,而软件工程不是!
考虑到这些问题,促使我们怀疑是否能够找到除了建筑过程以外更好的一个类比来向人们介绍 RUP 框架。我似乎觉得尽管RUP和工程过程一样有着基本的目标和策略,但事实上实现这些目标的过程和艺术领域内使用创造性方法的过程更有共同点,如拍电影,写书,甚至写一篇类似本文的文章。因此当我介绍了RUP的基本原理后,我将会阐述这些要点是怎样和电影制作相对应的。
RUP的基本原理
和大多数人的看法相反,RUP框架并不是治疗不良软件开发实施的良药。RUP以常识为基础,由许多成功的软件项目而产生。有趣的是这样类似的实践也存在于其他领域内。
在任何类别的开发中使用任何工序的唯一目的就是为了减小风险。更具体的说,使用RUP是为了减小软件开发相关的风险。通过遵从精心设计并已被证明了的规则,我们的目的是增加成功的可能性。毕竟,如果软件设计是可以预测的事情,我们为什么要费如此的力气呢?
一部分软件开发相关的风险和其他类型开发的风险一样,包括以下几点:
. 实现项目的资源不足
. 资金不足
. 任务太多,时间不足
. 不成熟,响应速度慢,或不灵活的组织
这些是管理风险的例子,可以由经济手段,结构改革,或教育方面的努力来解决。
但仍然有一些风险和软件开发不可预测的特点相关,如下所示:
. 未知的技术
. 未发现的需求
. 复杂的结构
后者是更加技术化的风险,必须用其他方法解决。为了处理这样的风险,RUP给出了以下这些主要的策略:
. 开发迭代
. 管理项目需求
. 使用基于组件的体系架构
. 可视化建模
. 持续的质量验证
. 管理变更
这些策略作为非常好的实践在 Rational Unified Process 中经常提到。普遍的讲,这些规则并不局限于软件开发领域,而是更加通用和可以用来在不同的情况下处理问题。在下一节我们将深入的分析每一个非常好的实践,讨论它们如何同电影制作相对应。在本文的最后我将提到一些其他的可能从RUP非常好的实践中受益的项目类型。