技术开发 频道

在小型项目中使用IBM RUP

【IT168 技术文章】

    IBM Rational Unified Process?(或简称 RUP?)是一个完善的软件开发过程框架,它具有若干种即装即用的实例。源自 RUP 的过程范围很广,从满足短周期的小型项目需要的轻量级 RUP,到满足大型的、可能是分布式的项目团队需要的更加完备的过程。各种类型和规模的项目都已成功地使用了 RUP。本白皮书说明了如何在小型项目中以轻量级的方式应用 RUP。我们将要讲解如何在一个完整项目的上下文范围内应用极限编程(XP)技术。

    摘要

    IBM Rational Unified Process?(或简称 RUP?)是一个完善的软件开发过程框架,它具有若干种即装即用的实例。源自 RUP 的过程范围很广,从满足短周期的小型项目需要的轻量级 RUP,到满足大型的、可能是分布式的项目团队需要的更加完备的过程。各种类型和规模的项目都已成功地使用了 RUP。本白皮书说明了如何在小型项目中以轻量级的方式应用 RUP。我们将要讲解如何在一个完整项目的上下文范围内应用极限编程(XP)技术。

    引言


    一个小故事

    一天早上,一名经理找到我询问我是否可以花几个星期为一家公司刚刚启动的投资建立一个简单的信息系统。我正厌烦手头的项目而渴望新项目启动带来刺激,于是我为这个机会欢欣雀跃--我快速开始行动,为新的伟大解决方案进行开发,而摆脱我工作的大型机构的官僚和手续的束缚。

    事情在开始阶段进行得很顺利。在头六个月中,我都工作很长时间并且自得其乐。我的工作效率不可思议,并且一些工作堪称是我职业生涯中的杰作。开发周期是快速的,而且我每隔几周就可以完成系统中一些新的主要部分。与用户的交互过程简单而直接,我们都属于一个紧密联系的团队,而且可以免除一些手续和文档。也没有什么正式的设计;代码就是设计,设计也就是代码。一切都是这样的完美!

    这种完美只持续了一段时间。随着系统开发的进行,我们需要开展更多的工作。现有代码随着问题的变更而必须进行完善,而且我们也相应精化了所需工作的概念。我雇了一些开发人员帮助进行开发。我们就像一个单元一样工作,经常对一些问题互相讨论。这加强了沟通同时也免除了形式。

    一年过去了。

    我们还在增加开发人员。整个团队从 3 个人到 5 个人,然后是 7 个人。每次增加人员时,都要花很长的时间来学习,如果没有经验,那么就很难理解和解释整套系统,即使是一个概览。我们开始使用白板图来更加正式地展示系统的整体结构、主要概念和接口。

    我们仍然在使用测试作为验证系统是否满足需要的主要手段。很多新来的开发人员都站在用户的立场上,我们发现项目早期非正式的需求和个人联系已经不能满足需要了。我们花费了更长的时间来计划我们要建立的目标内容。结果由于我们保留了讨论的文字记录,而不用频繁地回想已经做过的决定。我们还发现描述需求和使用场景有助于向系统的新用户介绍情况。

    系统的规模和复杂度不断增加,意外的情况发生了--需要清楚地描述系统的构架。在项目初期,构架大部分存于我的头脑中,后来潦草地记在笔记或活动挂图中。不过,随着项目的人员越来越多,构架有些失控。由于不是每个人都和我一样富有经验,他们无法发现某些变更对整个构架带来的影响。我们不得不使用更精确的术语定义对系统构架的约束。任何可能影响构架的变更都需要团队进行商讨,并且最终获得我的同意。我们绕了一圈后才发现了这个问题,接受了一些重大教训之后,这在真正认识到构架的重要性。

    这是一段真实经历。它只讲述了这个项目中的一部分困难经历。这些经历只在一个方面是不同寻常的:我们中的一部分人从开始的最后一直在一起,时间一年有余。开发人员经常在一个项目中半途而来,没等结束就已经离开,丝毫看不到他们的所作所为带来的后续影响。

    这个项目本该使用一些过程进行管理。过程太多会误事,但是不使用过程会带来新的风险。就像投资高风险股票的人仅仅看到高回报一样,几乎不使用过程 的项目组忽略了项目环境中的关键风险,其实是在"期望得到最好的结果,但是没有为最坏的情况做打算"。

    概述

    本文讨论了如何将过程应用到例如上文所述的项目中。我们的目的是为了得到使用过程的"恰当级别"。了解开发团队所面对的挑战以及其所处的来务环境,可以得出过程使用的恰当级别。如果我们理解了这些挑战,就可以使用刚好足够的过程来降低风险。不论是轻量级的还是其他,"一刀切"过程是不存在的。在以下内容中,我们来研究这一思想,即过程的恰当级别可以作为一个风险的函数。

    我们集中讨论如何通过使用两个流行的方法得到过程的恰当级别:Rational Unified Process 或简称 RUP 以及极限编程(XP)。我们展示如何在小型项目中使用 RUP 以及 RUP 如何处理 XP 没有涉及到的领域。二者融合为项目团队提供了所需的指南--减少风险同时完成交付软件产品的目标。

    RUP 是由 IBM Rational 开发的过程框架。它是一种迭代的开发方法,基于六个经过行业验证的非常好的实践(参见 RUP 附录)。随着时间的推进,一个基于 RUP 的项目将经历四个阶段:起始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)、交付阶段(Transition)。每个阶段都包括一次或者多次的迭代。在每次迭代中,您根据不同的要求或工作流(如需求、分析和设计等)投入不同的工作量。RUP 的关键驱动因素就是降低风险。RUP 通过数千个项目中数千名 IBM Rational 客户和合作伙伴使用而得到精化。下图展示了一个典型迭代过程的工作流:

    典型迭代流

    


    作为风险如何影响过程的一个例子,我们应该考虑是否需要为业务建模。如果由于对业务的理解中没有考虑到一些重大风险,将导致我们所构建的系统是错误的,那么我们就应该执行一些业务建模工作。我们需要正式进行建模工作吗?这取决于我们的涉众--如果一个小团队将非正式地使用结果,那么我们也许只进行非正式的记录就可以。如果组织中的其他人也将使用结果或者查看结果,那么我们可能就要投入更大的努力,并且确保该结果的正确性和可理解性。

    您可以定制 RUP 使其满足几乎任何项目的需要。如果没有满足您特定需要的即装即用的过程或路线图,您可以轻松地创建您自己的路线图。路线图描述了该项目如何计划使用过程,因此代表了该项目的特定过程实例。这就意味着,RUP 可以按需要变得简单或复杂,我们将在本文中详细解释。

    XP 是一个用于小型项目中的以代码为中心的轻量级过程(参见 XP 附录)。它来自 Kent Beck 的创意,在大概 1997 年 Chrysler 公司的 C 3 工资单项目中得到软件界的关注。如同 RUP 一样,XP 也是基于迭代的,并且体现了诸如小规模发布、简单设计、测试以及持续迭代几项实践,。XP 为恰当的项目和环境引入了一些有效的技术;不过,其中也存在隐藏的假设、活动和角色。

    RUP 和 XP 具有不同的基本原理。RUP 是过程组件、方法以及技术的框架,您可以将其应用于任何特定的软件项目,我们希望用户限定 RUP 的使用范围。XP,从另一方面来说,是一个具有更多限制的过程,需要附加内容以使其适合完整的开发项目。这些不同点解释了软件开发界的一个观点:开发大型系统的人员使用 RUP 解决问题,而开发小型系统的人员使用 XP 作为解决方案。我们的经验表明大部分的软件项目都处于两者之间--尽力找寻适用于各自情况的过程的恰当级别。单纯地使用两者之一是不充分的。

    当您在 RUP 中融合了 XP 技术时,您会得到过程的正确量,既满足了项目所有成员的需要,又解决了所有主要的项目风险问题。对于一个工作于高信任环境中的小型项目团队,其中用户是团队的一部分,那么 XP 完全可以胜任。对于团队越来越分散,代码量越来越大,或者构架没有很好定义的情况,您需要做一些其他工作。在用户交互具有"契约"风格的项目中,仅有 XP 是不够的。RUP 是一个框架,您可以从 RUP 出发,在必要时以一组更健壮的技术来扩展 XP。

    本文的以下部分描述了一个基于 RUP 四个阶段的小型项目。在每个阶段中,我们都确定了所产生的活动和工件 。虽然 RUP 和 XP 具有不同的角色和职责,但是我们在这里不会处理这些差异。对于任何组织或项目,实际项目成员必须在过程中与正确的角色关联起来。

0
相关文章