为什么要进行需求管理?

  软件需求是整个软件项目的最关键的一个输入,和传统的生产企业相比较,软件的需求具有模糊性、不确定性、变化性和主观性的特点,他不像生产汽车、电脑等硬件的需求,是有形的、客观的、可描述的、可检测的,软件需求是软件项目最难把握的问题,他的复杂性体现在以下方面:需求的描述问题笔者曾经被紧急委派主管一个已经进入了编码后期阶段的项目,该项目已经换过2次项目经理了,这是第3次更换项目经理,用户方的IT部经理找笔者抱怨:"我已经是第3次来给你们讲补货申请的处理规则了!".我只能表示抱歉,因为我无法找到原来的需求描述,这是一个变更的需求,前任的项目经理讲他只是将当时与用户交流的需求记到2页草稿纸上,不幸的是,那2页珍贵的手稿现在已经找不到了!更不幸的是,该IT部经理是在转述业务部门的需求,当软件开发完毕后,业务部门讲"这不是我们最初给IT部反映的需求,我们说的不是这样的!".缺少正式的完整的需求文档浪费了大量的人力物力,但是有了需求文档又出现了新的问题。曾经有多个项目经理向我抱怨,在用户方进行的需求评审会完全是走形式,因为用户根本不去听他读那上百页的需求文档。不同层次的客户(用户)关心的问题是不一样的,想要每个客户都成为需求专家是不现实的。

  需求的完备程度问题需求如何做到没有遗漏?如何准确划定系统的范围?这确实是一个两难问题,稍微大一点的系统要想穷举需求几乎是不可能的,每次开需求评审会时,总会冒出新的需求,以至于系统没有一个准确的范围界定。即使是这样,系统还是要开发,没办法,系统的范围还要硬性的划定一个,从而建立一个基线。

  需求开发的工期问题在需求上花费了大量的时间(而不是人*工时,因为需求阶段人多了也没有作用),客户、软件公司是否能够忍受?为了确保需求的正确性,完备性,项目经理往往坚持要在需求阶段花费大量的时间,但是客户与公司的高层领导却会为项目迟迟看不到实际可运行的软件担心不已!他们往往会逼迫项目组尽快往前推进,而项目组的成员往往也会为系统复杂的善变的需求折腾的筋疲力尽,他们也希望尽快结束此阶段。

  需求的细致程度问题需求到底描述到多细,才算可以结束了?仁者见仁,智者见智,并没有定论,如果时间允许,要想细总可以细下去的。但是,需求的周期越长,可能的变化越多,对设计的限制越严格,对需求的共性提取要求越高,所以只要大家(客户、用户、需求分析人员、设计人员、">测试人员)认为描述清楚了,就可以进入设计阶段了。

  需求的变化问题在软件开发过程中如果只有一条真理的话,那一定是:需求的变化是永恒的,需求不可能是完备的。软件开发的过程实际上是同变化做斗争的过程,需求的变更不一定是坏事,也有可能是好事,是商业机会,对市场敏感的人可以从需求的变化中发现市场机会。

  需求变化的原因很多,如:一开始没有识别全,需要增加需求;业务发生了变化,需求必须变化;需求错误;需求不清楚;需求的变化问题是每个开发人员、每个项目经理都遇到的问题,也是最头痛的问题,一旦发生了需求变化,你不得不来修改你的设计、重写你的代码、修改你的测试用例、调整你的项目计划等等,需求的变化好比是万恶之源,为项目的正常的进展带来不尽的麻烦,怎么办?管理它!使需求在受控的状态下发生变化,而不是随意变化,需求管理就是要按照标准的流程来控制需求的变化。

  难题随之而来,需求中的变化一般不是突发的革命性的变化,最常见的是"项目需求的渐变"(Project Scope Creep)问题,这种渐变很可能是客户与开发方都没有意识到的,当达到一定层度时,双方才蓦然回首,发现已经物是人非,换了一番天地。 控制需求渐变需要注意以下几点:(1)需求一定要与投入有显示的联系,否则如果需求变更的成本由开发方来承担,则项目需求的变更就成为必然了。人们常说世上没有免费的午餐,同样也不应该有免费的需求变更。但是,接受需求变更目前却是软件开发商不得不咽下的苦果。所以,在项目的开始无论是开发方还是出资方都要明确这一条:需求变,软件开发的投入也要变。

  (2)需求的变更要经过出资者的认可,需求的变更引起投入的变化,所以要通过出资者的认可,这样才会对需求的变更有成本的概念,能够慎重地对待需求的变更。笔者曾经经历过一个项目,为了避免项目的风险,我们请了用户代表全程参与了开发过程,结果此用户代表在开发过程提出了大量?quot;小"的需求变更,当开发人员按此需求变更修改了软件时,在项目进入现场实施阶段时,却有大量的这些变更需要改回去,问题就是出在我们的项目组成员视该用户代表的需求为圣旨,却忽略了需求是否经过了客户方真正有决策权的人员的认可。

  (3)小的需求变更也要经过正规的需求管理流程,否则会积少成多。在实践中,人们往往不愿意为小的需求变更去执行正规的需求管理过程,认为降低了开发效率,浪费了时间。正式由于这种观念才使需求的渐变不可控,最终导致项目的失败。

  (4)精确的需求与范围定义并不会阻止需求的变更。并非对需求定义的越细,越能避免需求的渐变,这是2个层面的问题。太细的需求定义对需求渐变没有任何效果。因为需求的变化是永恒的,并非由于需求写细了,它就不会变化了。

  注意沟通的技巧。实际情况是用户、开发者都认识了到了上面的几点问题,但是由于需求的变更可能来自客户方、也可能来自开发方,作为客户他们可能不愿意为需求的变更付出更多的投资,开发方有可能是主动的变更了需求,他们的目的可能是使软件做的更"精致",于是作为需求管理者、项目经理需要采用各种沟通技巧来使项目的各方各得其所。

  软件需求的复用问题笔者曾经遇到过一位领域专家,他在有20多年的领域工程经验,积累了大量的领域需求,可是在其每进行一次产品开发时,他总是感到他所理解的需求无法为与他配合的分析人员、设计人员所接受。当我们一起来讨论这个问题的时候,共同的一个观点就是:没有对需求进行有效的管理,已经形成的需求文档没有很好的复用。所以需求管理一个很重要的目标应是提高软件需求的复用率。

  基于上述的问题,必须对需求进行管理,使需求能够真正成为软件工程和管理的基线,使软件计划、活动和工作产品同软件需求保持一致,使需求可以复用。

时间: 2024-10-04 00:32:20

为什么要进行需求管理?的相关文章

需求分析和需求管理:管理好产品的需求

文章描述:需求的变动固然是造成这种结果的主要原因,另一个不能忽视的因素则是需求没有表述清楚,开发人员面对表述模糊的需求文档,更加无法完成既定的开发工作. 最近的一系列事情开始教育我,如果不能做好需求管理的工作,产品人员疲于应付不断变化的需求,导致无法正常开展产品的设计和管理工作.结果就是交付给开发人员的需求文档不断变动,开发人员也不知道自己究竟该做什么,项目进度越拖越慢.最后到了规定好的交付时间,因为拿不出需要的产出物,部门之间开始互相推诿.埋怨. 思考良久,需求的变动固然是造成这种结果的主要原

互联网产品设计:产品需求管理之需求收集

 需求收集是进行产品需求管理的第一步.需求收集得到的各种用户需求素材是产品需求的唯一来源.可以说需求收集的质量影响着产品最终的质量. 1.需求收集目的     需求收集的目的在于:通过以市场为导向的客户需求收集,保持公司产品的核心竞争力,最终实现产品创新.具体说来:     1).深刻理解市场需求.用户需求,准确把控行业发展趋势,保持高度的市场敏感度.     2).保证产品研发是围绕客户需求来展开,真正实现产品研发"以市场为导向.以客户为中心",而不是闭门造车.     3).实现产

