需求变更

需求变更是因为需求发生变化。根据软件工程思想,需求说明书一般要经过论证,如果在需求说明书经过论证以后,需要在原有需求基础上追加和补充新的需求或对原有需求进行修改和削减,均属于需求变更。

  需求变更的出现主要是因为在项目的需求确定阶段,用户往往不能确切地定义自己需要什么。用户常常以为自己清楚,但实际上他们提出的需求只是依据当前的工作所需,而采用的新设备、新技术通常会改变他们的工作方式;或者要开发的系统对用户来说也是个未知数,他们以前没有过相关的使用经验。随着开发工作的不断进展,系统开始展现功能的雏形,用户对系统的了解也逐步深入。于是,他们可能会想到各种新的功能和特色,或对以前提出的要求进行改动。他们了解得越多,新的要求也就越多,需求变更因此不可避免地一次又一次出现。

  这时,如果开发团队缺少明确的需求变更控制过程或采用的变更控制机制无效,抑或不按变更控制流程来管理需求变更,那么很可能造成项目进度拖延、成本不足、人力紧缺,甚至导致整个项目失败。当然,即使按照需求变更控制流程进行管理,由于受进度、成本等因素的制约,软件质量还是会受到不同程度的影响。但实施严格的软件需求管理会最大限度地控制需求变更给软件质量造成的负面影响,这也正是我们进行需求变更管理的目的所在。

实施需求变更管理需要遵循以下六大原则

(1)建立需求基线,需求基线是需求变更的依据。在开发过程中,需求确定并经过评审后(用户参与评审),可以建立第一个需求基线。此后每次变更并经过评审后,都要重新确定新的需求基线。

(2)制订简单、有效的变更控制流程,并形成文档。在建立了需求基线后提出的所有变更都必须遵循这个控制流程进行控制。同时,这个流程具有一定的普遍性,对以后的项目开发和其他项目都有借鉴作用。

(3)成立项目变更控制委员会(CCB)或相关职能的类似组织,负责裁定接受哪些变更。CCB由项目所涉及的多方人员共同组成,应该包括用户方和开发方的决策人员在内。

(4)需求变更一定要先申请然后再评估,最后经过与变更大小相当级别的评审确认。

(5)需求变更后,受影响的软件计划、产品、活动都要进行相应的变更,以保持和更新的需求一致。

(6)妥善保存变更产生的相关文档。

