客户和开发者都想尽快消除项目中的 风险。尽早地为客户提供应用程序代码,可以减少由于应用程序没有按时交付所造成的风险。对于开发 团队,尽早地发布项目中应用程序的部分内容,特别是与 新技术有关的应用程序内容,可以有助于他们降低开发应用程序时遇到的风险。
在资金发生变化时客户想要终止项目。通过为项目提供高价值的功能,RUP可以使客户最大限度地灵活地花费他们的资金,并获得尽可能多的预算,以维持这项工程。如果我们使用瀑布法,就会出现当设计出许多出色的软件版本后,我们才发现资金仅仅够开发其中的一个软件。
我们改变了什么?
在从瀑布法到RUP的调整过程中,有许多需要改变的地方:
﹡项目结构。改变项目结构是非常关键的一步。我们将从我们的瀑布法阶段,包括高层设计,总体设计,发布设计,构建,测试,部署,发布设计,构建,测试,部署--转到RUP阶段,包括多个精化阶段,随后是多个构建阶段。我们可能重复这个过程,并且每个迁移阶段都会按照这个过程进行。
﹡时间框架。在我们开始之前,每个迭代都会被限制在一个时间框架中。如果我们认为在一个精化或构建迭代阶段没有足够的时间完成我们的工作,我们将把这项工作推延到下一个迭代中去。这个与我们在瀑布项目中处理的方法是不同的,在瀑布法中,为了完成设计,构建,测试或者部署,我们可能会扩展这个阶段。
﹡ 资源使用。在瀑布法中,我们在设计阶段拥有的资源在构建/测试/部署阶段时将不复存在。利用RUP方法时,我们可以保证资源贯穿于每一个阶段。在项目中,我们可让一个人在不同的阶段扮演不同的角色。
﹡早期开发。我们几乎是立即着手开发应用程序,甚至是精化迭代和设计还未完成。而利用瀑布法设计,开发在设计完成之前是不能进行的,利用RUP的项目,我们通过迅速开发部分项目来降低了风险并且获得了好处。尤其是项目开发的最初几周,也就是我们着手开发用户界面的阶段。迭代法可以使我们周期性地提供应用程序的进展,让我们的客户感到满意。迭代法还帮助我们在客户的要求问题上与他们达成一致。它还可以让我们持续地检验应用程序的品质(例如,让我们开发的应用程序满足客户提出的要求)。它还可以通过让开发团队使用新技术来降低风险(例如,使用从未用过的永久性构架技术)。
哪些是我们要保留的相同内容?
从瀑布法到RUP,尽管我们改变了许多,但是我们并没有全部摒弃传统的设计方法。
对其它活动的关联。当我们将项目开发从瀑布法转到RUP方法时,有许多支持项目和子项目也在同时进行。在我们初始的瀑布法项目中,我们有了一个关键路径,将我们的项目中的关键活动与其它项目中的关键活动关联在一起。当把我们的项目转为RUP后,我们会记录下其它项目中关键活动的日期,然后在我们的项目中创建出与那些活动紧密相关的新活动。
角色与资源。在项目中我们扮演着同一个角色并且保持同样的资源,尽管项目的结构已经发生了变化。我们仍然想用相同的人员类型得到相同的设计、开发和测试量。还有,一些与应用 程序开发无关的角色(例如,基础结构的开发)也被保留下来。