我的项目血泪史之频繁需求变更(转载)

需求变更为何没完没了?

    在软件开发中,最常抱怨的是这样一个问题:客户为什么总是反反复复?造成需求变更没完没了的原因,可以是这样几个方面存在问题。
 
  (1)没有明确的需求变更流程
  没有明确的需求变更管理流程,就会使需求变更变得泛滥,在这一点上我尝尽了苦头。并不是所有的变更都要修改,也不是所有变更都要立刻修改,明确需求变更管理流程的目的是为了决定什么类型的变更需要修改和什么时候修改。比如单纯的界面风格问题,就可以先不修改,或者规划一下修改的时间待到以后进行优化。另外,对于核心功能的修改没有严格把关流程,有些小需求看起来工作量不大,但是哪些销售人员或者客户没有考虑到的细节问题实际上需要花费开发人员相当长的时间去完成,从而是捡了芝麻掉了西瓜,得不偿失,使开发进度失控和资源浪费。
  
  (2)没有让客户知道需求变更的代价
  对变更的影响没有进行成本评估是需求变更泛滥的根本原因,这是我从单纯的技术人员转变到统筹兼顾成本管理的转变点之一,当然为了这一点我也付出了血与泪,为此饱受公司领导和客户的重重抱怨和责备。变更都是有代价的,应该要评估变更的代价和对项目的影响,要让客户了解需求变更的后果。如果客户不知道需求变更付出的代价,对开发人员的辛苦就会难以体会。在评估代价(包括成本、时间等多方面)过程中,可以请客户一起做判断:“我可以修改,但您能接受后果吗?”

如何有效控制需求变更?

  需求变更对软件开发项目成败有重要影响,既不能一概拒绝客户的变更要求,也不能一味地迁就客户,所以实施需求变更之前必须做好控制。需求变更控制的目的不是控制变更的发生,而是对变更进行管理,确保变更有序进行。
  
  (1)明确合同约束,建立需求基线
  需求变更给软件开发带来的影响有目共睹,所以在与客户签订合同时,可以增加一些相关条款,如限定客户提出需求变更的时间,规定何种情况的变更可以接受、拒绝或部分接受,还可以规定发生需求变更时必须执行变更管理流程。虽然软件开发合同很难在签订之初就能够精确定义每项需求,单靠合同是帮不上忙的,但也不能忽视合同的约束力。
  
  明确和树立需求基线是需求变更的依据。在开发过程中,需求确定并经过评审后(客户参与评审),建立第一个需求基线。此后每次变更并经过评审后,都要重新确定新的需求基线,做到小需求可以变更,但大方向要力保不频繁变更。例如,对于项目中的需求,可以实行分级管理,以达到对需求变更的控制和管理。
  
  (2)建立变更审批流程
  在实践中,人们往往不愿意为小的需求变更去执行正规的需求管理过程,认为降低开发效率,浪费时间。正是这种观念才使需求变更变得不可控,最终导致项目的失败。因此,小的需求变更也要经过正规的需求管理流程,否则会积少成多,积重难返。
  
  明确需求变更审批环节、审批人员、审批事项、审批流程。这么做的目的有两个:一是将客户下达变更的流程尽可能地规范化,减少张嘴就来的非必要、非紧急、非合理、非高层领导意图的无效变更。二是留下书面依据,为今后可能的成本变更和索赔准备好“变更账”。凡未履行审批程序的“变更”,一律是无效变更不予受理。
  
  (3)分级管理变更,定时批量处理
  软件开发项目中,“客户永远是对的”和“客户是上帝”并不完全正确,因为在已经签定的项目合同中,任何新需求的变更和增加除了影响项目的正常进行以外,还影响到客户的成本投入收益。因此,用户不断提出对项目进度有重大影响的需求对双赢也并不是好事。
  
  当遇到客户提出需求,不及时处理可能会使项目不能验收通过时,也不能一味拒绝不予开发。因此,当客户坚持变更新需求时,可以建议客户将新需求按重要和紧迫程度划分档次,作为需求变更评估的一项依据。例如,每周或每两周甚至每月召开一次需求变更专题会议,集中研究处理这些零碎变更事项,主动控制好工作节奏,尽量避免由于处理零碎变更而影响项目进度。针对会议结果可向客户正式提交一份需求变更计划,注明变更引起的时间、成本、工期代价和增加工作量等。要求客户配合需求变更计划,确定变更时限,控制变更规模,过时变更不候,离谱变更不做,保大局弃小变。
  
  (4)安排专职人员负责变更管理
  有时开发任务较重,开发人员容易陷入开发工作中而忽略了与客户的随时沟通。因此,需要安排一名专职的需求变更联络人员,负责与客户及时交流,跟踪和汇报需求变更完成进度和情况。同时,可以成立项目变更控制小组,负责裁定接受哪些变更,小组由项目所涉及的多方人员共同组成,应该包括客户方和开发方的决策人员在内。
  
  (5)确认客户是否接受变更的代价
  要让客户认识到变更都是有代价的,要和客户一起判断需求变更是否依然进行。例如,变更是没有问题的,但是要明确客户能否接受由此引起的如进度延迟、费用增加、效率下降等问题。一般来说,如果客户认为该变更是必须的(不是其上级领导拍脑袋提出的)就会接受这些后果。通过与客户协商,这样开发团队即使没有回报,也不会招致公司和客户双方的埋怨。
  
  如果客户认为该变更虽然有必要但是可以暂缓,双方签署备忘录后留待以后解决。如果客户认为该变更可有可无,多数情况下会取消变更。这样即可防止频繁变更,也让客户认识到不是所有的需求都需要变更。

    以上便是本人在频繁需求变更的血泪史中收获的经验,与大家分享。

posted on 2009-04-20 13:45  一人  阅读(396)  评论(0编辑  收藏  举报

导航