互联网产品需求管理:产品管理流程

  对于互联网公司而言,产品需求管理是产品研发的核心环节,产品需求的正确与否直接影响产品开发周期.产品开发成本.产品运营成本,甚至直接决定了产品市场竞争力.根据统计:产品开发中40%-60%的问题都是在需求阶段埋下的"祸根" ,在测试阶段及运营阶段发现需求阶段植入的问题,解决的代价是需求阶段发现问题的68-200倍.      关于需求管理的故事很多,列举一些常见问题: 某天老板问起:我很久以前提过一个需求,提过以后就没下文了.产品经理无辜地说:有提过吗,是给我提的吗? 某个销售谈起:

从CMM的角度考虑需求管理计划

纵观CMM各KPA活动的要求,绝大多数的KPA均需要从计划(策划)开始,普遍的步骤要求是从准备工作--计划---执行活动---维护过程---改善过程等这几个大类,如配置管理.质量保证.项目计划.子合同管理等等.CMM的需求管理虽然没有明确要求有一定的计划,但在操作前各项目小组为了保证项目需求过程的顺利进行.保证需求活动有序有节地完成,都会粗或细地拟定一个需求计划,这个计划的定制,会直接影响到整个开发项目的成效.影响到定制需求基线的准确性.我们在了解CMM需求管理KPA要求的活动后,从该角度来考虑

