【摘  要】软件项目中,范围变更失控是导致软件失败的主要原因。分析了范围变更的主要原因,提出了范围变更控制的基本要素,建立了有效的范围变更控制流程,并且对范围管理的控制过程进行了分析,最后对软件项目范围变更控制进行了总结。

    【关键字】软件项目;范围管理;变更控制;过程控制

    1 引言

    近年来,IT产业以惊人的速度发展,从而使软件产业的地位在经济发达国家提到了空前的高度。虽然软件产业在国内外得到了迅速发展,但是软件项目实施效果却不容乐观。调查分析表明,大约70%的软件项目超出预定开发周期,大型项目平均超出计划交付时间20%-50%,90%以上的软件项目开发费用超出预算,并且项目越大,超出项目计划的程度越高。

    据分析,软件项目失败的原因主要有以下三点:一是需求的不断变化。二是开发的软件不能满足用户的需求。三是软件项目的管理问题,这包括两个方面:一方面是因为缺乏完善的管理项目风险的方法;另一方面是由于软件项目规模的庞大,项目的范围难以精确确定,从而在项目开发的过程中范围不断变更,过程控制的力度不够,因此导致成本估计难以精确,进度控制困难,可靠性无法保证。

    总的来说,软件项目的失败,很大程度上是由于软件项目的复杂性引起的,而软件项目的复杂性主要来源于软件项目的不确定性。无论是需求的不确定,还是由于软件项目的规模庞大造成软件项目范围难以界定,最终的结果都必将造成软件项目范围的变更。因此,人们在技术方面的诸多努力未取得相应成效后,不得不转而求助于项目管理技术。

    2软件项目范围管理的重要性

    项目范围是指产生项目产品所包括的所有工作及产生这些产品所用的过程。项目干系人必须在项目要产生什么样的产品方面达成共识,也要在使用怎样的过程生产这些产品方面达成共识。项目范围管理是指对项目包括什么与不包括什么的定义与控制过程。这个过程用于确保项目组和项目干系人对作为项目结果的项目产品以及生产这些产品所用到的过程有一个共同的理解。项目范围管理的任务是界定项目包含且只包含所有需要完成的工作,并对项目其他管理工作起到指导作用,以保证顺利完成项目的所有过程。

    项目范围界定不清在软件项目中是一种较常见的现象,造成项目范围界定不清的原因有以下三种:第一,业务流程不规范,没有完善的项目管理体系来指导项目的管理,这种情况是最糟糕的,大部分项目都是以失败而告终;第二,对项目没能制定出清晰规范的范围变更控制过程。企业有管理体系,但不够完善和规范,对项目组的变更过程的制定没能起到有效的指导作用。变更是不可避免的,只要有效地加以管理、控制,同样可以达到各方满意的结果;第三,业务需求不清晰,对项目范围的定义不够精确,系统要完成的目标也不够明确,做不到可量化、可验证程度。项目范围的明确定义,有经验的项目经理及系统分析员将起到至关重要的作用。可见,完善的项目范围管理是整个项目最终成败的关键。

    3 项目范围变更控制要素分析

    制约一个项目的条件是项目“三约束条件”——范围、时间、成本。在一个项目中这三个条件是相互影响、相互制约的,而且往往是由于范围变更影响了时间和成本的变更。如果项目一开始确定的范围小,那么它需要完成的时间以及耗费的成本必然也小,反之亦然。很多项目在开始时都会粗略地确定项目的范围、时间以及成本,然而在项目进行到一定阶段之后往往会变成让人感觉到不知道项目什么时候才能真正结束,要使得项目结束到底还需要投入多少人力和物力,整个项目就好像一个无底洞,对项目的最后结束谁的心里也没有底。这种情况的出现对于企业的高层来说,他们是最不希望看到的,然而这样的情况出现并不罕见。造成这样的结果就是由于没有控制和管理好项目的范围。可见项目的三约束中范围的影响起到关键作用。

    一般来说,在启动软件项目初期,客户就应该提出一个相对确定的项目范围,为项目的实施提供一个牢固的前提和框架,同时也是为后期的项目管理划出一个明晰的“圈”,所有项目活动的开展,包括项目成本、质量和时间的控制也应该在此范围内进行。但是,在实际的操作过程中,这个“圈”的边界有可能会出现模糊、扩大的现象,甚至这些扩大和模糊的部分会给项目带来风险。项目范围(Scope)、时间(Time)、成本(Cost)、质量(Quality)之间的关系模型如图1所示。

    如果项目范围即既定的面积S不变,成本C、质量Q、时间T就可以在一个固定的S的边界限制下给出一个约束的关系模型Cost=f(Quality,Time,Scope)。但是,如果S的值并不固定,就如图1所示出现边界模糊或者向外扩展时, C、Q、T就失去可依赖的边界限制,其之间的约束关系就会变得复杂。因此,我们在对项目范围进行控制时,一是要保证项目初期的S是准确可靠的,尽量减少边界的模糊性;二是要保证项目实施过程中S的稳定,尽量避免扩大化,或是说让扩大化受到合理的控制。


 

    图1  项目范围、时间、成本、质量之间的关系模型

    4 范围变更控制流程分析

    范围变更控制是指对有关项目范围的变更实施控制。主要的过程输出是范围变更、纠正行动与教训总结。

    一个项目的范围计划可能制订的非常好,但是想不出现任何改变几乎是不可能的,因此变更是不可避免的,关键问题是如何对变更进行有效的控制。项目经理和项目小组必须意识到范围变更本身并没有什么不对,事实上很多时候这会使系统更健壮、更实用。客户通常不能一开始就确定所有需求,而且情况会随时间而变化,如果不能包容变更,那么最终的软件系统可能就达不到应有的价值。但是如果变更失控,后果也非常严重,甚至于导致整个项目的失败。

    变更控制的目的不是控制变更的发生,而是对变更进行管理,确保变更有序进行。为执行变更控制,必须建立有效的范围变更流程,它对管好项目至关重要。变更控制流程主要包括四个关键控制点:授权、审核、评估、确认。在变更过程中要跟踪和验证,确保变更被正确执行。范围变更控制流程如图2所示。

    提交变更请求:项目的任何涉众均可提交变更请求。通过将变更请求状态设置为已提交,变更请求被记录到变更请求追踪系统中并放置到变更控制委员会(CCB)复审队列中。

    复审变更请求:此活动的作用是复审已提交的变更请求。在 CCB 复审会议中对变更请求的内容进行初始复审,以确定它是否为有效请求。如果是,则基于小组所确定的优先级、时间表、资源、努力程度、风险、严重性以及其他任何相关的标准,判定该变更是在当前发布版的范围之内还是范围之外。
确认重复或拒绝:如果怀疑某个变更请求为重复的请求或已拒绝的无效请求(例如,由于操作符错误、无法重现、工作方式等),将指定一个 CCB 代表来确认重复或已拒绝的变更请求。如果需要的话,该代表还从提交者处收集更多信息。

    更新变更请求:如果评估变更请求时需要更多的信息,或者如果变更请求在流程中的某个时刻遭到拒绝,那么将通知提交者,并用新信息更新变更请求。然后将已更新的变更请求重新提交给 CCB 复审队列,以考虑新的数据。

    安排和分配工作:一旦变更请求被置为已打开,项目经理就将根据请求的类型把工作分配给合适的角色,并对项目时间表做必要的更新。

    进行变更:指定的角色执行在流程的有关部分中指定的活动集,以进行所请求的变更。 这些活动将包括常规开发流程中所述的所有常规复审活动和单元测试活动。然后,变更请求将标记为已解决。