欢迎来到加倍考研网! 北京 上海 广州 深圳 天津
微信二维码
在线客服 40004-98986
推荐适合你的在职研究生专业及院校

如何进行用户需求调研?

狗十三
战洪图
  把握用户需求,才能做出用户真正喜欢的网站。如果不考虑用户需求,网站的页面设计得再漂亮,功能再强大,也只能作为摆设,无法吸引到用户,更谈不上将网站用户变为你的客户。  1、用户类型划分  对用户需求的分析,首先要考虑的,就是用户类型。  网站是面对国外客户,还是国内客户?  网站是面对经销商,还是面对终端客户?  网站是面对家庭购买者,还是面对个人消费者?  网站是服务老客户为主,还是吸引新客户?  ……  面对不同的用户类型,网站需要满足的用户需求也不同。  2、用户需求分析  确定好用户类型之后,接下来就是研究用户所关注的内容了。怎样确定用户关注哪些内容呢,除了向企业的销售人员调研,也可以做一个简单的“角色互换”思考,如果你是用户,那么你会从哪些方面来考察企业呢?如果你是用户,你会希望看到怎样的网站?  1)用户的明确需求  如产品的展示、公司的介绍、服务介绍等等,这些是属于用户最基础的需求,一般的企业网站都会有,但是不同网站之间的差别在于细节,比如产品应如何展示才更美观?公司介绍要怎样写才能突出企业优势呢?只有将细节做好,才能打动用户。  2)用户的潜在需求  除了满足用户的基础需求,网站策划者还要深入挖掘用户的潜在需求。比如,一种复杂的技术型产品,用户很可能需要及时的“技术咨询”以帮助了解;而一款家庭清洁的日化产品,如果网站有“家庭清洁常识”的介绍,相信会比单纯的产品介绍更吸引用户。  从“ 网络调研 ”到“ 网站诊断”,再到“用户需求分析”,网站策划者完成了网站规划前必要的准备工作,而接下来,才真正到了考验网站策划者功力时候了本回答被网友采纳

如何制定用户需求调研计划?

名誉之观
豆满江
1、是确定自己想要解决的问题。针对问题设置问卷,问卷中问题不应太直接,容易干扰被访者。2、确定目标受众人群,目标受众是谁?业务?老板?这个你应该比我了解。3、确定调查方法4、试访,试着问几个人,看问卷与调研方法能否解决你的问题。不行修改。5、开始访问,数据收集。控制质量最关键。6、数据处理、分析。其实不用考虑什么分析模型,只要能解决你企业的实际问题就OK。当然在数据分析过程中,你会发现有些问题没有解决,或有些数据有疑问,别猜,尽快针对特定问题进行补防。市场调研质量最重要,千万不要主观意识去猜。7、报告拟写,过程中需要收集一些文案信息加以补充。

如何做好需求分析,需求调研?