应对之道

  需求变更控制一般要经过变更申请、变更评估、决策、回复这四大步骤。如果变更被接受,还要增加实施变更和验证两个步骤,有时还会有取消变更的步骤。针对变更控制流程,在实际工作中总结出了软件开发人员在需求变更管理实践中的几点对策:

  优先排序 分批实现 每个需求的重要性是不同的。由于资源或技术条件的限制,会显得“僧多粥少”,因此不可能把所有的需求一次完成。怎么办?把每个需求按照对效益的贡献打个分,排出个优先级来,优先级高的需求先实现,低的到一下版式本实现。由于不断有新的需求进来,有的需求可能永远没有机会被子实现,但不紧,还是要记录下来,并一起参加排序,保证在每个版本发布时重要的需求先得到满足。每个需求的实现是需要花时间的,没人有百分百的把握预估得很清楚,但借鉴过去的经验可以大概估算出人力成本,然后根据开发人员和开发周期得出可用人力投入作为上限。从优先级高的需求中挑,直到挑中的人力成本总和刚刚低于可用投入上限,这样得出的就是需求的录取榜。今后的软件开发规划也会以此为依据,分期分批地在不同的回合中实现。最合理的不一定是优先级最高的,也就是说不一不定是最先考虑的,“经济为本”是指导优先排序的最终原则。

  相互协作 很难想像遭到用户抵制的项目能够成功。在讨论需求时,开发人员与用户应该尽量采取相互理解、相互协作的态度,对能解决的问题尽量解决。即使用户提出了在开发人员看来"过分"的要求,也应该仔细分析原因,积极提出可行的替代方案。

  充分交流 需求变更管理的过程很大程度上就是用户与开发人员的交流过程。软件开发人员必须学会认真听取用户的要求、考虑和设想,并加以分析和整理。同时,软件开发人员应该向用户说明,进入设计阶段以后,再提出需求变更会给整个开发工作带来什么样的冲击和不良后果。

  安排专职人员负责需求变更管理 有时开发任务较重,开发人员容易陷入开发工作中而忽略了与用户的随时沟通,因此需要一名专职的需求变更管理人员负责与用户及时交流。

  合同约束 需求变更给软件开发带来的影响有目共睹,所以在与用户签订合同时,可以增加一些相关条款,如限定用户提出需求变更的时间,规定何种情况的变更可以接受、拒绝接受或部分接受,还可以规定发生需求变更时必须执行变更控制流程。

  区别对待 随着开发进展,有些用户会不断提出一些在项目组看来确实无法实现或工作量比较大、对项目进度有重大影响的需求。遇到这种情况,开发人员可以向用户说明,项目的启动是以最初的基本需求作为开发前提的,如果大量增加新的需求(虽然用户认为是细化需求,但实际上是增加了工作量的新需求),会使项目不能按时完成。如果用户坚持实施新需求,可以建议用户将新需求按重要和紧迫程度划分档次,作为需求变更评估的一项依据。同时,还要注意控制新需求提出的频率。

  选用适当的开发模型 采用建立原型的开发模型比较适合需求不明确的开发项目。开发人员先根据用户对需求的说明建立一个系统原型,再与用户沟通。一般用户看到一些实际的东西后,对需求会有更为详细的解释,开发人员可根据用户的说明进一步完善系统原型。这个过程重复几次后,系统原型逐渐向最终的用户需求靠拢,从根本上减少需求变更的出现。目前业界较为流行的叠代式开发方法对工期紧迫的项目的需求变更控制很有成效。

  用户参与需求评审 作为需求的提出者,用户理所当然是最具权威的发言人之一。实际上,在需求评审过程中,用户往往能提出许多有价值的意见。同时,这也是由用户对需求进行最后确认的机会,可以有效减少需求变更的发生。

  变更控制流程如图所示。

需求变更的代价

   一般来讲,需求的变更通常意味着需求的增加,需求的减少相对很少,而且处理需求减少方面的问题也比较容易。当客户提出新需求的时候,项目开发人员应该分析这些新需求对项目现阶段带来的风险,得出双方实现变更需求的需要的成本,包括时间、人力、资源等等方面。

   变更都是有代价的,应该评估一下变更的代价和对项目的影响,在评估代价并且与客户讨论的过程中,要让客户了解变更的后果,变更之后面临最大的问题就是项目延期,让客户一起做判断:“我可以修改,但您能接受后果吗?”。现在会出现三种可能:客户接受延期这一后果,开发人员按客户要求做出相应修改,让客户知道为此需要付出延期的代价;如果客户认为代价太大,那开发人员就不必修改了,可以记录下需求,待到下一版本再做修改;客户不接受变更的代价,导致项目夭折。 如果客户不知道你为变更付出的代价,对你的辛苦便难以体会,以致没完没了的提出新的变更。

