原标题:项目管理中的如果你的項目遇到需求变更问题分析与解决之道!(干货)
一个项目从它启动之日起就一直顺风顺水的有没有?如果有的话那真是太完美了可实际仩根本就没有,总会经历挫折其中项目管理中的如果你的项目遇到需求变更问题是最烦人的,这篇文章我们就着重分析如何解决项目如果你的项目遇到需求变更问题
一、令人烦恼的如果你的项目遇到需求变更问题
作为项目经理,我们以软件项目经理为例在项目开发进荇中,你是否遇到过这样的问题:客户的一个***就推翻了之前你与客户、与自己的开发团队,经过再三讨论而确认定下来的需求之後你就重新开始了和客户、和开发团队进入新一轮的需求谈论中,甚至是无休止的谈论甚至要重新设计现有的架构。
而面对这种情况莋为项目经理的你是否会说:“我们无法拒绝客户,但也无法立即满足他的新需求所以只好是推到以后再进行完善。”或者更极端些嘚想法:客户总是在异想天开,客户的需求在技术上根本无法实现……
在与客户新的需求论证中你是否会对需求确认的重要性产生怀疑。因为在一开始已经多次和客户沟通也在没有任何异议的情况下得到了明确的答复,但当开发项目在不断演进客户对系统的理解逐步加深之时,他们最终还是推翻以前自己想要的需求而这时你会认为对于需求,只有获取没有确认。
而因为如果你的项目遇到需求变更問题的原因致使项目多次的延期后,客户仍然说这不是他们想要的你还是在抱怨客户的需求像天气一样一直变个不停,最终无论是伱的抱怨还是客户的如果你的项目遇到需求变更问题只会令项目组中的开发人员疲于奔命,无所适从
在你的软件项目进行开发之前,你囷你的项目成员是否有过这样的想法在这次软件项目开发中,一定要消除如果你的项目遇到需求变更问题不让谈论好的需求发生任何嘚变更?
首先,这种想法和认识是错误的软件项目开发中的如果你的项目遇到需求变更问题是不能被完全消除的。无论是项目经理还是项目开发人员最好在项目开始之前就消除这种想法。如果你的项目遇到需求变更问题是不可能被消除的而“消除如果你的项目遇到需求變更问题”的想法却需要被消除。消除如果你的项目遇到需求变更问题的所有的努力和想法在项目开发进行中通常都是费力不讨好。
项目开发过程中需求的变更是不可避免的。
虽然一般情况下项目经理花费了大量的心力和气力去避免如果你的项目遇到需求变更问题,鈳最后如果你的项目遇到需求变更问题总是会出现但这并不意味着项目不应该做这方面的工作,无论是项目经理还是开发人员对于如果你的项目遇到需求变更问题的正确态度应该和对待软件测试的态度一样,在如果你的项目遇到需求变更问题发生之前尽量减少如果你的項目遇到需求变更问题发生的情况以将如果你的项目遇到需求变更问题带来的风险降到最低。
二、如果你的项目遇到需求变更问题的产苼原因
在软件开发项目中如果你的项目遇到需求变更问题可能来自方案服务商、客户或产品供应商等,当然也可能来源于项目组内部。
对于如果你的项目遇到需求变更问题发生的原因细细追究起来无外乎以下几种原因:
1.范围没有圈定就开始细化
细化工作是由需求分析囚员完成的,一般是根据用户提出的描述性的、总结性的短短几句话去细化的提取其中的一个个功能,并给出描述(正常执行时的描述和意外发生时的描述)
当细化到一定程度并开始系统设计时,范围会发生变化那细节用例的描述可能就有很多要改动。如原来是人工手动添加的数据要改成根据信息系统计算出来,而原来的一个属性的描述要变成描述一个实体等
2.没有指定需求的基线
需求的基线是指是否嫆许如果你的项目遇到需求变更问题的分界线。
随着项目的进展需求的基线也在变化。是否容许变更的依据是合同以及对成本的影响仳如软件整体结构已经设计出来,是不容许改变需求范围的因为整体结构会对整个项目的进度和成本有初步预算。随着项目的进展基線将越定越高(容许的变更将越少)。
3.没有良好的软件结构适应变化
组件式的软件结构就是提供了快速适应需求变化的体系结构数据层封装叻数据访间逻辑,业务层封装了业务逻辑表示层展现用户表示逻辑。
但适应变化必须遵循一些松耦合原则各层之间还是存在一些联系嘚,设计要力求减少会对接口入口参数产生变化如果业务逻辑封装好了,则表示层界面上的一些排列或减少信息的要求是很容易适应的如果接口定义得合理,那么即使业务流程有变化也能够快速适应变化。因此在成本影响的容许范围内可以降低需求的基线,提高客戶的满意度
前面已经说了,在软件开发项目开始之前就要消除“绝不允许发生如果你的项目遇到需求变更问题”的思想。在项目进行一旦发生如果你的项目遇到需求变更问题,更不要不一味的抱怨也不要去一味地迎合客户的“新需求”,而是要管理和控制如果你的項目遇到需求变更问题
软件开发项目中,“客户永远是对的”和“客户是上帝”并不完全的正确因为在已经签定的项目合同中,任何噺需求的变更和增加除了影响项目的正常进行以外还影响到了客户的投入收益,所以有的时候项目经理反倒应该为客户着想
对于项目Φ的需求,可以实行分级管理以达到对如果你的项目遇到需求变更问题的控制和管理。
△一级需求(或变更)是关键性的需求这种需求如果不满足,意味着整个项目不能正常交付使用前期工作也会被全部否定。这个级别的需求是必须满足的否则就意味着否定自已的项目荿员和成员的所有努力,所以定为“Urgent”这通常是属于补救性的debug类型,要救火
△二级需求(或变更)是后续关键性需求,它不影响前面工作內容的交付但不加以满足,新的项目内容无法提交或继续所以是“Necessary”。一般新模块关键性的基础组件属于这个级别。
△三级需求是後续重要的需求如果不被满足会令整体项目工作的价值下降,为了体现项目价值也是开发人员自已的技术价值的证明,所以定为“Needed”一般性的重大的有价值的全新模块开发,属于这个级别
以上三个等级是应该实施的,但时间性上可以作优先级的排列
△四级需求是妀良性需求,没有满足这类需求并不影响已有功能的使用但如果实现了则会更好,定级为“Better”界面和使用方式的需求,一般在这个档佽
△五级需求是可选性需求,更多的是偶是一种设想以及一种可能,通常只是客户的的一种个人喜好而已定级为“Maybe”。
对于四级需求如果时间和资源条件都允许的话,不妨做下去对于五级需求,正如对它的描述一样做与不做是“Maybe”。
2、全生命周期的如果你的项目遇到需求变更问题管理
各种规模和类型的软件项目的生命周期大致可以分为三个阶段即项目启动、项目实施、项目收尾。不要以为如果你的项目遇到需求变更问题的管理和控制只是发生在项目实施阶段而是要贯穿在整个项目生命周期的全过程中。
站在全局角度的如果伱的项目遇到需求变更问题管理需要采用综合变更控制的方法。
(1)项目启动阶段的变更预防
正如前面强调的对于任何软件项目,如果你嘚项目遇到需求变更问题都无可避免也无从逃避,无论是项目经理还是开发人员只能积极应对而这个应对应该是从项目启动的需求分析阶段就开始了。
对一个需求分析做得很好的项目来说基准文件定义的范围越详细清晰,用户跟项目经理提出如果你的项目遇到需求变哽问题的几率就越小如果需求没做好,基准文件里的范围含糊不清被客户发现还有很大的“新需求空间”,这时候项目组往往要付出許多无谓的牺牲
如果需求分析做得好,文档清晰且又有客户签字那么后期客户提出的变更就超出了合同范围,需要另外收费这个时候,项目经理一定要据理力争此时这并非要刻意赚取客户的钱财,而是不能让客户养成经常变更的习惯否则后患无穷。
(2)项目实施阶段嘚如果你的项目遇到需求变更问题
成功的软件项目和失败项目的区别就在于项目的整个过程是否是可控的
项目经理应该树立一个理念,即“如果你的项目遇到需求变更问题是必然的、可控的并且是有益的”。项目实施阶段的变更控制需要做的是分析变更请求评估变更鈳能带来的风险和修改基准文件。
控制需求渐变需要注意以下几点:
△需求一定要与投入有联系如果如果你的项目遇到需求变更问题的荿本由开发方来承担,则项目需求的变更就成为必然了所以,在项目的开始无论是开发方还是出资方都要明确这一条:需求变,软件開发的投人也要变
△需求的变更要经过出资者的认可,这样才会对需求的变更有成本的概念能够慎重地对待需求的变更。
△小的如果伱的项目遇到需求变更问题也要经过正规的需求管理流程否则会积少成多。
在实践中人们往往不愿意为小的如果你的项目遇到需求变哽问题去执行正规的需求管理过程,认为降低了开发效率浪费了时间。但正是由于这种观念才使需求逐渐变为不可控最终导致项目的夨败。
△精确的需求与范围定义并不会阻止需求的变更
并非对需求定义得越细,就越能避免需求的渐变这是两个层面的问题。太细的需求定义对需求渐变没有任何效果因为需求的变化是永恒的,并非需求写细了它就不会变化了。
项目开发过程中的实际情况是用户、開发者都认识到了上面的几点间题但是由于需求的变更可能来自客户方,也可能来自开发方因此,作为需求管理者项目经理需要采鼡各种沟通技巧来使项目的各方各得其所。
(3)、项目收尾阶段的总结
能力的提高往往不是从成功的经验中来而是从失败的教训中得来。许哆项目经理不注重经验教训总结和积累即使在项目运作过程中碰得头破血流,也只是抱怨运气、环境和团队配合不好很少系统地分析總结,或者不知道如何分析总结以至于同样的问题反复出现。
事实上项目总结工作应作为现有项目或将来项目持续改进工作的一项重偠内容,同时也可以作为对项目合同、设计方案内容与目标的确认和验证项目总结工作包括项目中事先识别的风险和没有预料到而发生嘚变更等风险的应对措施的分析和总结,也包括项目中发生的变更和项目中发生问题的分析统计的总结
虽然如果你的项目遇到需求变更問题的内容和类型有各种各样,但如果你的项目遇到需求变更问题管理的原则却是万变不离其宗实施如果你的项目遇到需求变更问题管悝需要遵循如下原则:
(1)建立需求基线。需求基线是如果你的项目遇到需求变更问题的依据在开发过程中,需求确定并经过评审后(用户参與评审)可以建立第一个需求基线。此后每次变更并经过评审后都要重新确定新的需求基线。
(2)制订简单、有效的变更控制流程并形成攵档。在建立了需求基线后提出的所有变更都必须遵循这个控制流程进行控制同时,这个流程具有一定的普遍性对以后的项目开发和其他项目都有借鉴作用。
(3)成立项目变更控制委员会(CCB)或相关职能的类似组织负责裁定接受哪些变更。CCB由项目所涉及的多方人员共同组成應该包括用户方和开发方的决策人员在内。
(4)如果你的项目遇到需求变更问题一定要先申请然后再评估最后经过与变更大小相当级别的评審确认。
(5)如果你的项目遇到需求变更问题后受影响的软件计划、产品、活动都要进行相应的变更,以保持和更新的需求一致