宝之至也
快活人
转载以下资料供参考从广义上理解:需求分析包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。狭义上理解需求分析指需求的分析、定义过程。原因需求分析就是分析软件用户的需求是什么。如果投入大量的人力,物力、财力、时间,开发出的软件却没人要,那所有的投入都是徒劳。如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的(相信大家都有体会)。比如:用户需要一个for linux的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件。当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,恨不得找块豆腐一头撞死。需求分析之所以重要,就因为他具有决策性、方向性、策略性的作用,他在软件开发的过程中具有举足轻重的地位,大家一定要对需求分析具有足够的重视。在一个大型软件系统的开发中,他的作用要远远大于程序设计。任务简言之,需求分析的任务就是解决“做什么"的问题,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求。过程需求分析阶段的工作,可以分为四个方面:问题识别、分析与综合、制订规格说明、评审。问题识别:就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准。这些需求包括:功能需求(做什么)、性能需求(要达到什么指标)、环境需求(如机型、操作系统等)、可靠性需求(不发生故障的概率)、安全保密需求、用户界面需求、资源使用需求(软件运行是所需的内存、CPU等)、软件成本消耗与开发进度需求、预先估计以后系统可能达到的目标。分析与综合: 逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分。最后综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)。制订规格说明书: 即编制文档,描述需求的文档称为软件需求规格说明书。请注意,需求分析阶段的成果是需求规格说明书,向下一阶段提交。评审: 对功能的正确性,完整性和清晰性,以及其它需求给予评价。评审通过才可进行下一阶段的工作,否则重新进行需求分析。方法需求分析的方法有很多,这里只强调原型化方法,其它的方法如:结构化方法、动态分析法等,从来没用过这些方法在此不讨论。原型化方法是十分重要的,原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能。原型化方法就是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能。但是这个系统可能在可靠性、界面的友好性或其他方面上存在缺陷。建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性、技术的可行性或考察是否满足用户的需求等。如:为了考察是否满足用户的要求,可以用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,然后听取用户的意见,改进这个原型。以后的目标系统就在原型系统的基础上开发。原型主要有三种类型:探索型、实验型、进化型。探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠。进化型:目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。在使用原型化方法时有两种不同的策略:废弃策略、追加策略。废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成比较好的思想,据此设计出较完整、准确、一致、可靠的最终系统。系统构造完成后,原来的模型系统就被废弃不用。探索型和实验型属于这种策略。追加策略:先构造一个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,发展成为最终系统。进化型属于这种策略。需求分析20条法则客户与开发人员交流需要好的方法。下面建议20条法则,客户和开发人员可以通过评审以下内容并达成共识。如果遇到分歧,将通过协商达成对各自义务的相互理解,以便减少以后的磨擦(如一方要求而另一方不愿意或不能够满足要求)。1、 分析人员要使用符合客户语言习惯的表达需求讨论集中于业务需求和任务,因此要使用术语。客户应将有关术语(例如:采价、印花商品等采购术语)教给分析人员,而客户不一定要懂得计算机行业的术语。2、分析人员要了解客户的业务及目标只有分析人员更好地了解客户的业务,才能使产品更好地满足需要。这将有助于开发人员设计出真正满足客户需要并达到期望的优秀软件。为帮助开发和分析人员,客户可以考虑邀请他们观察自己的工作流程。如果是切换新系统,那么开发和分析人员应使用一下旧系统,有利于他们明白系统是怎样工作的,其流程情况以及可供改进之处。3、 分析人员必须编写软件需求报告分析人员应将从客户那里获得的所有信息进行整理,以区分业务需求及规范、功能需求、质量目标、解决方法和其他信息。通过这些分析,客户就能得到一份“需求分析报告”,此份报告使开发人员和客户之间针对要开发的产品内容达成协议。报告应以一种客户认为易于翻阅和理解的方式组织编写。客户要评审此报告,以确保报告内容准确完整地表达其需求。一份高质量的“需求分析报告”有助于开发人员开发出真正需要的产品。4、 要求得到需求工作结果的解释说明分析人员可能采用了多种图表作为文字性“需求分析报告”的补充说明,因为工作图表能很清晰地描述出系统行为的某些方面,所以报告中各种图表有着极高的价值;虽然它们不太难于理解,但是客户可能对此并不熟悉,因此客户可以要求分析人员解释说明每个图表的作用、符号的意义和需求开发工作的结果,以及怎样检查图表有无错误及不一致等。5、 开发人员要尊重客户的意见如果用户与开发人员之间不能相互理解,那关于需求的讨论将会有障碍。共同合作能使大家“兼听则明”。参与需求开发过程的客户有权要求开发人员尊重他们并珍惜他们为项目成功所付出的时间,同样,客户也应对开发人员为项目成功这一共同目标所做出的努力表示尊重。6、 开发人员要对需求及产品实施提出建议和解决方案通常客户所说的“需求”已经是一种实际可行的实施方案,分析人员应尽力从这些解决方法中了解真正的业务需求,同时还应找出已有系统与当前业务不符之处,以确保产品不会无效或低效;在彻底弄清业务领域内的事情后,分析人员就能提出相当好的改进方法,有经验且有创造力的分析人员还能提出增加一些用户没有发现的很有价值的系统特性。7、 描述产品使用特性客户可以要求分析人员在实现功能需求的同时还注意软件的易用性,因为这些易用特性或质量属性能使客户更准确、高效地完成任务。例如:客户有时要求产品要“界面友好”或“健壮”或“高效率”,但对于开发人员来讲,太主观了并无实用价值。正确的做法是,分析人员通过询问和调查了解客户所要的“友好、健壮、高效所包含的具体特性,具体分析哪些特性对哪些特性有负面影响,在性能代价和所提出解决方案的预期利益之间做出权衡,以确保做出合理的取舍。8、 允许重用已有的软件组件需求通常有一定灵活性,分析人员可能发现已有的某个软件组件与客户描述的需求很相符,在这种情况下,分析人员应提供一些修改需求的选择以便开发人员能够降低新系统的开发成本和节省时间,而不必严格按原有的需求说明开发。所以说,如果想在产品中使用一些已有的商业常用组件,而它们并不完全适合您所需的特性,这时一定程度上的需求灵活性就显得极为重要了。9、 要求对变更的代价提供真实可靠的评估有不同的选择。而这时,对需求变更的影响进行评估从而对业务决策提供帮助,是十分必要的。所以,客户有权利要求开发人员通过分析给出一个真实可信的评估,包括影响、成本和得失等。开发人员不能由于不想实施变更而随意夸大评估成本。10、 获得满足客户功能和质量要求的系统每个人都希望项目成功,但这不仅要求客户要清晰地告知开发人员关于系统“做什么”所需的所有信息,而且还要求开发人员能通过交流了解清楚取舍与限制,一定要明确说明您的假设和潜在的期望,否则,开发人员开发出的产品很可能无法让您满意。11、 给分析人员讲解您的业务分析人员要依靠客户讲解业务概念及术语,但客户不能指望分析人员会成为该领域的专家,而只能让他们明白您的问题和目标;不要期望分析人员能把握客户业务的细微潜在之处,他们可能不知道那些对于客户来说理所当然的“常识”。12、 抽出时间清楚地说明并完善需求客户很忙,但无论如何客户有必要抽出时间参与“头脑高峰会议”的讨论,接受采访或其他获取需求的活动。有些分析人员可能先明白了您的观点,而过后发现还需要您的讲解,这时请耐心对待一些需求和需求的精化工作过程中的反复,因为它是人们交流中很自然的现象,何况这对软件产品的成功极为重要。13、 准确而详细地说明需求编写一份清晰、准确的需求文档是很困难的。由于处理细节问题不但烦人而且耗时,因此很容易留下模糊不清的需求。但是在开发过程中,必须解决这种模糊性和不准确性,而客户恰恰是为解决这些问题作出决定的最佳人选,否则,就只好靠开发人员去正确猜测了。在需求分析中暂时加上“待定”标志是个方法。用该标志可指明哪些是需要进一步讨论、分析或增加信息的地方,有时也可能因为某个特殊需求难以解决或没有人愿意处理它而标注上“待定”。客户要尽量将每项需求的内容都阐述清楚,以便分析人员能准确地将它们写进“软件需求报告”中去。如果客户一时不能准确表达,通常就要求用原型技术,通过原型开发,客户可以同开发人员一起反复修改,不断完善需求定义。14、 及时作出决定分析人员会要求客户作出一些选择和决定,这些决定包括来自多个用户提出的处理方法或在质量特性冲突和信息准确度中选择折衷方案等。有权作出决定的客户必须积极地对待这一切,尽快做处理,做决定,因为开发人员通常只有等客户做出决定才能行动,而这种等待会延误项目的进展。15、 尊重开发人员的需求可行性及成本评估所有的软件功能都有其成本。客户所希望的某些产品特性可能在技术上行不通,或者实现它要付出极高的代价,而某些需求试图达到在操作环境中不可能达到的性能,或试图得到一些根本得不到的数据。开发人员会对此作出负面的评价,客户应该尊重他们的意见。16、 划分需求的优先级绝大多数项目没有足够的时间或资源实现功能性的每个细节。决定哪些特性是必要的,哪些是重要的,是需求开发的主要部分,这只能由客户负责设定需求优先级,因为开发者不可能按照客户的观点决定需求优先级;开发人员将为您确定优先级提供有关每个需求的花费和风险的信息。在时间和资源限制下,关于所需特性能否完成或完成多少应尊重开发人员的意见。尽管没有人愿意看到自己所希望的需求在项目中未被实现,但毕竟是要面对现实,业务决策有时不得不依据优先级来缩小项目范围或延长工期,或增加资源,或在质量上寻找折衷。17、 评审需求文档和原型客户评审需求文档,是给分析人员带来反馈信息的一个机会。如果客户认为编写的“需求分析报告”不够准确,就有必要尽早告知分析人员并为改进提供建议。更好的办法是先为产品开发一个原型。这样客户就能提供更有价值的反馈信息给开发人员,使他们更好地理解您的需求;原型并非是一个实际应用产品,但开发人员能将其转化、扩充成功能齐全的系统。18、 需求变更要立即联系不断的需求变更,会给在预定计划内完成的质量产品带来严重的不利影响。变更是不可避免的,但在开发周期中,变更越在晚期出现,其影响越大;变更不仅会导致代价极高的返工,而且工期将被延误,特别是在大体结构已完成后又需要增加新特性时。所以,一旦客户发现需要变更需求时,请立即通知分析人员。19、 遵照开发小组处理需求变更的过程为将变更带来的负面影响减少到最低限度,所有参与者必须遵照项目变更控制过程。这要求不放弃所有提出的变更,对每项要求的变更进行分析、综合考虑,最后做出合适的决策,以确定应将哪些变更引入项目中。20、 尊重开发人员采用的需求分析过程软件开发中最具挑战性的莫过于收集需求并确定其正确性,分析人员采用的方法有其合理性。也许客户认为收集需求的过程不太划算,但请相信花在需求开发上的时间是非常有价值的;如果您理解并支持分析人员为收集、编写需求文档和确保其质量所采用的技术,那么整个过程将会更为顺利。“需求确认”意味着什么在“需求分析报告”上签字确认,通常被认为是客户同意需求分析的标志行为,然而实际操作中,客户往往把“签字”看作是毫无意义的事情。“他们要我在需求文档的最后一行下面签名,于是我就签了,否则这些开发人员不开始编码。”这种态度将带来麻烦,譬如客户想更改需求或对产品不满时就会说:“不错,我是在需求分析报告上签了字,但我并没有时间去读完所有的内容,我是相信你们的,是你们非让我签字的。”同样问题也会发生在仅把“签字确认”看作是完成任务的分析人员身上,一旦有需求变更出现,他便指着“需求分析报告”说:“您已经在需求上签字了,所以这些就是我们所开发的,如果您想要别的什么,您应早些告诉我们。”这两种态度都是不对的。因为不可能在项目的早期就了解所有的需求,而且毫无疑问地需求将会出现变更,在“需求分析报告”上签字确认是终止需求分析过程的正确方法,所以我们必须明白签字意味着什么。对“需求分析报告”的签名是建立在一个需求协议的基线上,因此我们对签名应该这样理解:“我同意这份需求文档表述了我们对项目软件需求的了解,进一步的变更可在此基线上通过项目定义的变更过程来进行。我知道变更可能会使我们重新协商成本、资源和项目阶段任务等事宜。”对需求分析达成一定的共识会使双方易于忍受将来的摩擦,这些摩擦来源于项目的改进和需求的误差或市场和业务的新要求等。  需求确认将迷雾拨散,显现需求的真面目,给初步的需求开发工作画上了双方都明确的句号,并有助于形成一个持续良好的客户与开发人ONT>