CMM关键过程域剖析——成熟度级别2:需求管理

需求管理是CMM二级中列出的第一个关键域,这是因为它实际上是二级引入到开发过程中的所有管理原则的先决条件.只有在开发的目标被清楚明白地表述和理解的情况下,软件开发才能以一种有计划的有序的方式进行.实际上,没有文档化的需求,在开发工作完成前后都很有可能发生产品与要求的偏离.计划.追踪.配置管理以及软件质量保证这些在二级的其他关键过程域中涉及的原则,都是从一个稳定的基础开始的,那就是文档化的需求基线. 什么需求?谁的需求? CMM已经说得很清楚:本关键过程与中所说的需求是指"分配给软件的系统需求&q

需求管理 工具-有哪些好用的软件需求管理工具

问题描述 有哪些好用的软件需求管理工具 请教: 软件需求管理有哪些工具和软件啊?大家都在用什么进行需求管理啊? 解决方案 RationalRequisitePro Rational RequisitePro是一个强大.易用.集成的需求管理产品.而通过与Rational系列软件产品的广泛集成,大大扩展了RequisitePro及其他产品的功能,给软件工程生命周期内的各个阶段都提供了强大.方便的信息查询.跟踪.管理功能.从而能够促进更好的团队沟通.帮助管理变更和评估变更的影响,帮助验证所有的规划需求

需求管理是需求开发的基础

为什么cmmi建议需求管理在2级实施.而需求开发在3级实施呢?以前看cmmi的时候对这个是有疑问的,但是当时问了其他人也没有人很清楚,也就睁一眼闭一眼了.这次培训后,我从"成熟的过程有利于新技术的引入"的思想中得到一些启发,我觉得是不是cmmi认为,只有把需求管理做好了,做到了对需求管理理念的理解和认同,继而形成了好的习惯之后,需求开发作为一种新的技术,是相关管理人员在了解了自己的需求现状(有度量和分析)后,很朴素的和必然的要考虑的问题就是"如何把需求做得更好?",

互联网项目管理浅析之需求管理

背景 一眨眼,加入阿里大家庭已经一年多啦.在一年多的工作中,深深感受到互联网项目管理与传统IT项目管理的不同,在此尝试做一下简单的总结和分析. 本文先讲一讲需求管理.为啥要先说需求管理呢,因为在所有影响项目成功与否的因素当中,需求对项目的影响力,至少占50%以上.能够控制管理好需求,项目就成功了一半. 需求不可贪大求全,要懂得取舍 互联网是一个快速变化的世界,我们所面临的用户.环境每天都在改变,这就要求项目团队能够适应这种情况,要能够做到快速迭代.快速上线.快速试错.抢占用户.不同于传统的软件项

浅谈软件项目的需求管理

软件项目区别于其它项目的最显著的特征是其不可见性,它不像硬件购销.建筑工程,都是实实在在可见的东西.而软件项目在系统交付之前很长一段时间,客户是无法感知自己想要的系统究竟是什么样子.因此,需求管理就显得十分重要,据相关统计数据分析,软件项目90%以上失败的原因都在于没有重视需求或者需求管理方面做的不到位导致的. 需求管理作为软件项目管理的一个重要内容,贯穿项目实施的全生命周期.俗话说:万事开头难.需求作为软件开发的第一个环节,其重要性不言而喻.市面上关于需求管理的相关理论和书籍很多,但多数停留在

如何有效实现软件的需求管理(1)

之前把软件工程中的测试部分,文档管理部分都已经做了一些简单的介绍,因为都是我实际工作中经常接触的,所以也算是我的一些经验吧,不过我也不是每个部分都接触得很深入,总是有些地方讲得不太好的,也请大家谅解,希望大家能提出宝贵经验,呵呵. 下面是之前讲过部分的链接(点击就可以访问),如果之前没看过我的文章的话,有空可以看看. 1.[浅谈在软件开发中的开发与测试] 2.[敏捷测试理论以及实践] 3.[谈软件开发过程管理系统.版本控制系统及它们之间的集成] 4.[文档管理] 但是软件工程中除了我已经讲过的部