1、客户需求开发与需求管理Page 2目录目录. 什么是需求什么是需求 . 了解客户、最终用户、间接用户了解客户、最终用户、间接用户. 需求工程基本概念需求工程基本概念. 需求开发的主要困难与对策需求开发的主要困难与对策. 如何开展需求调查如何开展需求调查. 如何进行需求分析如何进行需求分析. 什么是好的需求规格说明书什么是好的需求规格说明书. 如何定义产品需求如何定义产品需求. 需求管理:确认、跟踪、变更控制需求管理:确认、跟踪、变更控制Page 3. 什么是需求什么是需求 需求的基本概念需求的基本概念 宽泛地讲,需求来源于用户的一些宽泛地讲,需求来源于用户的一些“需要需要”,这些,这些“需要需
2、要”被分析、确认后形成被分析、确认后形成完整的文档,该文档详细地说明了产品完整的文档,该文档详细地说明了产品“必须或应当必须或应当”做什么。做什么。 所以如果只有一些零碎的对话、资料或邮件,你就以为自己已经掌握了需求,那所以如果只有一些零碎的对话、资料或邮件,你就以为自己已经掌握了需求,那是自欺欺人。是自欺欺人。 需求的重要性需求的重要性 在他年经典文章在他年经典文章“ ”中阐述了需求的重要性:中阐述了需求的重要性:开发软件系统最困难的部分就是准确说明开发什么。最困难的概念性工作是编写开发软件系统最困难的部分就是准确说明开发什么。最困难的概念性工作是编写出详细的需求,包括所有面向用户、面向机器
3、和其它软件系统的接口。此工作一出详细的需求,包括所有面向用户、面向机器和其它软件系统的接口。此工作一旦做错,将会给系统带来极大的损害,并且以后对它修改也极为困难。旦做错,将会给系统带来极大的损害,并且以后对它修改也极为困难。 需求是产品的根源,需求工作的优劣对产品影响最大。就像一条河流,如果源头需求是产品的根源,需求工作的优劣对产品影响最大。就像一条河流,如果源头被污染了,那么整条河流也就被污染了。被污染了,那么整条河流也就被污染了。 国内软件业的痼疾:人们并不清楚究竟该做什么,但却一直忙碌不停地开发。国内软件业的痼疾:人们并不清楚究竟该做什么,但却一直忙碌不停地开发。 Page 4. 什么是
4、需求什么是需求 需求开发失败的案例需求开发失败的案例 上海贝尔某事业部一群高智商的开发人员集体犯需求观念错误的案例。上海贝尔某事业部一群高智商的开发人员集体犯需求观念错误的案例。故事是这样的故事是这样的需求问题有时如同爱情问题,真是需求问题有时如同爱情问题,真是“当局者迷,旁观者清当局者迷,旁观者清”啊。啊。 Page 5. 了解客户、最终用户、间接用户了解客户、最终用户、间接用户 基本概念基本概念“用户用户”()是一种泛称,它可细分为()是一种泛称,它可细分为“客户客户”()、()、“最终用户最终用户”( )和)和“间接用户间接用户”(或称为关系人)。(或称为关系人)。掏钱买软件的用户称为客
5、户,而真正操作软件的用户叫最终用户。客户与最终用掏钱买软件的用户称为客户,而真正操作软件的用户叫最终用户。客户与最终用户可能是同一个人也可能不是同一个人。户可能是同一个人也可能不是同一个人。 客户是掏钱买软件的人,所以他是客户是掏钱买软件的人,所以他是“上帝上帝” 某饭店经理在解释某饭店经理在解释“先有鸡还是先有蛋先有鸡还是先有蛋”这个哲学问题时,精辟地阐述了客户的这个哲学问题时,精辟地阐述了客户的地位:地位:如果顾客先点鸡,那么就先有鸡;如果顾客先点蛋,那么就先有蛋。如果顾客先点鸡,那么就先有鸡;如果顾客先点蛋,那么就先有蛋。“现代营销学之父现代营销学之父”菲利普菲利普科特勒所著的市场营销导
6、论是这样描述客户的科特勒所著的市场营销导论是这样描述客户的:客户永远是本公司的座上客。客户并不依赖我们,而我们却依赖客户。客户不是客户永远是本公司的座上客。客户并不依赖我们,而我们却依赖客户。客户不是我们工作的障碍,而是我们工作的目标。我们并不因为服务于他而对他有恩我们工作的障碍,而是我们工作的目标。我们并不因为服务于他而对他有恩,他却因为给予我们服务于他的机会而有恩于我们。客户不是我们要与之争,他却因为给予我们服务于他的机会而有恩于我们。客户不是我们要与之争辩和斗智的人。从未有人曾在与客户的争辩中获胜。客户是把他的欲望带给辩和斗智的人。从未有人曾在与客户的争辩中获胜。客户是把他的欲望带给我们
7、的人,因此我们的工作就是满足这些欲望,从而使客户和我们共同获益我们的人,因此我们的工作就是满足这些欲望,从而使客户和我们共同获益。与客户打交道的主要目的是:一是获取需求,二是签合同。不要把钱仍到水里。与客户打交道的主要目的是:一是获取需求,二是签合同。不要把钱仍到水里。Page 6. 了解客户、最终用户、间接用户了解客户、最终用户、间接用户 即使最终用户不是上帝,也算是即使最终用户不是上帝,也算是“上帝上帝”的的“亲戚亲戚”,同样怠慢不得。,同样怠慢不得。如果项目规模比较大,那么开发方与最终用户的来往就比较多。如从最终用户那如果项目规模比较大,那么开发方与最终用户的来往就比较多。如从最终用户那
8、里获取详细的需求,请最终用户试验软件,对最终用户进行培训等等。里获取详细的需求,请最终用户试验软件,对最终用户进行培训等等。公司新员工上产品培训课,有位小领导匆匆赶来作指示:公司新员工上产品培训课,有位小领导匆匆赶来作指示:“隔壁班正在给电信局隔壁班正在给电信局的员工们进行培训,他们都是上帝派来的,大家要注意形象。由于休息室空的员工们进行培训,他们都是上帝派来的,大家要注意形象。由于休息室空间有限,请大家自觉让位。午休时他们可以躺着睡,我们只能坐在位置上打间有限,请大家自觉让位。午休时他们可以躺着睡,我们只能坐在位置上打个盹儿个盹儿.。” 重视重视“间接用户间接用户”,千万别,千万别“大意失荆
9、州大意失荆州” 间接用户既不掏钱买该软件产品,也不使用该软件,但是它可能对软件产品有很间接用户既不掏钱买该软件产品,也不使用该软件,但是它可能对软件产品有很大的影响。大的影响。例如,财务软件开发商在把例如,财务软件开发商在把“财务软件财务软件”卖给客户之前,这个卖给客户之前,这个“财务软件财务软件”必须必须得到国家财政部的批准。否则即使该软件的功能是完美的,但却被政府认为得到国家财政部的批准。否则即使该软件的功能是完美的,但却被政府认为是非法的。所以国家财政部就是所有财务软件的间接用户,它不仅不付钱给是非法的。所以国家财政部就是所有财务软件的间接用户,它不仅不付钱给财务软件开发商,反而要收取鉴
10、定费、手续费等。财务软件开发商,反而要收取鉴定费、手续费等。同理,市面上流通的信息安全软件、杀病毒软件必须得到国家公安部的批准,否同理,市面上流通的信息安全软件、杀病毒软件必须得到国家公安部的批准,否则软件开发商被逮住后戴上则软件开发商被逮住后戴上“非法经营非法经营”的帽子就惨了。的帽子就惨了。 Page 7. 需求工程基本概念需求工程基本概念 什么是需求工程什么是需求工程把所有与需求直接相关的活动通称为需求工程。把所有与需求直接相关的活动通称为需求工程。需求工程中的活动可分为两大类,一类属于需求开发,另一类属于需求管理。需求工程中的活动可分为两大类,一类属于需求开发,另一类属于需求管理。 需
11、求工程的结构图需求工程的结构图 Page 8. 需求工程基本概念需求工程基本概念 需求开发过程域需求开发过程域 需求开发的目的是通过调查与分析,获取用户需求并定义产品需求。需求开发的目的是通过调查与分析,获取用户需求并定义产品需求。 需求调查的目的是通过各种途径获取用户的需求信息(原始材料),产需求调查的目的是通过各种途径获取用户的需求信息(原始材料),产生用户需求说明书。生用户需求说明书。 需求分析的目的是对各种需求信息进行分析,消除错误,刻画细节等。需求分析的目的是对各种需求信息进行分析,消除错误,刻画细节等。常见的需求分析方法有常见的需求分析方法有“问答分析法问答分析法”和和“建模分析法
12、建模分析法”两类。两类。 需求定义的目的是根据需求调查和需求分析的结果,进一步定义准确无需求定义的目的是根据需求调查和需求分析的结果,进一步定义准确无误的产品需求,产生产品需求规格说明书。系统设计人员将依据误的产品需求,产生产品需求规格说明书。系统设计人员将依据产品需求规格说明书开展系统设计工作。产品需求规格说明书开展系统设计工作。 需求管理过程域需求管理过程域 需求管理的目的是在客户与开发方之间建立对需求的共同理解,维护需需求管理的目的是在客户与开发方之间建立对需求的共同理解,维护需求与其它工作成果的一致性,并控制需求的变更。求与其它工作成果的一致性,并控制需求的变更。 需求确认是指开发方和
13、客户共同对需求文档进行评审,双方对需求达成需求确认是指开发方和客户共同对需求文档进行评审,双方对需求达成共识后作出书面承诺,使需求文档具有商业合同效果。共识后作出书面承诺,使需求文档具有商业合同效果。 需求跟踪是指通过比较需求文档与后续工作成果之间的对应关系,建立需求跟踪是指通过比较需求文档与后续工作成果之间的对应关系,建立与维护与维护“需求跟踪矩阵需求跟踪矩阵”,确保产品依据需求文档进行开发。,确保产品依据需求文档进行开发。 需求变更控制是指依据需求变更控制是指依据“变更申请审批更改重新确认变更申请审批更改重新确认”的流程处的流程处理需求的变更,防止需求变更失去控制而导致项目发生混乱。理需求
14、的变更,防止需求变更失去控制而导致项目发生混乱。 Page 9. 需求工程基本概念需求工程基本概念 需求工程的一些感悟需求工程的一些感悟 不论是合同项目还是自主研发的产品,都必须开展需求开发和需求管理不论是合同项目还是自主研发的产品,都必须开展需求开发和需求管理活动。活动。 开发者对待需求工程的态度可分开发者对待需求工程的态度可分“被动型被动型”、“主动型主动型”和和“领先型领先型”三种,只有后两种才有可能开发出成功的产品。三种,只有后两种才有可能开发出成功的产品。 “被动型被动型”是指开发者被动地对待需求工程中的各项活动,能少干则少是指开发者被动地对待需求工程中的各项活动,能少干则少干,能偷
15、懒则偷懒。他们认为需求是用户的事情而不是自己的事情。干,能偷懒则偷懒。他们认为需求是用户的事情而不是自己的事情。开发过程中经常发生需求变更,导致产品迷失方向,不是半途而废就开发过程中经常发生需求变更,导致产品迷失方向,不是半途而废就是陷入半死不活的状态。是陷入半死不活的状态。“主动型主动型”是指开发者积极地开展需求工程中的各项活动。他们把获取是指开发者积极地开展需求工程中的各项活动。他们把获取准确的需求当作自己的职责,会想尽一切办法克服需求开发和需求管准确的需求当作自己的职责,会想尽一切办法克服需求开发和需求管理过程中的困难,而不是找借口推卸责任。俗话说理过程中的困难,而不是找借口推卸责任。俗
16、话说“良好的开端是成良好的开端是成功的一半功的一半”,“主动型主动型”需求工程是开发成功产品的必备条件。需求工程是开发成功产品的必备条件。 “领先型领先型”是需求工程的最高境界。开发者发掘了连用户自己都没有意是需求工程的最高境界。开发者发掘了连用户自己都没有意识到的需求,导致用户跟着新产品跑而不是新产品围着用户转,这叫识到的需求,导致用户跟着新产品跑而不是新产品围着用户转,这叫引导消费。需求工程做到这个份上,才能使产品立于不败之地,长盛引导消费。需求工程做到这个份上,才能使产品立于不败之地,长盛不衰。不衰。 Page 10. 需求开发的主要困难与对策需求开发的主要困难与对策 知识技能问题知识技
17、能问题 应用域的知识是无边无际的,任何人都不可能是应用域的知识是无边无际的,任何人都不可能是“万事通万事通”。俗话说。俗话说“隔行如隔山隔行如隔山”,需求分析员可能是某一领域的专家,但当他接手陌生,需求分析员可能是某一领域的专家,但当他接手陌生的业务时,他可能是个的业务时,他可能是个“无知无知”者。一个企业要谋求发展,不能总在者。一个企业要谋求发展,不能总在做老的业务。人一生中会有许多充满挫折的做老的业务。人一生中会有许多充满挫折的“第一次第一次”,不可以逃避,不可以逃避。当需求分析员缺乏应用域知识时,他该怎么办?当需求分析员缺乏应用域知识时,他该怎么办?首先他要有勇气做事,否则连实践的机会都
18、没有。首先他要有勇气做事,否则连实践的机会都没有。其次他应当赶紧补习应用域知识,不论是通过自学还是培训的方式,否其次他应当赶紧补习应用域知识,不论是通过自学还是培训的方式,否则他很难与用户交流。如果可能的话,开发方最好请既懂软件又懂应则他很难与用户交流。如果可能的话,开发方最好请既懂软件又懂应用域知识的行家来帮忙。用域知识的行家来帮忙。 态度问题态度问题 相当多的开发人员习惯于被动地对待需求开发。每当遇到麻烦、挫折时相当多的开发人员习惯于被动地对待需求开发。每当遇到麻烦、挫折时,他们会发牢骚,找出一堆用户的毛病。很多开发人员错误地以为:,他们会发牢骚,找出一堆用户的毛病。很多开发人员错误地以为
19、: 需求是用户的事情,不是我们的事情。我们为用户开发软件,难道用户需求是用户的事情,不是我们的事情。我们为用户开发软件,难道用户不该告诉我们应当开发什么吗?如果用户说不清楚需求,或者经常变不该告诉我们应当开发什么吗?如果用户说不清楚需求,或者经常变更需求,这类问题是用户产生的,应当由他们自己负责。更需求,这类问题是用户产生的,应当由他们自己负责。 用户说不清楚需求或者需求发生变更,这些都是常见的问题,并不是绝用户说不清楚需求或者需求发生变更,这些都是常见的问题,并不是绝症,是人们可以设法解决的。可悲的是开发人员把这些问题当成了借症,是人们可以设法解决的。可悲的是开发人员把这些问题当成了借口,不
20、愿主动攻克问题,导致需求问题扩散到整个软件开发过程,产口,不愿主动攻克问题,导致需求问题扩散到整个软件开发过程,产生太多的后患。生太多的后患。 软件企业的领导应当给具有错误观念的开发人员们洗脑:需求分析员的软件企业的领导应当给具有错误观念的开发人员们洗脑:需求分析员的天职就是在有限的时间内获取准确而细致的用户需求,如果做不到就天职就是在有限的时间内获取准确而细致的用户需求,如果做不到就是失职,不要找借口。是失职,不要找借口。 Page 11. 需求开发的主要困难与对策需求开发的主要困难与对策 合作关系合作关系 如果需求分析员不能与用户建立良好的合作关系,那么他们在需求开发如果需求分析员不能与用
21、户建立良好的合作关系,那么他们在需求开发过程中会很疲惫。过程中会很疲惫。 倘若用户不能很好地配合需求分析员,那并不表示他是个坏蛋。因为用倘若用户不能很好地配合需求分析员,那并不表示他是个坏蛋。因为用户有他自己的想法:户有他自己的想法:我回答了你们的问题,讲了该讲的。我们付钱给你们,难道还要我伺候我回答了你们的问题,讲了该讲的。我们付钱给你们,难道还要我伺候你们不成?我还要干自己的事情,别打扰我了。你们自己想办法把活你们不成?我还要干自己的事情,别打扰我了。你们自己想办法把活干好吧干好吧 。 对于一些竞标项目,在合同未签订之前的需求开发工作尤为困难。用户对于一些竞标项目,在合同未签订之前的需求开
22、发工作尤为困难。用户未必会买你的产品,他不会投入很多精力来协助你搞需求开发。未必会买你的产品,他不会投入很多精力来协助你搞需求开发。需求分析员不是销售人员,他们不可能象销售人员那样通过某些手段笼需求分析员不是销售人员,他们不可能象销售人员那样通过某些手段笼络住用户就能成功。出色的需求分析员不仅要有过硬的专业知识,还络住用户就能成功。出色的需求分析员不仅要有过硬的专业知识,还要具备较强的交流、沟通能力。要具备较强的交流、沟通能力。开发方与用户的合作关系对需求开发而言是至关重要的。对于重大的、开发方与用户的合作关系对需求开发而言是至关重要的。对于重大的、复杂的项目,我们不能完全期望双方能够自发地建
23、立起良好地合作关复杂的项目,我们不能完全期望双方能够自发地建立起良好地合作关系,这样风险太大。系,这样风险太大。 开发方和用户方在开展需求开发之前,双方协商并撰写开发方和用户方在开展需求开发之前,双方协商并撰写“用户在需求工用户在需求工程中的权利与义务程中的权利与义务”,即以协议的方式确定合作关系。,即以协议的方式确定合作关系。“好话好话”和和“丑话丑话”都说在前头,这样能减少今后的摩擦。如果条件允许的话,开都说在前头,这样能减少今后的摩擦。如果条件允许的话,开发方最好为用户举办关于需求工程的培训,这样的培训将使用户明白发方最好为用户举办关于需求工程的培训,这样的培训将使用户明白需求的重要性以
24、及忽视需求的危害性,从而促使他们积极友善地参加需求的重要性以及忽视需求的危害性,从而促使他们积极友善地参加需求工程中的各项活动。需求工程中的各项活动。 Page 12. 需求开发的主要困难与对策需求开发的主要困难与对策u用户在需求工程中的“权利” u. 有权要求开发方派遣资质合格的需求分析员和相关人员。u. 有权要求开发方采用用户熟悉的语言来描述需求,即开发方必须提供用户看得懂得需求文档。u. 有权审查需求文档,并对有争议的需求作出决策。如果认为需求文档不能准确地反映用户真实的意愿,可以拒绝在需求文档上签字。 u. 如果用户想要变更需求,有权要求开发方对该变更将产生的影响作出真实可信的评估,以
25、便用户决定是否变更需求。 u用户在需求工程中的“义务” u. 以积极友善的态度与开发方人员交流、协作,尽可能地为开发方人员提供工作和生活上的便利。 u. 乐意接受需求分析员的采访,在不泄漏机密的前提下尽可能地回答需求分析员的问题。u. 在不泄漏机密的前提下,尽可能地向需求分析员提供与需求相关的材料。 u. 与需求分析员共同评审需求文档,确保需求文档准确地反映用户真实的意愿。 Page 13. 需求开发的主要困难与对策需求开发的主要困难与对策 用户说不清楚需求用户说不清楚需求 用户说不清楚需求是普遍现象,这是让开发人员头痛的大问题。用户说不清楚需求是普遍现象,这是让开发人员头痛的大问题。 有些用
26、户真的不知道需求是什么,或者对需求只有朦胧的感觉,他当然有些用户真的不知道需求是什么,或者对需求只有朦胧的感觉,他当然说不清楚需求。说不清楚需求。 例如开发方的营销人员水平比较高,他能够在用户不清楚自己要什么的例如开发方的营销人员水平比较高,他能够在用户不清楚自己要什么的情况下引导用户情况下引导用户“消费消费”。例如前些年全国各地的很多政府机构大搞网络建设。这些机构的领导和例如前些年全国各地的很多政府机构大搞网络建设。这些机构的领导和办公人员大多数不清楚网络干什么用,就让开发人员替他们设想需求办公人员大多数不清楚网络干什么用,就让开发人员替他们设想需求吧,反正是花公家的钱。吧,反正是花公家的钱
27、。有些用户虽然心里明白想要什么,但却说不清楚需求。有些用户虽然心里明白想要什么,但却说不清楚需求。 比如说买鞋子。我们非常了解自已的脚,但很难用语言说清楚脚的大小比如说买鞋子。我们非常了解自已的脚,但很难用语言说清楚脚的大小和形状。通常拿鞋子去试,试穿时感觉到舒服才会买鞋。和形状。通常拿鞋子去试,试穿时感觉到舒服才会买鞋。需求分析员绝不能以用户说不清楚需求为借口而草率地对待需求开发工需求分析员绝不能以用户说不清楚需求为借口而草率地对待需求开发工作,否则会连累整个开发团队的。作,否则会连累整个开发团队的。无论是什么原因导致用户说不清楚需求,需求分析员必须设法搞清楚用无论是什么原因导致用户说不清楚
28、需求,需求分析员必须设法搞清楚用户真正的需求,这是需求分析员的职责,也是职业的挑战。户真正的需求,这是需求分析员的职责,也是职业的挑战。 Page 14. 需求开发的主要困难与对策需求开发的主要困难与对策 双方误解需求双方误解需求 人们在交流的时候,经常会发生人们在交流的时候,经常会发生“问非所求,答非所问问非所求,答非所问”的事情。的事情。 有时用户会把开发人员的建议或答复给想歪了:有时用户会把开发人员的建议或答复给想歪了:有一个软件开发人员滔滔不绝地向用户讲解在有一个软件开发人员滔滔不绝地向用户讲解在“信息高速公路上做广告信息高速公路上做广告”的种种好处,用户听得津津有味。最后,心动的用户
29、对软件开发人的种种好处,用户听得津津有味。最后,心动的用户对软件开发人员说:员说:“好得很,就让我们马上行动起来吧。请您决定广告牌的尺寸好得很,就让我们马上行动起来吧。请您决定广告牌的尺寸和放在哪条高速公路上,我立即派人去做。和放在哪条高速公路上,我立即派人去做。”而用户表达的需求,不同的开发人员可能有不同的理解。如果需求分析而用户表达的需求,不同的开发人员可能有不同的理解。如果需求分析员误解了需求,那会导致后续的不少开发人员将错就错、白干活。就员误解了需求,那会导致后续的不少开发人员将错就错、白干活。就像作文写跑题了,写得再好也白搭。这类错误连高智商的外星人都不像作文写跑题了,写得再好也白搭
30、。这类错误连高智商的外星人都不能避免:能避免: 有个外星人间谍潜伏到地球刺探情报,它给上司写了一份报告:有个外星人间谍潜伏到地球刺探情报,它给上司写了一份报告:“主宰主宰地球的是车。它们喝汽油,靠四个轮子滚动前进。嗓门极大,在夜里地球的是车。它们喝汽油,靠四个轮子滚动前进。嗓门极大,在夜里双眼能射出强光。双眼能射出强光。有趣的是,车里住着一种叫作有趣的是,车里住着一种叫作人人的寄生虫的寄生虫,这些寄生虫完全控制了车。,这些寄生虫完全控制了车。” 不论是复杂的项目还是简单的项目,需求分析员和用户都有可能误解需不论是复杂的项目还是简单的项目,需求分析员和用户都有可能误解需求。所以需求确认工作(属于
31、需求管理)必不可少。求。所以需求确认工作(属于需求管理)必不可少。 Page 15. 需求开发的主要困难与对策需求开发的主要困难与对策 开发人员写不好需求文档开发人员写不好需求文档 需求调查工作不充分,获取的需求信息太少或者太乱,以至于写不成需需求调查工作不充分,获取的需求信息太少或者太乱,以至于写不成需求文档。求文档。 古时候,一书生在考试前补习古时候,一书生在考试前补习“写文章写文章”,成天愁眉苦脸。其夫人甚为,成天愁眉苦脸。其夫人甚为不解,问:不解,问:“相公,你写文章比我生小孩还难吗?相公,你写文章比我生小孩还难吗?”书生长叹一声:书生长叹一声:“娘子你哪里知道我的难处啊!你生小孩时肚
32、子里有东西,可我写文娘子你哪里知道我的难处啊!你生小孩时肚子里有东西,可我写文章时肚子里没东西啊。章时肚子里没东西啊。”所以要想写出好的需求文档,前提条件是把需求调查工作做好。所以要想写出好的需求文档,前提条件是把需求调查工作做好。 开发人员写作能力比较差,虽然在调查过程中已经获得了不少需求信息开发人员写作能力比较差,虽然在调查过程中已经获得了不少需求信息,却写不出好的需求文档来。,却写不出好的需求文档来。 可以毫不夸张地说,国内以上的软件开发人员,他们的写作能力远不可以毫不夸张地说,国内以上的软件开发人员,他们的写作能力远不及开发能力。及开发能力。提高开发人员写作能力的根本办法就是让他们多练
33、习写文档,熟能生巧提高开发人员写作能力的根本办法就是让他们多练习写文档,熟能生巧。另外,企业应当提供合适的文档模板以及比较好的示例文档,尽可能地另外,企业应当提供合适的文档模板以及比较好的示例文档,尽可能地降低写作难度。降低写作难度。 Page 16. 需求开发的主要困难与对策需求开发的主要困难与对策 用户经常变更需求用户经常变更需求 需求变更通常会对项目的进度、人力资源、经费产生很大的影响,这是需求变更通常会对项目的进度、人力资源、经费产生很大的影响,这是开发商非常畏惧的问题。开发商非常畏惧的问题。如果在项目开发的初始阶段,开发人员和用户没有搞清楚需求或者搞错如果在项目开发的初始阶段,开发人
34、员和用户没有搞清楚需求或者搞错了需求,到了项目开发后期才将需求纠正过来,导致产品的部分内容了需求,到了项目开发后期才将需求纠正过来,导致产品的部分内容需要重新开发。毫无疑问,这种需求变更将使项目付出额外的代价。需要重新开发。毫无疑问,这种需求变更将使项目付出额外的代价。这种损失是由于双方工作失误造成的,双方应当好好反省,认真学习这种损失是由于双方工作失误造成的,双方应当好好反省,认真学习需求开发和管理的方法,避免再犯相似的错误。需求开发和管理的方法,避免再犯相似的错误。如果由于市场变化而导致产品需求发生变更,开发商大可不必为此烦恼如果由于市场变化而导致产品需求发生变更,开发商大可不必为此烦恼,
35、应当高兴才对。倘若市场静如死水,那么开发商吃了,应当高兴才对。倘若市场静如死水,那么开发商吃了“上一顿上一顿”就就没有没有“下一顿下一顿”。正因为市场在变化,才会产生更多商机,聪明的开。正因为市场在变化,才会产生更多商机,聪明的开发商才会有活干,有钱赚。发商才会有活干,有钱赚。 其实需求变更并不可怕,可怕的是需求变更失去控制,导致项目混乱。其实需求变更并不可怕,可怕的是需求变更失去控制,导致项目混乱。所以需求变更控制是需求工程的重要活动。所以需求变更控制是需求工程的重要活动。 Page 17. 如何开展需求调查如何开展需求调查 准备调查准备调查 首先,需求分析员应当起草需求调查问题表,将调查重
36、点锁定在该问题表内,否首先,需求分析员应当起草需求调查问题表,将调查重点锁定在该问题表内,否则调查工作将变得漫无边际。则调查工作将变得漫无边际。问题表可以有多份,随着调查的深入,问题表将不断地被细化。问题表可以有多份,随着调查的深入,问题表将不断地被细化。根据经验,用户通常没有耐心回答复杂的论述题,所以问题表应当以根据经验,用户通常没有耐心回答复杂的论述题,所以问题表应当以“选择题选择题”和和“是非题是非题”为主。为主。制定问题表最简便的方法就是从用户需求说明书的模板中提取需求问题。制定问题表最简便的方法就是从用户需求说明书的模板中提取需求问题。 其次,需求分析员应当确定需求调查的方式,例如:
37、其次,需求分析员应当确定需求调查的方式,例如: 与用户交谈,向用户提问题。向用户群体发调查问卷。与用户交谈,向用户提问题。向用户群体发调查问卷。 参观用户的工作流程,观察用户的操作。参观用户的工作流程,观察用户的操作。 与同行、专家交谈,听取他们的意见。与同行、专家交谈,听取他们的意见。 分析已经存在的同类软件产品,提取需求。分析已经存在的同类软件产品,提取需求。 从行业标准、规则中提取需求。从行业标准、规则中提取需求。 从上搜查相关资料。从上搜查相关资料。 最后,需求分析员与被调查者建立联系,确定调查的时间、地点、人员等,撰写最后,需求分析员与被调查者建立联系,确定调查的时间、地点、人员等,
38、撰写需求调查计划。要特别留意的是不要漏掉典型的用户。需求调查计划。要特别留意的是不要漏掉典型的用户。 Page 18. 如何开展需求调查如何开展需求调查 执行调查执行调查 准备工作完毕后,需求分析员按照计划执行调查。在调查过程中随时记准备工作完毕后,需求分析员按照计划执行调查。在调查过程中随时记录(或存储)需求信息录(或存储)需求信息 。需求分析员与用户面谈时应当注意以下事项:需求分析员与用户面谈时应当注意以下事项: 如果与用户约好了时间,切勿迟到或早退。要注意礼节,尽可能获得用如果与用户约好了时间,切勿迟到或早退。要注意礼节,尽可能获得用户的好感,并为下次打扰他们埋下伏笔。户的好感,并为下次
39、打扰他们埋下伏笔。 需求分析员应事先了解用户的身份、背景,以便随机应变。人士不可貌需求分析员应事先了解用户的身份、背景,以便随机应变。人士不可貌相,有些大企业的领导其外表很土气,象农民。如果你路上碰到他,相,有些大企业的领导其外表很土气,象农民。如果你路上碰到他,以为是个勤杂工,说:以为是个勤杂工,说:“喂,老师傅,来帮我拎东西。喂,老师傅,来帮我拎东西。”也许这笔生也许这笔生意就泡汤了。意就泡汤了。 需求调查不象侦探推理那样从蛛丝马迹着手,应该先了解宏观问题,再需求调查不象侦探推理那样从蛛丝马迹着手,应该先了解宏观问题,再了解细节问题。了解细节问题。 如果双方气氛融洽,可以采用灵活的访谈形式
40、,轻易不要打断用户的谈如果双方气氛融洽,可以采用灵活的访谈形式,轻易不要打断用户的谈话。当双方对某些问题的交流合乎逻辑地结束后,即可继续讨论问题话。当双方对某些问题的交流合乎逻辑地结束后,即可继续讨论问题表中的其它问题。表中的其它问题。 尽可能避免为用户添麻烦,但也不能怕给用户添麻烦而降低需求调查的尽可能避免为用户添麻烦,但也不能怕给用户添麻烦而降低需求调查的力度。力度。 避免片面地听取某些用户的需求而忽视其它用户的需求。避免片面地听取某些用户的需求而忽视其它用户的需求。 Page 19. 如何开展需求调查如何开展需求调查 用户需求说明书与产品需求规格说明书的主要区别与联系用户需求说明书与产品
41、需求规格说明书的主要区别与联系前者主要采用自然语言(和应用域术语)来表达用户需求,其内容相对于后者而前者主要采用自然语言(和应用域术语)来表达用户需求,其内容相对于后者而言比较粗略,不够详细。言比较粗略,不够详细。后者是前者的细化,更多地采用计算机语言和图形符号来刻画需求,产品需求是后者是前者的细化,更多地采用计算机语言和图形符号来刻画需求,产品需求是软件系统设计的直接依据。软件系统设计的直接依据。 两者之间可能并不存在一一影射关系,因为软件开发商会根据产品发展战略、企两者之间可能并不存在一一影射关系,因为软件开发商会根据产品发展战略、企业当前状况适当地调整产品需求,例如用户需求可能被分配到软
42、件的数个版业当前状况适当地调整产品需求,例如用户需求可能被分配到软件的数个版本中。软件开发人员应当依据产品需求规格说明书来开发当前产品。本中。软件开发人员应当依据产品需求规格说明书来开发当前产品。 撰写用户需求说明书撰写用户需求说明书Page 20用户需求说明书的参考模板用户需求说明书的参考模板Page 21. 如何进行需求分析如何进行需求分析 基本概念基本概念 为了得到用户的金钱,企业不得不鼓吹:用户就是上帝,用户永远是正确的。为了得到用户的金钱,企业不得不鼓吹:用户就是上帝,用户永远是正确的。 谁都知道这不是真的。事实上,很多时候用户说不清楚需求、会说错需求或者提谁都知道这不是真的。事实上
43、,很多时候用户说不清楚需求、会说错需求或者提出一些无法实现的需求。出一些无法实现的需求。需求分析是指在需求开发过程中,对所获取的需求信息进行分析,及时排除错误需求分析是指在需求开发过程中,对所获取的需求信息进行分析,及时排除错误和弥补不足,确保需求文档正确地反映用户的真实意图。和弥补不足,确保需求文档正确地反映用户的真实意图。 需求分析是需求开发过程中最费脑子的工作。分析方法大体有两类:需求分析是需求开发过程中最费脑子的工作。分析方法大体有两类:“问答分析问答分析法法”和和“建模分析法建模分析法”。后者技术性比较强,写出来有学术味,故大多数软。后者技术性比较强,写出来有学术味,故大多数软件工程
44、书籍都有论述。前者就是一些常识而已,虽然写不成文章,但是简单件工程书籍都有论述。前者就是一些常识而已,虽然写不成文章,但是简单易用(保你一学就会),很有实用价值。易用(保你一学就会),很有实用价值。 “问答分析法问答分析法”比较适合于用户需求调查阶段比较适合于用户需求调查阶段“建模分析法建模分析法”比较适合于产品需求定义阶段。比较适合于产品需求定义阶段。 Page 22. 如何进行需求分析如何进行需求分析 问答分析方法问答分析方法 问答分析方法很简单:刨根究底地问,如果问题都被解答了,那么需求问答分析方法很简单:刨根究底地问,如果问题都被解答了,那么需求也就分析清楚了。一个人可以也就分析清楚了
45、。一个人可以“自问自答自问自答”地分析需求,几个人分析地分析需求,几个人分析需求则称为需求则称为“研讨研讨”。 问答分析最重要的问题是:问答分析最重要的问题是:“是什么是什么”和和“为什么为什么”。每个需求都应当用陈述句说明每个需求都应当用陈述句说明“是什么是什么”,如果,如果“是什么是什么”的内涵不够的内涵不够清晰,则应补充说明清晰,则应补充说明“不是什么不是什么”。如果如果“是什么是什么”和和“不是什么不是什么”并不是并不是“理所当然理所当然”的,那么应当解释的,那么应当解释“为什么为什么”,以便加深读者的理解。,以便加深读者的理解。追究追究“是什么是什么”和和“为什么为什么”的目的是获得
46、正确、清楚的需求。的目的是获得正确、清楚的需求。 其它常见的问题有:其它常见的问题有: 需求存在二义性吗?需求存在二义性吗? 需求文档的上下文有矛盾吗?需求文档的上下文有矛盾吗? 需求完备吗?需求完备吗? 需求是必要的吗?需求是必要的吗? 需求可实现吗?需求可实现吗? 需求可验证吗?需求可验证吗? 需求的优先级确定了吗?需求的优先级确定了吗? Page 23. 如何进行需求分析如何进行需求分析 建模分析法建模分析法 人们都有这样地感受:有些时候用语言描述某个问题特别费劲,而采用人们都有这样地感受:有些时候用语言描述某个问题特别费劲,而采用图形则使人一目了然,所谓图形则使人一目了然,所谓“一图低
47、千言一图低千言”就是这个道理。就是这个道理。 在需求开发过程中,对于某些类型的信息,用图形表示要比文本表示更在需求开发过程中,对于某些类型的信息,用图形表示要比文本表示更加有效。所以将图形与文本结合起来描述需求是很自然的方法。加有效。所以将图形与文本结合起来描述需求是很自然的方法。需求建模就是指用图形符号来表示、刻画需求。需求建模就是指用图形符号来表示、刻画需求。建模分析方法主要有两大类:建模分析方法主要有两大类:“结构化分析法结构化分析法”和和“面向对象分析法面向对象分析法”。 恰当地使用图形符号:恰当地使用图形符号:现代建模工具如有非常丰富的图形符号和文字标注,能很好地表达模型现代建模工具
48、如有非常丰富的图形符号和文字标注,能很好地表达模型的细节。要注意的是:在建模时使用花样过多的图形符号或文字意味的细节。要注意的是:在建模时使用花样过多的图形符号或文字意味着模型表示的复杂化,将使开发人员更难掌握,而且使图形文档更加着模型表示的复杂化,将使开发人员更难掌握,而且使图形文档更加杂乱。杂乱。 世上不存在一个包罗万象的图世上不存在一个包罗万象的图它能完整地描述需求。需求建模不可它能完整地描述需求。需求建模不可能取代文字描述。在需求文档中,文字描述是第一重要的,建模主要能取代文字描述。在需求文档中,文字描述是第一重要的,建模主要是起分析、解释作用。建议将模型存放在需求文档的附录中,便于正
49、是起分析、解释作用。建议将模型存放在需求文档的附录中,便于正文引用。文引用。 Page 24. 如何进行需求分析如何进行需求分析 作出决策作出决策 当需求从四面八方收集来后,需求的冲突在所难免。对于那些难以达成当需求从四面八方收集来后,需求的冲突在所难免。对于那些难以达成共识的需求而言,经常会发生共识的需求而言,经常会发生“公说公有理,婆说婆有理公说公有理,婆说婆有理”的现象。的现象。那么需求分析员究竟应该听谁的呢?那么需求分析员究竟应该听谁的呢? 如果一群人对需求有争议,并不是谁声音最响就听谁的。根据生活经验如果一群人对需求有争议,并不是谁声音最响就听谁的。根据生活经验,最保险的办法是:先听
50、官儿大的或者威望高的,如果大家的职位和,最保险的办法是:先听官儿大的或者威望高的,如果大家的职位和威望都差不多,那么采用威望都差不多,那么采用“少数服从大多数少数服从大多数”的原则。的原则。如果一个产品可以卖给几类客户,但是各类客户都要求产品按照他们的如果一个产品可以卖给几类客户,但是各类客户都要求产品按照他们的喜好来开发。此时对需求的决策应当以商业利益为导向,喜好来开发。此时对需求的决策应当以商业利益为导向, 即哪一类客即哪一类客户出钱最多就先满足他们的需求,以后再做那些获利相对较少的需求户出钱最多就先满足他们的需求,以后再做那些获利相对较少的需求。 当开发者想象中的产品与客户所提的需求有冲