市场调研的方法

鲿鲨
罗光
市场调研需要的步骤和方法 不同的研究人员对市场调研步骤的划分虽说“大同小弄”,但不同之处可体现出研究人员对市场调研的认识差弄。而有些认识的偏差我认为是需要及时纠正的。 把市场调研这样复杂的工作,简单清晰地分为若干步骤,其本身是有误导作用的。但为了书面沟通的需要,我们不得不这样做。至于工作步骤划分有粗有细,也十分正常的。然而,我发现对市场调研步骤的划分出现了各种偏差,当这些偏差常见诸于报刊书籍时,其误导作用更显得不容忽视,窃以为应该迅速加以纠正。以下列出了几条市场调研的步骤的偏差: 偏差之一:为追求步骤的具体化,而把某种特殊调研方法的步骤当作一般的市场调研步骤。 最常见的是把问卷访问法(Questionnaire)的步骤具体化,称之为市场调研的步骤。这样就很容易使读者和刚进入该行业的同仁误以为问卷访问就是市场调研。 市场调研方法常用的有二手资料收集法(Secondary Research)、访问法(SurveyResearch)和实验法 (ExperimentaI Research)。而问卷访问只是访问法的一种而已。如果我们更进一步地严格认真的话,实际上,问眷访问只是一种收集信息的技术,早已有的调研技术可与之平起乎坐,如观察法(Observation)、态度量表法(Attitude Scales)、投射和深度访谈 (ProJective Techniques and Depth lnterviews)等等。 出现这种认识偏差的同仁,可能是对市场调研没有全面了解,对先进的调研方法和技术知之甚少。 偏差之二:详述次要环节,丢弃重要步骤。 我见到这样的调研程序设计,其第一步骤便是“调研方案设计与提交”。我还见过这样的调研程序,第一步是“客户的要求”,第二步便是“计划建议书的提交”。我认为这些操作者属于就调研而调研的人士,他们忽视了市场调研的真正目的是什么。 市场调研的目的是为经理人员更好地决策提供有效信息。调研程序设计中缺少“背景情况的认识”和“调研问题的明确”这两个重要步骤,恰恰反映出现阶段大量的调研不能帮助经理们决策的原因所在。 我认为正确的市场调研步骤应该这样设计划分: 1.明确客户所面临的管理决策问题,也就是背景情况的认识。 这一步骤在经理人员无法清楚理解和表述其问题所在时显得尤为重要。有时,客户似乎提出了其面临的决策问题,但还是要根据背景情况分析。 H国一著名汽车厂家要在我国投资建立一摩托车生产厂,他们一开始提出的决策问题是“哪里投资环境好?”,并且把浙江萧山定为调研对象,这是个实地考察的调研方案。然而,调研刚开始就发现他们的决策问题首先应该是“中国中央和地方政府的摩托车政策是什么?”,从而成为一个只需二手资料收集法就能解决的问题。 2.把管理决策问题转化为市场调研问题,也即调研问题的明确。 管理决策问题是指经理人员要做的决策,而调研问题是指能帮助更好地决策的信息提供。 浙江省一软件开发商推出一个家教软件,同时他开始面临投资多少资金开发市场的决策问题。市场调研公司要帮他收集什么信息呢?这次的调研问题是:国内家庭电脑拥有量是多少?愿意购买家教软件的比例是多少?对该类软件的接受价位如何? 然而,你可能已经发现了其中的毛病。第一个问题应该改为:国内在用并且配置能支持该软件的家庭电脑有多少?第二个问题也得改为:其中愿意购买正版家教软件的比例是多少? 调研问题的明确决定了调研数据是否精确有效,而在调研设计中把这一重要环节“省略”的操作者,正是无效调研报告的始作涌者。 3.调研方案设计。 在这里,我们要估计调研信息的价值,确定提供什么精度的信息,选择收集信息的方法和测量技术,根据调研方法确定地点、对象、抽样规则等,还要确定数据分析方法和报告提交方法。当然,时间、费用和人员安排也是不可缺少的。最后,把所有这些内容写入调研提案。 4.现场收集信息。 现场不仅可以是被访者家里,也可以是商业区,也可以是自己公司的监控室里,甚至任何合适的地方。 5.信息处理分析。 指信息从现场回到项目研究经理手上以后到报告撰写前的所有处理程序,又根据不同的调研方法会有不同的步骤。如,座谈会有审核、分类、编码、整理音像带、补充、统计(半自动)、制图表、打印、归档等。问卷法有审核、分类、编码、录人、缺失检验、分维度统计、制图表、打印、存档等等。 6.报告形成、提交。 分析报告的形成也非一成不变,尤其是很多客户会提出,要在现场部分’工作完成后,数据处理前先提交中期报告。有的客户则会要求项目经理作解释讲演,那就需要一份讲演稿。这些形式的报告与我们传统意义上的最终报告均有较大区别。 7.总结反馈。 这一步骤也是很多同仁“省略”的对象,似乎交了报告就一了百了,全然不顾调研的真正目的是否达到,也不顾客户对调研的意见和建议。这不仅使自己失去进一步提高的机会,而且往往也失去了客户的订单。 最后,我想说明,咱们如此罗嗦地计较市场调研步骤的设计和划分,目的在于想让广大同仁正确认识“市场调研的目的在于帮助企业解决问题,而不是为调研而调研”。

求问[原创]讨论:需求调研时如何挖掘客户的真正需求?

其治一也
正月
但当测试甚至上线的时候,很多用户会提出很多的需求来,甚至推翻你前期设计、实现的功能。所以很多人也提不出很多需求来。因此,第一次接受ERP等信息化项目的企业用户,首先是要接受培训,了解ERP的概念,必要时甚至要构造一个虚拟环境去操作每一个步骤.其次,主导信息建设的人员,不仅仅要懂ERP 系统,更要懂业务,特别是了解新上ERP 系统企业实际业务运作情况,关键问题在那里,而不是简单选择一个ERP系统就可以,要找一到两个ERP系统,让供应商演示实际运作效果,并让关键岗位员工参与其中,一起来打分.大家用科学的方法来选择ERP产品,选择实施方,选择好解决方案,才有机会避免问题的发生.注意:预防比处理要好得多

一般情况下店铺如何调查客户的需求?

