技术开发 频道

项目过程控制的草、楷书

    【IT169 技术文章】

    软件项目过程控制的方法有很多,其中RUP和XP为业界广泛关注,从方法论的本质上说,XP是RUP的最小实现,但是XP还提出了一些很有用的但又不同于RUP的方法论。

    在软件项目过程领域中,Rational Unified Process统一过程被认为是“重量级”的过程,而把Extreme Programming极端编程称为“轻量级”的过程。目前两者都很流行,并且被业界广为关注。

    从两个方法的侧重点上看,RUP更加关注项目的整体过程管理,更类似一本面面俱到的教科书,而XP则偏重于具体的开发过程、代码实现与质量等方面,可以说RUP是一个宏观的方法论,而XP是微观的方法论。

    RUP的宗旨是保证项目的正常推进,因此对项目的计划、文档、实施过程都有明确规范及要求。而XP则鼓励全新的团队协作模式,鼓励用动态的计划适应变化,甚至对开发人员的工作时间都有明确要求。

    如果从书法的角度来讲,RUP是楷书而XP则是草书。实际上作为业界公认的两种成功的软件开发过程,RUP和XP既有相同的价值观,也有独具特色的一面。

    对于RUP来说,从其所提出的理论到实现的方法都是在一种理想化状态进行的,RUP是过程组件、方法以及技术的框架,你可以将其应用于任何特定的软件项目,由用户自己限定 RUP 的使用范围,实际上只有在理想化的情况下才会出现那样的一个在任何阶段都使用RUP的项目,而对于实际的项目来说,可以根据项目的具体情况来有选择性的使用RUP。

    RUP从本质来说还是一个强调设计和规范的软件方法,从这个角度来讲,与传统的瀑布模型没有太大差别,它的灵活性较之敏捷方法XP还是相对较弱的。

    在一些小型软件项目、特别是不可预测的软件项目开发中,面临着各种紧急需求、面临着时间压力,沿用RUP是很难应付自如的。而XP在面对需求变化的时候就显得更加从容,因为XP提倡预测变化、积极的适应变化,计划和设计工作是随着项目的开展逐步推进进行的,这样最大的程度的提高了项目适应变化的能力。

    在另一方面,RUP强调对知识的收集、整理和加工定义,强调在软件开发的时候要有好的体系结构。所以它还是很有利于知识的积累和共享的。

    同时,由于侧重点不同,XP强调的则是团队编码规范的统一,保证开发人员的激情与工作状态等。可以说这是两个方法的定位不同而造成的各有特色。

    相比RUP ,敏捷方法如XP则更为灵活,倡导尽早的、持续的交付有价值的软件满足用户需要。用交流沟通取代详尽的文档,强调团队的主动、自律、自我组织和自发管理。而XP也是以代码为核心的一种方法,这里有很多的东西是未知的,知识只存在于两个地方:开发者的头脑和最后的代码。

    对于项目管理者来说,他们会认为敏捷开发方法弱化了知识管理的概念,而实际上敏捷开发注重的是最有价值的知识的积累和沉淀。

    如何灵活应对各种项目风险、如何最大化优先满足用户价值、又如何能够有效的控制项目开发过程、如果做好项目过程中的知识管理,是每一个软件项目管理者都需要深入思考的问题。RUP的倡导者一直强调RUP裁剪,实际上在软件开发项目中使用RUP不仅仅是需要自身的裁剪,还需要学会融合。

    在RUP裁剪的同时,适宜的融合敏捷开发的各种实践,根据实际项目的情况,采用RUP和XP融合的方法,采用每种方法的长处,为我所用。不要认为RUP与XP是矛盾的,其实不然,它们具有不同的原理、具有不同的应用领域。

    在 RUP中融合了 XP 技术时,才会得到过程的正确量,因为这样既满足了项目所有成员的需要,又解决了所有主要的项目风险问题。

    对于一个工作于高信任环境中的小型项目团队,其中用户是团队的一部分,那么 XP 完全可以胜任。对于团队越来越分散,代码量越来越大,或者构架没有很好定义的情况,您需要做一些其他工作。在要求严格控制过程的项目中,仅有 XP 是不够的。RUP 是一个框架,可以从 RUP 出发,在必要时以一组更健壮的技术来扩展 XP。

    没有一种软件开发过程是放之四海皆准的方法论,在实际项目中的不同环节根据情况使用正确的方法,才能最大限度的保证项目的正常推进。

    楷书和草书虽然写的都是汉字,但是使用的场合不一样,在软件项目开发过程中,应该能够识别、分析不同软件项目的特点,采用相对适合的开发实践来适应软件开发过程,保证对软件开发的有效支持,以便能够为最终用户交付高质量的软件产品。而这需要对 进度、成本、质量之间的平衡,最大化满足客户需要的实现。
 

0