技术开发 频道

将项目从瀑布式转为迭代过程

【IT168 技术文章】

  本文来自于 Rational Edge:通常,坚定地相信迭代化方法的软件开发者必须为那些出于各种原因而坚持使用传统的瀑布方法理念的客户服务。本文就是讨论如何帮助那些人改变观念,转为使用Rational Unified Process。

  迭代开发技术的支持者——尤其那些花费了若干年掌握如何使用Rational Unified Process和相关的迭代方法进行软件开发的专业技术人员和顾问——他们经常批评传统的"瀑布"方法,甚至不理解为什么瀑布法仍然在软件开发公司中被广泛使用。为了拿出客户要求的IT解决方案的项目计划,我们会涉入到许多项目,它们最初都使用瀑布方法。这些解决方案包含开发新软件以及扩建新的基础结构。

  我们有许多不错的使用瀑布方法的理由,包括:

    . 瀑布法在过去的使用中很成功
    . 我们可以重新利用其它瀑布项目的资源
    . 我们的团队(也就是我们客户的员工)感到使用瀑布法很方便
    . 我们的团队希望在进行开发之前完成全部的设计任务
    . 我们的团队也许和另外一只使用瀑布法的团队合作 (尤其是那些为我们的整体解决方案和建设基础结构的团队)

  不论这些理由是什么,使用Rational Unified Process?或者RUP?进行项目开发比使用瀑布法更有意义。我们可以把项目计划和所有的方法转换为迭代方法。本文就是基于以上所述,带您体验这种方法。

  初始计划是什么以及为什么?

  初始计划通常包括许多设计阶段,在这些阶段中我们要概述客户的解决方案。因为这些项目将会有多个软件发布版本,所以初始的设计阶段包括了软件的整体设计。然后针对每个发布版本我们都会有一个设计阶段。随后的每个设计阶段将变得越来越具体,因为我们的客户逐渐清楚什么是他们所需要的,而此时我们的团队也可以开始动工了。

  为什么RUP更有意义?

  对于我们的许多项目,在与客户一起评审完我们的瀑布法计划后,就显示出来一个面向RUP的项目计划比我们的瀑布法计划更具加有意义,这里有很多理由,包括:

    . 客户想要尽早获得成果。一些客户不愿等到我们大量的设计工作完成之后才进行开发。它们经常提出一些要求并且想得到应用程序的代码,然后就可以尽快地把它们拿给股东们看了。

    . 在首次软件发布日期之前,客户不会提出所有高水平的要求。在进入到计划设计阶段尾声之前,一些客户不会提出全部的要求,或者是因为一些冲突或者其它的一些限制(例如,一个在今后某个时刻才能做出的决定)。

    . 客户希望牢牢控制项目的周期和预算。 尽管项目会出现一些不确定的要求或者其它的不确定因素,但是客户依然想控制项目的进度。由于RUP项目的每一个阶段是一个时间箱,因此我们可以准确地描述项目的进度以及每个阶段所需的资源,还有每个阶段完成之后项目的开销。

    . 客户和开发者都想尽快消除项目中的风险。尽早地为客户提供应用程序代码,可以减少由于应用程序没有按时交付所造成的风险。对于开发团队,尽早地发布项目中应用程序的部分内容,特别是与新技术有关的应用程序内容,可以有助于他们降低开发应用程序时遇到的风险。

    . 在资金发生变化时客户想要终止项目。通过为项目提供高价值的功能,RUP可以使客户最大限度地灵活地花费他们的资金,并获得尽可能多的预算,以维持这项工程。如果我们使用瀑布法,就会出现当设计出许多出色的软件版本后,我们才发现资金仅仅够开发其中的一个软件。

  我们改变了什么?

  在从瀑布法到RUP的调整过程中,有许多需要改变的地方:   

    . 项目结构。改变项目结构是非常关键的一步。我们将从我们的瀑布法阶段,包括高层设计,总体设计,发布设计,构建,测试,部署,发布设计,构建,测试,部署--转到RUP阶段,包括多个精化阶段,随后是多个构建阶段。我们可能重复这个过程,并且每个迁移阶段都会按照这个过程进行。

    . 时间框架。在我们开始之前,每个迭代都会被限制在一个时间框架中。如果我们认为在一个精化或构建迭代阶段没有足够的时间完成我们的工作,我们将把这项工作推延到下一个迭代中去。这个与我们在瀑布项目中处理的方法是不同的,在瀑布法中,为了完成设计,构建,测试或者部署,我们可能会扩展这个阶段。

    . 资源使用。在瀑布法中,我们在设计阶段拥有的资源在构建/测试/部署阶段时将不复存在。利用RUP方法时,我们可以保证资源贯穿于每一个阶段。在项目中,我们可让一个人在不同的阶段扮演不同的角色。

    . 早期开发。我们几乎是立即着手开发应用程序,甚至是精化迭代和设计还未完成。而利用瀑布法设计,开发在设计完成之前是不能进行的,利用RUP的项目,我们通过迅速开发部分项目来降低了风险并且获得了好处。尤其是项目开发的最初几周,也就是我们着手开发用户界面的阶段。迭代法可以使我们周期性地提供应用程序的进展,让我们的客户感到满意。迭代法还帮助我们在客户的要求问题上与他们达成一致。它还可以让我们持续地检验应用程序的品质(例如,让我们开发的应用程序满足客户提出的要求)。它还可以通过让开发团队使用新技术来降低风险(例如,使用从未用过的永久性构架技术)。

0
相关文章