祖甲
楚茨
如何调查客户的需求?郭汉尧经销商培训支招:贵派电器营销学院院长郭汉尧老师指出:一般情况下店铺用以下三个方法比较有成效。(1)整理日常记录,按内部资料进行调查。首先了解店铺过去的活动情况,对将来的计划是很有用的。但只靠分析过去,还掌握不了行业整体的变化和不同营业方针的商店的趋势。一旦过去采用的方针有差错,其调查结构当然也是错误的,按照错误的实际成绩制订计划,当然是有问题的,实际上这也是一种销售分析,就是把过去的销售成绩,从各个角度进行调查分析,在详细地把握销售成绩的同时,观察过去至现在销售上的变化,了解其中包括的真实意义,根据它预测顾客未来需要的趋势。(2)从各种机构发表的统计资料上进行调查。比如,人口统计、物价指数统计、国民收入统计、纳税成绩统计等。如果把这些资料很好地整理出来,就可以明确顾客市场收入的变化以及家庭生活支出的实际情况等,也可以掌握市场的发展趋势和经营上的特性,把它和商店的实际进行对照,就能得到制定计划的有效资料。(3)配备意见簿,派遣调查员调查收集外部的材料。比如,顾客的范围、对本店的评论和希望、顾客的职业、收入程度、平均每月的购买额等。根据商店需要的项目,从各个角度,把这些调查情况填入意见单进行研究。制作一些调查问卷、去热闹的地方、找路过的行人填!那样是最能知道各种消费者的消费目的和需求的!很多企业都是这样、市场调查是最重要的营销策畧!

如何进行用户需求分析

