【IT168 技术文章】
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 复审队列,以考虑新的数据。
安排和分配工作:一旦变更请求被置为已打开,项目经理就将根据请求的类型把工作分配给合适的角色,并对项目时间表做必要的更新。
进行变更:指定的角色执行在流程的有关部分中指定的活动集,以进行所请求的变更。 这些活动将包括常规开发流程中所述的所有常规复审活动和单元测试活动。然后,变更请求将标记为已解决。
核实测试工作版本中的变更:指定的角色解决变更后,变更将放置在要分配给测试员的测试队列中,并在产品工作版本中加以核实。
核实发布工作版本中的变更:已确定的变更一旦在产品的测试工作版本中得到了核实,就将变更请求放置在发布队列中,以便在产品的发布工作版本予以核实、生成发布说明等,然后关闭该变更请求。
范围变更控制流程中的每个活动由指定的角色或组织来完成。
图2 范围变更控制流程
5 范围管理控制过程分析
过程是为实现某个特定目标而进行的一系列活动。做好项目范围管理主要包含项目启动、范围计划、范围定义、范围核实及范围变更控制等过程。主要过程如图3所示。
图3 项目范围管理主要过程
启动过程:项目启动是指组织正式开始一个项目或继续到项目的下一个阶段。启动过程的一个输出就是项目章程。项目章程是一个重要的文档,这个文件正式承认项目的存在并对项目提供一个概览。项目章程将粗略地规定项目的范围,这也是项目范围管理后续工作的重要依据。项目章程中还将规定项目经理的权利以及项目组中各成员的职责,还有项目其他干系人的职责,这也是在以后的项目范围管理工作中各个角色如何做好本职工作有一个明确的规定,以致后续工作可以更加有序地进行。
范围计划过程:范围计划是指进一步形成各种文档,为将来项目决策提供基础,这些文档中包括用以衡量一个项目或项目阶段是否已经顺利完成的标准等。作为范围计划过程的输出,项目组要制定一个范围说明书和范围管理计划。要做好一个项目首先强调的就是周密地做好范围计划编制。范围计划编制过程是将产生项目产品所需进行的项目工作(项目范围)渐进明细和归档的过程。范围说明是在项目参与人之间确认或建立了一个项目范围的共识,作为未来项目决策的文档基准。范围管理计划是描述项目范围如何进行管理,项目范围怎样变化才能与项目要求相一致等问题。它包括对项目范围预期的稳定而进行的评估。范围管理计划还包括对变化范围怎样确定,变化应归为哪一类等问题的清楚描述。
范围定义过程:范围定义是指将项目主要的可交付成果细分成较小的、更易管理的单元。这个过程中,项目组要建立一个工作分解结构(WBS)。WBS的建立对项目来说意义非常重大,它使得原来看起来非常笼统、非常模糊的项目目标一下子清晰下来,使得项目管理有依据,项目团队的工作目标清楚明了。如果没有一个完善的WBS或者范围定义不明确时,变更就将不可避免地出现。因此,必须很好的控制范围的定义过程,应该强调,没有在WBS中的工作是不应该做的。
范围核实过程:范围核实是指对项目范围的正式认定,项目主要干系人,如项目客户和项目发起人等要在这个过程中正式接受项目可交付成果的定义。这个过程是范围确定之后,执行实施之前各方相关人员的承诺过程,它确保了项目范围能得到很好的管理和控制。
范围变更控制过程:范围变更控制是指对有关项目范围的变更实施控制。主要的过程输出是范围变更、纠正行动与教训总结。再好的计划也不可能做到一成不变,因此变更是不可避免的,关键问题是对变更进行有效的控制。控制好变更必须有一套规范的变更管理过程,在发生变更时遵循规范的变更流程来管理变更。通常对发生的变更,需要识别是否在既定的项目范围之内。如果是在项目范围之内,那么就需要评估变更所造成的影响,以及如何应对的措施,受影响的各方都应该清楚明了自己所受的影响;如果变更是在项目范围之外,那么就需要商务人员与用户方进行谈判,看是否增加费用,还是放弃变更。因此,项目所在的组织(企业)必须在其项目管理体系中制定一套严格、高效、实用的变更控制流程。
6 结束语
对于软件开发项目来说,开发的过程中不可避免的会出现范围变更,发生变更的环节也比较多,因此变更控制显得格外重要。变更控制对项目成败有直接影响,项目开发之前要明确定义范围,开发过程中要严格控制范围。对变更控制的目的并不是控制变更的发生,而是对变更进行管理,以便更好的处理变更,确保变更朝着有利于项目成功的方向有序进行。
参考文献:
[1]洪显明.IT信息化项目管理知识体系iPMBOK框架结构[C].“IT信息化项目管理知识体系iPMBOK与资格认证”学术研讨会资料,2002.9
[2]罗伯特格拉斯,陈河南等译.软件开发的滑铁卢[M].北京:电子工业出版社,2002
[3]方德英,李敏强.信息系统项目监理机制的经济学分析[J].管理工程学报,2003(4):98-102
[4](美)凯西?施瓦尔贝,邓世忠等 译.IT项目管理(原书第2版)[M]. 北京:机械工业出版社,2004.11
[5] Davidnim.项目范围管理是项目成败的关键[EB/OL].http://www.iteer.net,2005.5
[6]栾跃.软件开发项目管理[M].上海,上海交通大学出版社,2005.8