减少需求变更

  正如前文所说,需求变更往往是不可避免的。通常是项目负责人员花费了大量的气力避免需求变更,可最后需求变更总是会出现。但是这并不意味着项目开发人员不应该做这方面的工作,项目开发人员对于需求变更的正确态度应该和软件测试的态度一样,在需求变更发生之前尽量减少需求变更,以将需求变更带来的风险降低到最低。项目开发人员切忌在项目设计之前试图消除需求变更,这样做往往费力不讨好。

  相比于需求开发人员而言,客户可能对需求变更认识不足,认为他们出钱,程序员或软件开发公司就要为它服务,因此客户对需求变更往往更加肆无忌弹,将需求变更视为儿戏,随个人喜好随意变更需求。因此,在需求人员同用户代表或用户部门主管人员接触时,就应该向他们挑明态度,和他们协商好,特别是应该让他们清楚软件的定价应该与软件的功能相关,以及需求随意变更所带来的风险的承担者应该由客户和项目开发者共同承担。通过这样做,让客户在需求分析之前就尽量对他们所需要的功能有个整体的了解和确定的思路,而不是等到程序员开始编码了,才提出以前原本在需求分析时就可以提出的需求。

  让客户明白减少需求变更的重要性后,需求分析人员应该采取合适的方法同客户交流,帮助他们明确他们的需求。需求分析人员和客户的关系不应该仅仅是记录人员和需求提供者,他们的关系应该更多的是战略合作伙伴关系。虽然需求分析人员和客户存在着服务商和顾客的关系,但是他们有着一个共同的目标:开发出适合客户需求的软件,因此需求分析人员除了记录客户提出的需求以外,还应和用户讨论,提出一些建议,使用合适的工具帮助客户提出需求。在需求分析时,尽量多的召集需求研讨会,邀请开发人员和客户共同协商探讨,在研讨会上允许任意的提出需求,并将这些需求整理成档后由客户代表和需求分析人员共同商议可选的功能,这样能够尽量使得需求完备。在需求开发时,开发人员采用原型的方法启发客户思考功能需求也不失为一个好办法。

  虽然需求不可能是完备的、变更不可能没有的,但是在项目开始设计时使得需求尽可能完备还是应该的,也是值得的,完备需求的过程也就相应的减少了因为需求不清楚而产生变更的几率。

需求变更

时间: 2024-10-08 13:30:59

需求变更的相关文章

我们小组项目需求变更管理的方法。。

在每个项目中,客户会在原来的需求基础上进行需求改变或者增加需求内容,所以,一个需求变更管理方法在设计项目中有着十分重要的作用,用户可能在初期阶段对自己的 需求不是清楚,只能根据客户在深入的了解后才知道自己还有哪些需求是需要的.在我们的项目中选择了一个分级需求管理模式,那就是将需求进行分级: 一级需求:是客户提出的需求中最为重要,最需要先实现的需求,在本项目中,我们的客户需要一个简易的通讯软件,所以最重要.最为基本的是实现双方的信息传递和信息输出. 二级需求:它不会影响一级需求的实现,但是没有实现

需求变更大讨论:需求变更的原因

 需求变更的原因 需求包括业务需求.用户需求和功能需求.业务需求(Business Requirement )反映了组织机构或客户对系统.产品高层次的目标要求,用户需求(User Requirement )描述了用户使用产品必须完成的任务,功能需求(Functional Requirement )定义了开发人员必须实现的软件功能. 会导致需求变更的原因会有很多,如老板临时改变想法.项目预算增加或减少.客户对功能的需求改变等.在IT项目中,变更可能来自方案服务商.客户或产品供应商等,也可能来源于项

作为产品人,如何更好的应对需求变更?

如何制定一份缜密的项目计划对于产品经理来说可能并不是项目中最难的事情,要应对计划之外的情况,才是最令大家头痛的地方.在项目实际推进过程中,不加控制的需求变更往往给项目带来沉重的负担和无法预料的风险.因此,设计一套合适的需求变更管理流程和规范,对项目和项目经理而言都是不可或缺的. 问题分析 首先对笔者所在项目做一个简单介绍:产品层面,我们是一个C端产品,需求主要来源于运营和策划,就产品阶段而言正处于转型期,现阶段主要以新功能探索为主:项目层面,由于功能较为复杂庞大,可切割空间不大,因此每个版本周期

项目需求变更有效管理

最近和朋友吃饭,讨论到软件测试方面的问题,这位仁兄也是经验不足,像我抱怨好不容易按照之前评审的需求写完Case,现在又变更这么多需求,又得重新梳理需求写Case.其实参与过项目研发的人员都非常清楚,项目一旦启动,需求变更也会随之而来,需求变更是无法避免的. 不瞒大家,像博纳移动这么强大的研发团队,在项目启动之后变更需求也是常事.就拿最近V-3.4万能考勤开发过程的事情来说吧.万能考勤有个导出排班表的功能,排班表是以EXCEL形式展示的,这里涉及到排班表成员排列顺序的问题,当初原型评审时候,评审会

如何控制项目需求变更管理