冒险家
少者哭之
1.概念需求的定义包括从用户角度(系统的外部行为),以及从开发者角度(一些内部特性)来阐述需求.关键的问题是一定要编写需求文档.我曾经目睹过一个项目中途更换了所有的开发者,客户被迫与新的需求分析者坐到一起.系统的分析人员说:"我们想与你谈谈你的需求."客户的第一反应便是:"我已经将我的要求都告诉你们前任了,现在我要的就是给我编一个系统".百事通而实际上,UGGs,需求并未编写成文档,因此新的分析人员不得不从头做起.所以如果只有一堆邮件、会谈记录或一些零碎的未整理的对话,你就确信你已明白用户的需求,那完全是自欺欺人.需求的另外一种定义认为需求是"用户所需要的并能触发一个程序或系统开发工作的说明".有些需求分析专家拓展了这个概念:"从系统外部能发现系统所具有的满足于用户的特点、功能及属性等".这些定义强调的是产品是什么样的,而并非产品是怎样设计、构造的.而下面的定义则从用户需要进一步转移到了系统特性:需求是指明必须实现什么的规格说明.它描述了系统的行为、特性或属性,是在开发过程中对系统的约束.从上面这些不同形式的定义不难发现:并没有一个清晰、毫无二义性的"需求"术语存在,真正的"需求"实际上在人们的脑海中,这个人们主要是指客户,但一般情况下,用户并不能描述自己的需要,只就需要系统分析人员根据用户的自己语言的描述整理出相关的需要再进一步和客户核对.系统分析员和客户需要确保所有项目风险承担者在描述需求的那些名词的理解上务必达成共识.任何文档形式的需求(例如如下将要描述的需求规格说明书)仅是一个模型,一种描述.2.需求分析的任务开发软件系统最为困难的部分就是准确说明开发什么.最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口.同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进行修改也极为困难.目前,国内产品的庞杂,一家企业可能有几个系统并立运行,它们之间接口是系统开发人员最头痛的问题.对于商业最终用户应用程序,企业信息系统和软件作为一个大系统的一部分的产品是显而易见的.但是对于我们开发人员来说,并没有编写出客户认可的需求文档,我们如何知道项目于何时结束?而如果我们不知道什么对客户来说是重要的,那我们又如何能使客户感到满意呢?然而,即便并非出于商业目的的软件需求也是必须的.例如库、组件和工具这些供开发小组内部使用的软件.当然你可能偶尔勿需文档说明就能与其他人意见较为一致,但更常见的是出现重复返工这种不可避免的后果,而重新编制代码的代价远远超过重写一份需求文档的代价,这些血的教训正在国内的软件开发者身上发生.近来,我遇到一个开发小组开发包括代码编辑器在内的一套内部使用的计算机辅助软件.不幸的是,当他们开发完这个工具后,发现这个工具不能打印出源代码文件,使用者当然希望有这个功能.结果这个小组只好手工抄写源代码文档以供代码检查.这说明那怕需求明确无误并构思准确,如果我们没有编写文档,软件达不到期望目标也只能是咎由自取了.相反的情况,我曾见一个要集成到"错误跟踪系统"中的简单界面写了一页需求说明.而操作系统系统管理员在为处理脚本时发现简单的一张需求清单竟是如此有用.他们依据需求对系统进行测试时,此系统不仅非常清晰地实现了所有必需功能,而且未发现任何错误.事实上,需求文档在开发过程中一直起指导作用.3.需求分析过程可把整个软件需求工程研究领域划分为需求开发和需求管理两部分更合适,如图4-1所示:图4-1 需求工程域的层次分解示意图需求开发可进一步分为:问题获取、分析、编写规格说明和验证四个阶段.这些子项包括软件类产品中需求收集、评价、编写文档等所有活动.需求开发活动包括以下几个方面:确定产品所期望的用户类别.获取每个用户类的需求.了解实际用户任务和目标以及这些任务所支持的业务需求.分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息.将系统级的需求分为几个子系统,并将需求中的一部份分配给软件组件.了解相关质量属性的重要性.商讨实施优先级的划分.将所收集的用户需求编写成文档和模型.评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都弄清楚.需求管理需要"建立并维护在软件工程中同客户达成的合同" .这种合同都包含在编写的需求文档与模型中.客户的接受仅是需求成功的一半,开发人员也必须能够接受他们,并真正把需求应用到产品中.通常的需求管理活动包括:定义需求基线(迅速制定需求文档的主体).评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它.以一种可控制的方式将需求变更融入到项目中.使当前的项目计划与需求一致.估计变更需求所产生影响并在此基础上协商新的承诺,这种承诺具体体现在项目解决方案上.让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪.在整个项目过程中跟踪需求状态及其变更情况.以上几点说明是我总结了成功实施项目后系统分析人员的经验,同时也根据国内外的其他系统实施的相关成功经验,进行了总结.4.需求的类型下面这些定义是需求工程领域中常见术语的定义.软件需求包括三个不同的层次:业务需求、用户需求和功能需求(也包括非功能需求).1.业务需求(business requirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明.2.用户需求(user requirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例(use case)文档或方案脚本说明中予以说明.3.功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求.在软件需求规格说明书 (SRS)中说明的功能需求充分描述了软件系统所应具有的外部行为.软件需求规格说明在开发、测试、质量保证、项目管理以及相关项目功能中都起了重要的作用.对一个大型系统来说,软件功能需求也许只是系统需求的一个子集,因为另外一些可能属于子系统(或软件部件).作为功能需求的补充,软件需求规格说明还应包括非功能需求,它描述了系统展现给用户的行为和执行的操作等.它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性.所谓约束是指对开发人员在软件产品设计和构造上的限制.质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能.多角度描述产品对用户和开发人员都极为重要.下面以一个字处理程序为例来说明需求的不同种类.业务需求可能是:"用户能有效地纠正文档中的拼写错误",该产品的包装盒封面上可能会标明这是个满足业务需求的拼写检查器.而对应的用户需求可能是"找出文档中的拼写错误并通过一个提供的替换项列表来供选择替换拼错的词".同时,该拼写检查器还有许多功能需求,如找到并高亮度提示错词的操作;显示提供替换词的对话框以及实现整个文档范围的替换.从以上定义可以发现,需求并未包括设计细节、实现细节、项目计划信息或测试信息.需求与这些没有关系,它关注的是充分说明你究竟想开发什么.项目也有其它方面的需求,如开发环境需求或发布产品及移植到支撑环境的需求.尽管这些需求对项目成功也至关重要,但它们并非本书所要讨论的.5.需求分析的原则不重视需求过程的项目队伍将自食其果.需求工程中的缺陷将给项目成功带来极大风险,这里的"成功"是指推出的产品能以合理的价格、及时地在功能、质量上完全满足用户的期望.下面将讨论一些需求风险.不适当的需求过程所引起的一些风险:1. 无足够用户参与客户经常不明白为什么收集需求和确保需求质量需花费那么多功夫,开发人员可能也不重视用户的参与.究其原因:一是因为开发人员感觉与用户合作不如编写代码有意思;二是因为开发人员觉得已经明白用户的需求了.在某些情况下,与实际使用产品的用户直接接触很困难,而客户也不太明白自己的真正需求.但还是应让具有代表性的用户在项目早期直接参与到开发队伍中,并一同经历整个开发过程.系统人员在实践过程中,也有些感觉,在实施一家公司的项目时,若无足够的用户参与,系统人员获得的需求是片面的,不完整的,这样系统在需求之初就埋下风险.2. 用户需求的不断增加在开发中若不断地补充需求,项目就越变越庞大以致超过其计划及预算范围.计划并不总是与项目需求规模与复杂性、风险、开发生产率及需求变更实际情况相一致,这使得问题更难解决.实际上,问题根源在于用户需求的改变和开发者对新需求所作的修改.要想把需求变更范围控制到最小,必须一开始就对项目视图、范围、目标、约束限制和成功标准给予明确说明,并将此说明作为评价需求变更和新特性的参照框架.说明中包括了对每种变更进行变更影响因素分析的变更控制过程,有助于所有风险承担者明白业务决策的合理性,即为何进行某些变更,相应消耗的时间、资源或特性上的折中.产品开发中不断延续的变更会使其整体结构日渐紊乱,补丁代码也使得整个程序难以理解和维护.插入补丁代码使模块违背强内聚、松耦合的设计原则,特别是如果项目配置管理工作不完善的话,收回变更和删除特性会带来问题.如果你尽早地区别这些可能带来变更的特性,你就能开发一个更为健壮的结构,并能更好地适应它.这样设计阶段需求变更不会直接导致补丁代码,同时也有利于减少因变更导致质量的下降.3. 模棱两可的需求模棱两可是需求规格说明中最为可怕的问题.它的一层含义是指诸多读者对需求说明产生了不同的理解;另一层含义是指单个读者能用不止一个方式来解释某个需求说明.模棱两可的需求会使不同的风险承担者产生不同的期望,它会使开发人员为错误问题而浪费时间,并且使测试者与开发者所期望的不一致.一位系统测试人员曾告诉我,她所在的测试组经常对需求理解有误,以致不得不重写许多测试用例并重做许多测试.处理模棱两可需求的一种方法是组织好负责从不同角度审查需求的队伍.仅仅简单浏览一下需求文档是不能解决模棱两可问题的.如果不同的评审者从不同的角度对需求说明给予解释,但每个评审人员都真正了解需求文档,这样二义性就不会直到项目后期才被发现,那时再发现的话会使得更正代价很大.4. 不必要的特性"画蛇添足"是指开发人员力图增加一些"用户欣赏"但需求规格说明中并未涉及的新功能.经常发生的情况是用户并不认为这些功能性很有用,以致在其上耗费的努力"白搭"了.开发人员应当为客户构思方案并为他们提供一些具有创新意识的思路,具体提供哪些功能要在客户所需与开发人员在允许时限内的技术可行性之间求得平衡,开发人员应努力使功能简单易用,而不要未经客户同意,擅自脱离客户要求,自作主张.同样,客户有时也可能要求一些看上去很"酷",但缺乏实用价值的功能,而实现这些功能只能徒耗时间和成本.为了将"画蛇添足"的危害尽量减小,应确信:你明白为什么要包括这些功能,以及这些功能的"来龙去脉",这样使得需求分析过程始终是注重那些能使用户完成他们业务任务的核心功能.5. 过于精简的规格说明有时,客户并不明白需求分析有如此重要,于是只作一份简略之至的规格说明,仅涉及了产品概念上的内容,然后让开发人员在项目进展中去完善,结果很可能出现的是开发人员先建立产品的结构之后再完成需求说明.这种方法可能适合于尖端研究性的产品或需求本身就十分灵活的情况.但在大多数情况下,这会给开发人员带来挫折(使他们在不正确的假设前提和极其有限的指导下工作),也会给客户带来烦恼(他们无法得到他们所设想的产品).6. 忽略了用户分类大多数产品是由不同的人使用其不同的特性,使用频繁程度也有所差异,使用者受教育程度和经验水平也不尽相同.如果你不能在项目早期就针对所有这些主要用户进行分类的话,必然导致有的用户对产品感到失望.例如,菜单驱动操作对高级用户太低效了,但含义不清的命令和快捷键又会使不熟练的用户感到困难.7. 不准确的计划据统计,导致需求过程中软件成本估计极不准确的原因主要有以下五点:频繁的需求变更、遗漏的需求、与用户交流不够、质量低下的需求规格说明和不完善的需求分析.对不准确的要求所提问题的正确响应是"等我真正明白你的需求时,我就会来告诉你".基于不充分信息和未经深思的对需求不成熟的估计很容易为一些因素左右.要作出估计时,最好还是给出一个范围.未经准备的估计通常是作为一种猜测给出的,听者却认为是一种承诺.因此我们要尽力给出可达到的目标并坚持完成它.6.需求分析人员和用户的合作关系优秀的软件产品是建立在优秀的需求基础之上的.而高质量的需求来源于客户与开发人员之间有效的交流与合作.通常,开发人员与客户或客户代理人,如市场人员间的关系反而会成为一种对立关系.双方的管理者都只想自己的利益而搁置用户提供的需求从而产生摩擦,在这种情况下,不会给双方带来一点益处.只有当双方参与者都明白要成功自己需要什么,同时也应知道要成功合作方需要什么时,才能建立起一种合作关系.由于项目压力与日渐增,所有风险承担者有着一个共同的目标这一点容易被遗忘.其实大家都想开发出一个既能实现商业价值,又能满足用户需要,还能使开发者感到满足的优秀软件产品.软件客户需求权利书列出了十条关于客户在项目需求工程实施中与分析人员、开发人员交流时的合法要求.每一项权利都对应着软件开发人员、分析人员的义务.而软件客户需求义务书也列出了十条关于客户在需求过程中应承担的义务.如果愿意,可以将其作为开发人员的权利书.客户有如下权利:1:要求分析人员使用符合客户语言习惯的表达需求讨论应集中于业务需要和任务,故要使用业务术语,你应将其教给分析人员,而你 不一定要懂得计算机的行业术语.2:要求分析人员了解客户的业务及目标通过与用户交流来获取用户需求、分析人员才能更好地了解你的业务任务和怎样才能使产品更好地满足你的需要.这将有助于开发人员设计出真正满足你的需要并达到你期望的优秀软件.为帮助开发人员和分析人员,可以考虑邀请他们观察你或你的同事是怎样工作的.如果新开发系统是用来替代已有的系统,那么开发人员应使用一下目前的系统,这将有利于他们明白目前系统是怎样工作的,其工作流程的情况,以及可供改进之处.3:要求分析人员编写软件需求规格说明分析人员要把从你和其他客户那里获得的所有信息进行整理,以区分开业务需求及规范、功能需求、质量目标、解决方法和其它信息.通过这些分析就能得到一份软件需求规格说明.而这份软件需求规格说明便在开发人员和客户之间针对要开发的产品内容达成了协议.软件需求规格说明书可以用一种你认为易于翻阅和理解的方式组织编写.要评审编写出的规格说明以确保它们准确而完整地表达了你的需求.一份高质量的软件需求规格说明能有助于开发人员开发出真正需要的产品.4:要求得到需求工作结果的解释说明分析人员可能采用了多种图表作为文字性软件需求规格说明的补充.因为如工作流程图那样的图表能很清楚地描述出系统行为的某些方面.所以需求说明中的各种图表有着极高的价值.虽然它们不太难于理解,但是你很可能对此并不熟悉.因此可以要求分析人员解释说明每张图表的作用或其它的需求开发工作结果和符号的意义,及怎样检查图表有无错误及不一致等.5:要求开发人员尊重你的意见如果用户与开发人员之间不能相互理解,那关于需求的讨论将会有障碍,共同合作能使大家"兼听则明".参与需求开发过程的客户有权要求开发人员尊重他们并珍惜他们为项目成功所付出的时间.同样,客户也应对开发人员为项目成功这一共同目标所作出的努力表示尊重与感激.6:要求开发人员对需求及产品实施提供建议,拿出主意通常,客户所说的"需求"已是一种实际可能的实施解决方案,分析人员将尽力从这些解决方法中了解真正的业务及其需求,同时还应找出已有系统不适合当前业务之处,以确保产品不会无效或低效.在彻底弄清业务领域内的事情后,分析人员有时就能提出相当好的改进方法.有经验且富有创造力的分析人员还能提出增加一些用户并未发现的很有价值的系统特性.7:描述产品易使用的特性你可以要求分析人员在实现功能需求的同时还要注重软件的易用性.因为这些易用特性或质量属性能使你更准确、高效地完成任务.例如,客户有时要求产品要"用户友好"或"健壮"或"高效率",但这对于开发人员来说,太主观了并无实用价值.正确的应是:分析人员通过询问和调查了解客户所要的友好、健壮、高效所包含的具体特性.8:调整需求,允许重用已有的软件组件需求通常要有一定的灵活性.分析人员可能发现已有的某个软件组件与你描述的需求很相符.在这种情况下,分析人员应提供一些修改需求的选择以便开发人员能够在新系统开发中重用一些已有的软件.如果有可重用的机会出现,同时你又能调整你的需求说明,那就能降低成本和节省时间,而不必严格按原有的需求说明开发.所以说,如果想在产品中使用一些已有的商业常用组件,而它们并不完全适合你所需的特性,这时一定程度上的需求灵活性就显得极为重要了.9:获得满足客户功能和质量要求的系统每个人都希望项目获得成功.但这不仅要求你要清晰地告知开发人员关于系统"做什么"所需的所有信息,而且还要求开发人员能通过交流了解清楚取舍与限制.一定要明确说明你的假设和潜在的期望.否则,开发人员开发出的产品很可能无法让你满意.客户有下列义务:1:给分析人员讲解你的业务分析人员要依靠你给他们讲解的业务概念及术语.但你不能指望分析人员会成为该领域的专家,而只能让他们真正明白你的问题和目标.不要期望分析人员能把握你们业务的细微与潜在之处,他们很可能并不知道那些对于你和你的同事来说理所当然的"常识".2:抽出时间清楚地说明并完善需求客户很忙,经常在最忙的时候还得参与需求开发.但无论如何,你有义务抽出时间参与"头脑风暴"会议的讨论,接受采访或其它获取需求的活动.有时分析人员可能先以为明白了你的观点,而过后发现还需要你的讲解.这时,请耐心一些对待需求和需求的精化工作过程中的反复,因为它是人们交流中的很自然的现象,何况这对软件产品的成功极为重要.3:准确而详细地说明需求编写一份清晰、准确的需求文档是很困难的.由于处理细节问题不但烦人而且又耗时,故很容易留下模糊不清的需求.但是,在开发过程中,必须得解决这种模糊性和不准确性.而你恰是为解决这些问题作出决定的最佳人选.不然的话,你就只好靠开发人员去正确猜测了.在需求规格说明中暂时加上待定(to be determined, TBD也可采用汉语拼音略写"DQD:待确定")的标志是个不错的办法.用该标志可指明了哪些需要进一步探讨、分析或增加信息的地方.不过,有时也可能因为某个特殊需求难以解决或没有人愿意处理它而注上TBD标志.尽量将每项需求的内容都阐述清楚,以便分析人员能准确的将其写进软件需求规格说明中.如果你一时不能准确表述,那就得允许获取必要的准确信息这样一个过程.通常使用所谓的原型技术.通过开发的原型,你可以同开发人员一起反复修改,不断完善需求定义.4:及时地作出决定正如一位建筑师为你修建房屋,分析人员将要求你做出一些选择和决定.这些决定包括来自多个用户提出的处理方法或在质量特性冲突和信息准确度中选择折衷方案等.有权做出决定的客户必须积极地对待这一切,尽快做处理、做决定.因为开发人员通常只有等你做出了决定才能行动,而这种等待会延误项目的进展.5:尊重开发人员的需求可行性及成本评估所有的软件功能都有其成本价格,开发人员最适合预算这些成本(尽管许多开发人员并不擅长评估预测).你所希望的某些产品特性可能在技术上行不通,或者实现它要付出极为高昂的代价.而某些需求试图在操作环境中要求不可能达到的性能或试图得到一些根本得不到的数据,开发人员会对此作出负面的评价意见,你应该尊重他们的意见.有时,你可以重新给出一个在技术上可行、实现上便宜的需求,例如,要求某个行为在"瞬间"发生是不可行的,但换种更具体的时间需求说法("在50ms以内",但若没有准确的技术分析不能轻易下结论),这就可以实现了.6: 划分需求优先级别大多数项目没有足够的时间或资源来实现功能性的每个细节.决定哪些特性是必要的,哪些是重要的,哪些是好的,是需求开发的主要部分.只能由你来负责设定需求优先级,因为开发者并不可能按你的观点决定需求优先级.开发者将为你确定优先级提供有关每个需求的花费和风险的信息.当你设定优先级时,你帮助开发者确保在适当的时间内用最小的开支取得最好的效果.在时间和资源限制下,关于所需特性能否完成或完成多少应该尊重开发人员的意见.尽管没有人愿意看到自己所希望的需求在项目中未被实现,但毕竟是要面对这种现实的.业务决策有时不得不依据优先级来缩小项目范围或延长工期,或增加资源,或在质量上寻找折衷.7:评审需求文档和原型正如我们将在第1 4章讨论的,无论是正式的还是非正式的方式,对需求文档进行评审都会对软件质量提高有所帮助.让客户参与评审才能真正鉴别需求文档是否的确完整、正确说明了期望的必要特性.评审也给客户代表提供一个机会,给需求分析人员带来反馈信息以改进他们的工作.如果你认为编写的需求文档不够准确,就有义务尽早告诉分析人员并为改进提供建议.通过阅读需求规格说明,很难想象实际的软件是什么样子的.更好的方法是先为产品开发一个原型.这样你就能提供更有价值的反馈信息给开发人员,帮助他们更好地理解你的需求.必须认识到:原型并非是一个实际产品,但开发人员能将其转变、扩充成功能齐全的系统.8:需求出现变更要马上联系不断的需求变更会给在预定计划内完成高质量产品带来严重的负面影响.变更是不可避免的,但在开发周期中变更越在晚期出现,其影响越大.变更不仅会导致代价极高的返工,而且工期也会被迫延误,特别是在大体结构已完成后又需要增加新特性时.所以一旦你发现需要变更需求时,请一定立即通知分析人员.9:应遵照开发组织处理需求变更的过程为了将变更带来的负面影响减少到最低限度,所有的参与者必须遵照项目的变更控制过程.这要求不放弃所有提出的变更,对每项要求的变更进行分析、综合考虑,最后作出合适的决策以确定将某些变更引入项目中.10:尊重开发人员采用的需求工程过程软件开发中最具挑战性的莫过于收集需求并确定其正确性.分析人员采用的方法有其合理性.也许你认为需求过程不太划算,但请相信花在需求开发上的时间是"很有价值"的.如果你理解并支持分析人员为收集、编写需求文档和确保其质量所采用的技术,那么整个过程将会更为顺利.尽管去询问分析人员为什么他们要收集某些信息,或参与与需求有关的活动.系统分析人员在开发过程中可能会遇到以下问题,一些很忙的客户可能不愿意积极参与需求过程,而缺少客户参与将很可能导致不理想的产品.故一定要确保需求开发中的主要参与者都了解并接受他们的义务.如果遇到分歧,通过协商以达成对各自义务的相互理解,这样能减少今后的摩擦.7.需求文档需求开发的最终成果是:客户和开发小组对将要开发的产品达成一致协议.协议综合了业务需求、用户需求和软件功能需求.就像我们早先所看到的,项目视图和范围文档包含了业务需求,而使用实例文档则包含了用户需求.你必须编写从使用实例派生出的功能需求文档,还要编写产品的非功能需求文档,包括质量属性和外部接口需求.只有以结构化和可读性方式编写这些文档,并由项目的风险承担者评审通过后,各方面人员才能确信他们所赞同的需求是可靠的.你可以使用以下三种方法编写软件需求规格说明:用好的结构化和自然语言编写文本型文档.建立图形化模型,这些模型可以描绘转换过程、系统状态和它们之间的变化、数据关系、逻辑流或对象类和它们的关系.编写形式化规格说明,这可以通过使用数学上精确的形式化逻辑语言来定义需求.由于形式化规格说明具有很强的严密性和精确度,因此,所使用的形式化语言只有极少数软件开发人员才熟悉,更不用说客户了.虽然结构化的自然语言具有许多缺点,但在大多数软件工程中,它仍是编写需求文档最现实的方法.包含了功能和非功能需求的基于文本的软件需求规格说明已经为大多数项目所接受.图形化分析模型通过提供另一种需求视图,增强了软件需求规格说明.

项目中如何控制客户需求?

天下不堪
玄德
凡是做过不止一个国内的项目的项目主管人员可能都经历过这种场合:公司的销售人员兴冲冲的拿来一份与客户签订的合同交给你,声称这项目又搞定了,但是当你拿过来合同(或者任务委托书)一看,关于项目范围的说明只有寥寥数行,要么是一些高举高打的套话,要么只说项目都包含什么样的模块,而对具体的业务只是一两句话就完事儿了,如果是一位身经百战的管理者并且对于项目的具体业务很熟悉还可以,如果不是那该如何开始这个项目呢?还有一种情况,客户在项目进程中,不断对移交的系统提出修改意见,更可气的是,有些问题开始提出更改,某一天客户突然就发现情况不对,又要求你给改会来,看起来客户的需求总是无穷无尽,作为项目的承担者该如何应对这种令人沮丧的局面呢? 一、客户需求为何过渡膨胀 作为项目的承担着,在规定时间用有限的资源来保质保量的完成项目,让公司和最终客户都满意是项目组的神圣职责。但是为了让客户满意就要满足客户所有的需求吗?因为不断满足客户的需求会不会导致项目失败怎么办呢?为了弄清楚这些原因,首先应该找到这些问题发生的根源。 1. 签订合约的时候,项目范围描述不清楚。这是最常见的问题之一,也正是早期的这些问题没有引起项目组的足够重视,导致后期项目无穷无尽的修改。 2. 客户和项目组对写成纸面文件的需求理解不一致。这种情况也较常见,虽然客户已经确认了项目组提交的项目范围说明书,项目组也是完全按照这个文件规定的内容做的,但是客户还要求改,当项目组拿着纸面的文件与客户对质的时候,才发现客户也认可这需求,但是同一件事情,客户的认知和项目组的认知完全不同。举个简单的例子:客户要求系统能够电子签名,项目组的成员就模拟了一个,自动产生客户的签名在系统中,但是当移交给客户的时候才发现,客户要求的电子签名实际上是想把原来手写签名的工作也移植到电子化的系统中,让领导能够通过画图的方式产生一个手写的签名在文档中应该落签字的地方!有时候就是当初一点点疏忽,导致项目后期大量修改甚至项目延期。 3. 客户总有在结项之前把每一件事情都做得淋漓尽致的初衷。一般来讲,在项目结项之前,客户都会把所有的想法尽量逼着项目组解决,因为一般的客户心理都会认为:一旦结项了,再想找项目组成员对业务系统进行修改可就难了,因为IT公司人员流动性强的特点,即便以后能够找到承包商,当初做项目的项目组成员也不一定在了,或者很多公司因为业务繁忙,已经顾不得原来已经结款的客户了。 4. 项目组人员总是无条件迁就客户,客户有求必应。这种做法的出发点是好的,目的是要客户完全满意,但是实际上这种做法不一定能达到目的。一般的客户需求都是无底洞,这样做对整个项目经常也会带来很多负面影响。当然,如果过分控制客户的需求,客户肯定也不会满意。 二、解决办法 针对上述项目问题以及发生的原因,结合以前一些项目的教训经验,我感觉可以通过以下几点来有效屏蔽客户需求过渡膨胀的问题,让项目完成得更加漂亮。 未雨绸缪: 项目初期一定要制定清晰的目标和项目范围,并且让项目主要干系人(最重要的当然是最终客户了)确认。 不管通过什么途径得到的项目,作为项目主管,在项目前期,可以分三步走。 第一个想到的问题应该是“为什么”,也就是客户做项目有什么目的,知道这些以后,才能在以后的工作中更加想客户之所想,不至于项目方向错误,最终争取达到双赢得局面。 知道了“为什么”以后,接下来就要非常清晰的知道“做什么”,有一个比较好的办法就是用一两句非常简洁的话概括出来整个项目,并且能够用这种方法概括出项目中的各个子任务,并且能够让前台业务人员和后台研发人员都能够心领神会,那么说明项目主管对项目的内容在大方向上已经有很好的把握了。 最后就要弄明白“怎么做”了,对于比较陌生的项目来讲,这一阶段工作量比较大也很重要,在这个阶段多花点精力绝对值得,当然,根据具体的情况,也可以在这个需求调研阶段简化一些不必要的工作,这需要项目主管具备平衡那些彼此冲突的项目目标的能力。在实际的工作中,这需要一个过程,值得注意的是,在需求整理完毕形成文档以后,最好先让项目组人员把自己总结的需求跟客户比较详细的讲一遍,在实际的操作中,这种做法不仅能够把项目人员与客户在业务层面的歧义问题数量大大降低,还可以很好的发先潜在的问题,并且掌握一些沟通技巧,也会让客户更能深刻的感觉到承包商对他们的重视。另外,如果项目前期得需求人员对技术非常不了解,根据实际情况最好在需求每次提交给客户前与研发人员沟通,以避免不必要的给客户的承诺,更加准确的界定工作量。总之,有效的计算出项目范围将会占用一定的时间,但是同样会节省资源、资金以及解决项目今后令人头疼的问题,例如:需求(范围)变更。 另外一个很值得注意的问题是:项目的需求经过几次确认以后,要让有权力的客户明确确认,最好有书面签字,这个有说服力的文件会在以后客户发生需求变更的时候起到很好的作用,很显然,因为客户已经签字确认,总是反悔肯定理亏呀,即便因为业务变化不得不对项目进行大的调整以至于项目延期,这种情况下也会是项目组处于有利地位,不至于让自己的公司非常不满,甚至可以以此为依据来要求客户重新考虑项目经费。当然,对于客户来讲,通过这些很好理解的需求的阐述,也会以此作为以后交付产品的依据,做到心里有数,消除不必要的疑虑,这个对双方有同等的约束力,很有好处。 灵活应变:遇到变更要与客户沟通 经常有这种情况,项目都已经执行到最后阶段,客户突然提出了新的要求或者要求对已有需求进行更改,这会让项目主管非常为难:一方面要尽量满足客户的需求,另一方面又不能对系统做太大的改动,影响进度计划。这种情况发生除了和需求阶段有关以外,同时说明在实施过程中没有与客户有密切的联系,缺乏沟通。 从客户的心理来分析。由于软件的特殊性,客户通常非常关注后期的服务,尤其是在国内大家做的软件绝大多数都是与实际业务紧密相连的。作为项目管理者,非常忌讳的是在做项目的过程中对客户置之不理,而最后交付的时候才与客户突然发生大量接触,本来后期的实施过程出现问题的可能性最大,之前与客户又比较生疏,很可能会造成非常大的风险。比较稳妥的办法就是在项目进程中也要让项目组与客户保持联系,相互了解,建立更加融洽和谐的沟通气氛,为以后关键的实施移交阶段可能与客户发生的冲突做好准备。值得一提的是:在项目进程中阶段性的给客户呈现一下项目的进展状况,让客户对项目有一个更加直接可视化的认识,更能及早的发现解决问题免除后患,在不断的沟通过中,应该让客户认识到项目组时时站在客户角度着想,让客户的主要负责人也能深深的感觉到他们是项目组的重要组成部分、荣辱与共,并且项目组能为客户提供完善持续的后续服务,这样可以有效的避免客户绞尽脑汁想把所有的事情在第一次结项之前做完。 即便前期工作做得再好,很多情况下,需求变更是不可避免的。项目主管通过良好的沟通机制随时掌握变更情况和可能发生的变更,一旦发生了变更,项目组一定要冷静处理这些问题,一般可以按照产品分析—〉成本/收益分析—〉备选方案—〉专家判断这四个步骤来首先评估需求变更,并且尽快形成项目范围变更书面的说明书,它是以后项目决策的基础,当然比较稳妥地办法还是让客户对明显发生的变更做出确定(选择签字最好),尤其是在评估了变更可能导致的工作量增加以后,让客户认识到过多的变更很显然会造成项目延期,客户对此也要负责任。 在客户提出需求变更的时候,一定要掌握一定的沟通技巧,一定不要总是无条件迁就客户。一般来讲客户对IT都不太熟悉,他们认为很简单的事情,可能要花费项目组大量的无谓得多余精力,所以千万不要认为客户所说的就一定是他想得到的!大部分客户都是第一时间突然脑海里面冒出的火花,所以项目组人员要冷静的分析一下:客户到底想要实现什么目的,抓住问题得本质。一般来讲,实现客户本质的需求有很多种办法。在与客户的沟通中,一定避免与客户正面冲突。在初期认真倾听客户意见,多问一些“您还有什么想法”之类的问题,等客户把他的想法都表述清楚以后,项目组成员成员最好迅速评估一下客户的建议,如果实现起来实在太困难,可以给客户一些更加中肯的提议,多问些“您看这样行不行?其实可以达到同样的目的。”之类的问题,最后还有一个重要的过程就是要与客户确认这次沟通的结论。 总之,项目整体管理是平衡那些彼此冲突的项目目标的一种能力。看起来简单,但是实际上很复杂,项目主管在项目进程中要学会如何对常见变更进行控制,控制客户需求的肆意膨胀,保证项目健康稳定的进行。 1. 在项目启动时,公司会批准一个新的项目阶段的开始。 2. 在范围计划编制的过程中,将制定一份说明书来描述在项目中将做什么。 3. 在范围定义中,项目的主要部分被分成更小的部分。 4. 在范围审核时,需要验收项目的范围。 5. 在范围变更控制中,随着时间的过去,需要对项目范围变更进行监督。

需求分析常用方法都有哪些,请举例说明

边区造
六分
问卷调查法,是指设计方就用户需求中的一些个性化的、需要进一步明确的需求或问题,通过采用向用户问卷调查表的方式,达到彻底弄清项目需求的一种需求获取方法。 这种方法适合于设计方和建设方、使用方都清楚项目需求的情况。因为建设方和使用方都清楚项目的需求,需要双方进一步沟通的需求或问题就比较少,通过采用这种简单的问卷调查方法就能使问题得到较好的解决。显然对于乐百氏集团这样规模庞大的公司,简单的问卷调查是不能够满足准确获得需求的需要的。会议讨论法,是指设计方和用户相关人员召开若干次需求讨论会议,达到彻底弄清项目需求的一种需求获取方法。这种方法适合于设计方不清楚用户的详细业务需求,但使用方清楚项目需求的情况。因为使用方清楚项目的需求,他们能准确地表达出他们的需求,而设计方有专业的需求,而我们有专业的软件开发经验,经过回忆讨论交流之后,能够对用户的需求进行准确描述和把握。这个方法对于准确的获得乐百氏公司的需求是一种不错的选择。在本案例中系统的设计人员也是这么做的,他们通过和乐百氏项目组经理的讨论,很快了解了乐百氏的运作过程的数据。界面原型法,是指设计方根据自己所了解的用户需求,描画出应用系统的功能界面后与用户进行交流和沟通,通过“界面原型”这一载体,达到双方逐步明确项目需求的一种需求获取的方法。这种方法比较适合于设计方和用户都不是非常清楚项目需求、只是大概了解用户需求的情况。因为设计方和用户方都不能非常准确的描述出客户的需求,因此此时就更需要借助于一定的“载体”来加快对需求的挖掘和双方对需求理解