软件项目如何控制需求蔓延
Posted DotNet笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件项目如何控制需求蔓延相关的知识,希望对你有一定的参考价值。
当销售人员兴冲冲的告诉你又接了一个单子,只见合同上对需求内容只是寥寥几行时,你是否又头大了。对于销售人员接单是他们的目的,在客户处他们往往把话说的很满,这也能行、哪也能做。实际,很多功能的实现要让我们付出非常大的代价,那我们在项目需求管理方面要怎么做呢?
对于一名项目经理来说,做出让客户满意的产品是我们的终极目标。但实际情况会是这样吗?现实,我们在项目开发过程中会遇到各种问题。
需求范围不明确
合同中规定的内容往往都是模糊不清的,需求不明确,或者只有几行说明,而且还可能有大断的套话、官话。对于项目参与者往往对客户业务不一定了解,如果对客户真正想要的需求没有真正了解,往往会导致后期无何止的修改。
需求理解不一致
我们经常会遇到,按照客户书面上记录的需求进行开发后,客户却并不认可,而实际情况,客户对自己写的书面内容也并无异议。原因是对同样的内容客户的理解与我们的理解不同。例如,需求中写道:“购物后付款”,开发人员开发出来的是用户选择好商品进入购物车直接付款。而客户实际想要的是到购物车付款前先向客户发送一条短信验证码,让购买人二次确认无误后再付款。同样的文字,对细节的理解可能就是不同的,但实现的细节客户提供的需求里可能根本就没有提。
有些需求并没有直接写出来
中国人喜欢儒家思想,话多为隐晦而不直白的说出,客户提的多是自己期望解决的需求,而对于最基本需求往往不说,因为他认为你就应该有。如做一款手机,手机打电话的功能客户是不用说的;再如,智通面包机,做面包的功能也是不需要说的,他只会说如何智能法。
项目结束前客户总有提不完的需求
客户总是会在结项前提出各种需求,前期没有讨论过的各种需求都会在这个时候冒出来,让项目被动受制。这种情况原因一般有两种,一种是在项目开发过程中没有与客户充分的沟通。另一种就是客户生怕项目一结束付款,你们就不会再很好的支持我们了。那么所有需求不论重要与否,你都要在结束前给我做完。
项目经理无条件的迁就客户
虽然项目成功的标志是客户满意度,但无条件的迁就客户最终可能导致项目预算超期或时间超期,反而会导致项目失败。客户在提一条新需求时可能自己都没有想清楚,也可能只是他的灵光一现,许多需求可能只是冗余需求。客户往往不懂程序,随便说出的需求,可能让我们付出很大的代价。
沟通不顺畅,老吴以前做项目时也经常遇到对计算机一点不懂的客户,他们的许多想法根本无法实现,跟他解释他又很难理解,最后弄得好像我们什么都做不了似的。对于这种客户有时会让我们有种无力感。
一个项目的成功需要多方面原因,人力资源、需求范围、项目成本、进度控制、质量监督、风险监控、资源采购、干系人沟通,每个方面出问题都可能会导致项目的失败,所以项目管理也要有一套系统的管理办法。对于无边界的需求蔓延,我们应该怎么办?
上面我们已经提到了可能导致需求的不可控原因,哪我们来说下具体可操作的解决办法吧。
确定项目范围
项目一定要有清晰的目标、准确的方向,大海航行靠舵手,项目经理要有把撑好项目范围的能力,尽量把项目需求让所有项目干系人(范围相关的所有人)知晓,尤其要得到客户的认可,必要时要让用户确认。以前经常听有的项目经理说:“需求最后一定要让客户领导签字”,老吴本人认为这有点难度,以前我做政府类项目时哪个领导愿意签字的,谁愿意背这个责任,还有真要有必要需求增加时,签了字如何增加,客户会有一百个不愿意。如果你真有这能力,能弄到客户签字哪对项目是极大的帮助。
多问问为什么
对于客户每提出的新需求,我们尽量多了解他的目的是什么,多问、多想,当我们知道客户的终极目标时,我们就可以主导客户需求了。同时,我们了解了客户提此需求的目的后也有利于我们对需求的更好把握,不至于项目需求出现偏差。
需求理解要一致
项目经理要对项目进行跟进和监控,需求要很好的贯彻到每个人,不要出现理解偏差。记得看过一篇图文的短文,大致意思是客户想要的产品、项目经理理解的产品、设计人员设计的产品、开发人员要做成的产品、开发人员最后做出来的产品、测试人员看到的产品都不一致。每个人在信息传递过程中让需求不断出现损耗和变形。需求理解的一致性是项目成功的基础,在项目管理的各个阶段,要让所有相关人正确的了解和把握需求。
要让客户参与到项目的各个阶段
项目经理要拉着客户参与到项目的各个阶段,需求分析、总体设计、详细设计、编码、测试,要让客户参与到项目的每个阶段,并随时让客户了解和提出自己的真实想法。这样就不会导致项目在最后时客户提出各种需求,变被动为主动。尤其是在需求分析和设计阶段,当整理完需求文档和设计文档时,一定要请客户一起参与评估,以避免需求理解不一致,需求范围不确定等问题。我们以前常提敏捷软件开发方法,敏捷开发又不至于项目出现更大问题的办法就是让客户随时参与项目的各个阶段,让客户与我们的项目管理人员一起把关。
要让客户对需求进行确认。当多次与客户确认需求后,尽量让客户签字认可,如不能签字也尽量让客户方领导在正式场合当面确认。
这样的好处有:
- 可以有效的控制需求,当客户再有想加的需求时总不至于那么理直气壮;
- 如客户真要加需求时,我们可以因需求变更而提出一定的经济补偿;
- 如果需求增加了,项目经理可以凭借着签字在公司内部规避自己的责任,毕竟客户以前是认可的,这回再提增加需求,就不是项目经理能力范围了,可以请领导出面;
- 有了客户确认的需求,项目组可以放心的去完成项目,以减少需求变更所带来的影响。
做好服务,要让客户信任我们
客户之所以在项目结束前尽量让我们把所有能想到的做好,有时还提出各种刁难,就是怕我们在项目结束后就不能很好的给予支持了。对于公司和团队,我们要建立完整的服务机制,要让用户看到我们的服务。如果客户对我们公司和团队认可了,相信以后的服务过程中有了问题,我们还会及时处理,那么客户会允许我们把部分非核心需求放到将来处理的。信任是种力量,让客户信任我们就要始终如一的做好服务。
做好需求变更机制
有时需求的变更是不可避免的,当发生需求变更时,我们要有一定的需求变更机制。首先要冷静看待需求的变更,与客户沟通好,要对需求变更的工作内容、工作量进行评估、因变更所产生的费用、针对需求变更提出的方案,并填写需求变更文件让客户签字,要让客户知道需求变更对项目产生的影响,对于需求的变更客户也要承担一定的责任(时间或经济)。
条条大路通罗马
对于客户提出的需求,不要一味的迁就,客户永远是对的的思想在项目开发过程中不一定正确。项目成功的标志应该是在规定的时间内利用有效的资源完成项目并使客户满意,为了一味满足客户的需求,而使项目进度超期、预算超期都不能算成功的项目。当客户提出一个不好解决的需求时,我们只要了解客户的目的,帮助客户分析后应该可以找出其它同样能达到相应效果的方案来,并让客户知道他的方案会给项目带来什么样的影响,客户还是会接受我们意见的,这样比与客户直接冲突要理智。
综合以上,项目需求的管理是一个复杂的过程,它涉及到项目所有相关人的利益。有效的避免与客户的冲突,多给客户一些中肯的意见。同时,也要让客户参与到项目的各个阶段,要让客户了解项目的各个过程,让客户了解我们公司和团队,建立起信任度,在有信任的前提下做事,友好的沟通,会让我们工作起来更加舒畅。
以上是关于软件项目如何控制需求蔓延的主要内容,如果未能解决你的问题,请参考以下文章