Trufun UML2建模工具.Trufun Bacon  需求管理工具. Trufun ALM全生命周期产品.Trufun 研发云管理工具等 按照现代项目管理的概念,一个项目的生命周期分为启动.实施.收尾三个过程.需求变更的控制不应该只是项目实施过程考虑的事情,而是要分布在整个项目生命周期的全过程.为了将项目变更的影响降低到最小,就需要采用综合变更控制方法.综合变更控制主要内容有找出影响项目变更的因素.判断项目变更范围是否已经发生等. 进行综合变更控制的主要依据是项目计划.变更请求和提供了项目

《小团队项目管理》第三问 --- 如何看待客户的需求变更?

作为一名码农,在项目开发过程中经常会涉及到项目的需求变更,变更的理由也是多种多样,总结而来分为外部和内部,从外部讲,例如:为了顺应某行业新的工作操作规范,甲方要求现有项目在工作流程环节上进行局部功能的变更:从内部讲,通过对市场环境的不间断调研和数据分析,公司产品在同类产品竞争中处于不利地位,市场份额日渐缩小,那么我们的产品设计人员会积极行动起来对产品的整个定位和新业务展开新的思考以寻求更加稳健的创新突破口,这就会对项目产生一定的需求变更. 此图是从CSDN社区截取下的,我相信很多看到这个问题的筒

如何用通俗易懂的语言解释需求变更带来的项目影响

如何用通俗易懂的语言解释需求变更带来的项目影响 你去饭店,坐下来.“服务员,给我来份宫保鸡丁!”“好嘞!”——————这叫原始需求 大厨做到一半.“服务员,菜里不要放肉.”“不放肉怎么做啊?”“不放肉就行了,其它按正常程序做,不就行了,难吗?”“好的您稍等”——————中途需求变更 厨房:大厨:“你大爷,我肉都回锅了”服务员:“顾客非要要求的嘛,你把肉挑出来不就行了吗”大厨:“行你大爷”然而还是一点点挑出来了——————改动太大,部分重构 餐厅:“服务员,菜里能给我加点腐竹吗?”“行,这个应该简

摆平客户的需求变更之表单扩展属性

客户永远是对的!客户的需求永远是多变的! 需求说明文档写得再详细,说改还得改,程序猿永远这么苦逼. 为了应对客户多变的需求,今天先说说表单的扩展属性.目的是在不修改代码,不重新发布程序的情况下完成表单的扩展. 先下下图: 从这个界面上可以定义如何对表单上进行扩展,在表单上增加一个什么控件,大小.内容.验证都可以的. DEMO地址:http://121.40.148.178:8080/ . 用户名:guest,密码:123456 是的,如果是下拉框的话还能绑定数据源,选择就可以完成,绑定了数据字典

[转] 项目管理---项目经理如何应对客户的需求变更?

项目管理---项目经理如何应对客户的需求变更? 目录(?)[+] 相信做软件开发的我们,大家都有这样的体会,当我们辛辛苦苦的熬了几个月的通宵.加班后,终于完成了客户提出的V1.0功能需求,当我们大家准备按部就班的进行系统上线时,客户.企业用户突然改变了需求,不想这么做了,提出了新的需求,新的变动,这样对于我们整个团队来说,正如晴天霹雷,很恐怖的事情啊,因为有时候,用户只是简单的一句话,但是对于系统的调整来说工作量是非常大的. 需求变更,本应是客户的权力,但也是实施顾问的为难之处.如果确需变更,当

需求管理之勇于直面需求变更

软件系统开发过程中的需求变更问题 作为软件开发人员或者软件系统客户,相信我们都遭遇过因为需求变更而需要修改系统的情况,一般说来客户会要求改变界面,改变操作方式,甚至改变业务,说,当时我是那样要求的,不过现在我们的业务调整了-这时需要中断正在进行的工作,需要查证以往的资料,需要修正计划,需要- 需求包括业务需求.用户需求和功能需求.业务需求(Business Requirement )反映了组织机构或客户对系统.产品高层次的目标要求,用户需求(User Requirement )描述了用户使用产品