用户需求分析 User Requirement Analysis
在系统设计之前和设计开发过程中对用户需求所作的调查与分析,是系统设计、系统完善和系统维护的依据.
把握用户需求,才能做出用户真正喜欢的网站。如果不考虑用户需求,网站的页面设计得再漂亮,功能再强大,也只能作为摆设,无法吸引到用户,更谈不上将网站用户变为你的客户。
1、用户类型划分
对用户需求的分析,首先要考虑的,就是用户类型。
网站是面对国外客户,还是国内客户?
网站是面对经销商,还是面对终端客户?
网站是面对家庭购买者,还是面对个人消费者?
网站是服务老客户为主,还是吸引新客户?
面对不同的用户类型,网站需要满足的用户需求也不同。
2、用户需求分析
确定好用户类型之后,接下来就是研究用户所关注的内容了。怎样确定用户关注哪些内容呢,除了向企业的销售人员调研,也可以做一个简单的“角色互换”思考,如果你是用户,那么你会从哪些方面来考察企业呢?如果你是用户,你会希望看到怎样的网站?
用户有哪几类?每一类用户的核心需求是什么?)
➢ 谁是用户:(什么样的人会使用我们的产品?)
➢ 用户分类:(将拥有共同特征或行为的用户聚类,形成典型用户)
➢ 用户特点:(人口统计信息、性格、爱好、需求特征等)
➢ 用户行为:(行为时间、地点、频率、习惯、消费等)
1)用户的明确需求
如产品的展示、公司的介绍、服务介绍等等,这些是属于用户最基础的需求,一般的企业网站都会有,但是不同网站之间的差别在于细节,比如产品应如何展示才更美观?公司介绍要怎样写才能突出企业优势呢?只有将细节做好,才能打动用户。
2)用户的潜在需求
除了满足用户的基础需求,网站策划者还要深入挖掘用户的潜在需求。比如,一种复杂的技术型产品,用户很可能需要及时的“技术咨询”以帮助了解;而一款家庭清洁的日化产品,如果网站有“家庭清洁常识”的介绍,相信会比单纯的产品介绍更吸引用户。
从“ 网络调研 ”到“ 网站诊断”,再到“用户需求分析”,网站策划者完成了网站规划前必要的准备工作,而接下来,才真正到了考验网站策划者功力时候了
风险躲在需求的迷雾之后
以上我们看到的是某客户项目经理与系统开发小组的分析人员讨论业务需求。在项目开发中,所有的
项目风险承担者都对需求分析阶段备感兴趣。这里所指的风险承担者包括客户方面的项目负责人和用户,开发方面的需求分析人员和项目管理者。这部分工作做得到位,能开发出很优秀的软件产品,同时也会令客户满意。若处理不好,则会导致误解、挫折、障碍以及潜在的质量和业务价值上的威胁。因此可见——需求分析奠定了软件工程和项目管理的基础。
拨开需求分析的迷雾
像这样的对话经常出现在软件开发的过程中。客户项目经理的需求对分析人员来讲,像“雾里看花”般模糊并令开发者感到困惑。那么,我们就拨开雾影,分析一下需求的具体内容:
1) ·业务需求——反映了组织机构或客户对系统、产品高层次的目标要求,通常在项目定义与范围文档中予以说明。
2) ·用户需求——描述了用户使用产品必须要完成的任务,这在使用实例或方案脚本中予以说明。
3) ·功能需求——定义了开发人员必须实现的软件功能,使用户利用系统能够完成他们的任务,从而满足了业务需求。
4) ·非功能性的需求——描述了系统展现给用户的行为和执行的操作等,它包括产品必须遵从的标准、规范和约束,操作接口的具体细节和构造上的限制。
5) ·需求分析报告——报告所说明的功能需求充分描述了软件系统所应具有的外部行为。“需求分析报告”在开发、测试、质量保证、项目管理以及相关项目功能中起着重要作用。
前面提到的客户项目经理通常阐明产品的高层次概念和主要业务内容,为后继工作建立了一个指导性的框架。其它任何说明都应遵循“业务需求”的规定,然而“业务需求”并不能为开发人员提供开发所需的许多细节说明。
下一层次需求——用户需求,必须从使用产品的用户处收集。因此,这些用户构成了另一种软件客户,他们清楚要使用该产品完成什么任务和一些非功能性的特性需求。例如:程序的易用性、健壮性和可靠性,而这些特性将会使用户很好地接受具有该特点的软件产品。
经理层有时试图代替实际用户说话,但通常他们无法准确说明“用户需求”。用户需求来自产品的真正使用者,必须让实际用户参与到收集需求的过程中。如果不这样做,产品很可能会因缺乏足够的信息而遗留不少隐患。
在实际需求分析过程中,以上两种客户可能都觉得没有时间与需求分析人员讨论,有时客户还希望分析人员无须讨论和编写需求说明就能说出用户的需求。除非遇到的需求极为简单;否则不能这样做。如果您的组织希望软件成功,那么必须要花上数天时间来消除需求中模糊不清的地方和一些使开发者感到困惑的方面。
优秀的软件产品建立在优秀的需求基础之上,而优秀的需求源于客户与开发人员之间有效的交流和合作。只有双方参与者都明白自己需要什么、成功的合作需要什么时,才能建立起一种良好的合作关系。
由于项目的压力与日俱增,所有项目风险承担者有着一个共同目标,那就是大家都想开发出一个既能实现商业价值又能满足用户要求,还能使开发者感到满足的优秀软件产品。
客户的需求观
客户与开发人员交流需要好的方法。下面建议20条法则,客户和开发人员可以通过评审以下内容并达成共识。如果遇到分歧,将通过协商达成对各自义务的相互理解,以便减少以后的磨擦(如一方要求而另一方不愿意或不能够满足要求)。
1、 分析人员要使用符合客户语言习惯的表达
需求讨论集中于业务需求和任务,因此要使用术语。客户应将有关术语(例如:采价、印花商品等采
购术语)教给分析人员,而客户不一定要懂得计算机行业的术语。
2、分析人员要了解客户的业务及目标
只有分析人员更好地了解客户的业务,才能使产品更好地满足需要。这将有助于开发人员设计出真正满足客户需要并达到期望的优秀软件。为帮助开发和分析人员,客户可以考虑邀请他们观察自己的工作流程。如果是切换新系统,那么开发和分析人员应使用一下目前的旧系统,有利于他们明白目前系统是怎样工作的,其流程情况以及可供改进之处。`
3、 分析人员必须编写软件需求报告
分析人员应将从客户那里获得的所有信息进行整理,以区分业务需求及规范、功能需求、质量目标、解决方法和其它信息。通过这些分析,客户就能得到一份“需求分析报告”,此份报告使开发人员和客户之间针对要开发的产品内容达成协议。报告应以一种客户认为易于翻阅和理解的方式组织编写。客户要评审此报告,以确保报告内容准确完整地表达其需求。一份高质量的“需求分析报告”有助于开发人员开发出真正需要的产品。
4、 要求得到需求工作结果的解释说明
分析人员可能采用了多种图表作为文字性“需求分析报告”的补充说明,因为工作图表能很清晰地描述出系统行为的某些方面,所以报告中各种图表有着极高的价值;虽然它们不太难于理解,但是客户可能对此并不熟悉,因此客户可以要求分析人员解释说明每个图表的作用、符号的意义和需求开发工作的结果,以及怎样检查图表有无错误及不一致等。
5、 开发人员要尊重客户的意见
如果用户与开发人员之间不能相互理解,那关于需求的讨论将会有障碍。共同合作能使大家“兼听则明”。参与需求开发过程的客户有权要求开发人员尊重他们并珍惜他们为项目成功所付出的时间,同样,客
户也应对开发人员为项目成功这一共同目标所做出的努力表示尊重。
6、 开发人员要对需求及产品实施提出建议和解决方案
通常客户所说的“需求”已经是一种实际可行的实施方案,分析人员应尽力从这些解决方法中了解真正的业务需求,同时还应找出已有系统与当前业务不符之处,以确保产品不会无效或低效;在彻底弄清业务领域内的事情后,分析人员就能提出相当好的改进方法,有经验且有创造力的分析人员还能提出增加一些用户没有发现的很有价值的系统特性。
7、 描述产品使用特性
客户可以要求分析人员在实现功能需求的同时还注意软件的易用性,因为这些易用特性或质量属性能使客户更准确、高效地完成任务。例如:客户有时要求产品要 “接口友好”或“健壮”或“高效率”,但对于开发人员来讲,太主观了并无实用价值。正确的做法是,分析人员通过询问和调查了解客户所要的“友好、健壮、高效所包含的具体特性,具体分析哪些特性对哪些特性有负面影响,在性能代价和所提出解决方案的预期利益之间做出权衡,以确保做出合理的取舍。
8、 允许重用已有的软件组件
需求通常有一定灵活性,分析人员可能发现已有的某个软件组件与客户描述的需求很相符,在这种情况下,分析人员应提供一些修改需求的选择以便开发人员能够降低新系统的开发成本和节省时间,而不必严格按原有的需求说明开发。所以说,如果想在产品中使用一些已有的商业常用组件,而它们并不完全适合您所需的特性,这时一定程度上的需求灵活性就显得极为重要了。
9、 要求对变更的代价提供真实可靠的评估
有时,人们面临更好、也更昂贵的方案时,会做出不同的选择。而这时,对需求变更的影响进行评估从而对业务决策提供帮助,是十分必要的。所以,客户有权利要求开发人员通过分析给出一个真实可信的评
估,包括影响、成本和得失等。开发人员不能由于不想实施变更而随意夸大评估成本。
10、 获得满足客户功能和质量要求的系统
每个人都希望项目成功,但这不仅要求客户要清晰地告知开发人员关于系统“做什么”所需的所有信息,而且还要求开发人员能通过交流了解清楚取舍与限制,一定要明确说明您的假设和潜在的期望,否则,开发人员开发出的产品很可能无法让您满意。
11、 给分析人员讲解您的业务
分析人员要依靠客户讲解业务概念及术语,但客户不能指望分析人员会成为该领域的专家,而只能让他们明白您的问题和目标;不要期望分析人员能把握客户业务的细微潜在之处,他们可能不知道那些对于客户来说理所当然的“常识”。
12、 抽出时间清楚地说明并完善需求
客户很忙,但无论如何客户有必要抽出时间参与“头脑高峰会议”的讨论,接受采访或其它获取需求的活动。有些分析人员可能先明白了您的观点,而过后发现还需要您的讲解,这时请耐心对待一些需求和需求的精化工作过程中的反复,因为它是人们交流中很自然的现象,何况这对软件产品的成功极为重要。
13、 准确而详细地说明需求
编写一份清晰、准确的需求文档是很困难的。由于处理细节问题不但烦人而且耗时,因此很容易留下模糊不清的需求。但是在开发过程中,必须解决这种模糊性和不准确性,而客户恰恰是为解决这些问题作出决定的最佳人选,否则,就只好靠开发人员去正确猜测了。
在需求分析中暂时加上“待定”标志是个方法。用该标志可指明哪些是需要进一步讨论、分析或增加信息的地方,有时也可能因为某个特殊需求难以解决或没有人愿意处理它而标注上“待定”。客户要尽量将
每项需求的内容都阐述清楚,以便分析人员能准确地将它们写进“软件需求报告”中去。如果客户一时不能准确表达,通常就要求用原型技术,通过原型开发,客户可以同开发人员一起反复修改,不断完善需求定义。
14、 及时作出决定
分析人员会要求客户作出一些选择和决定,这些决定包括来自多个用户提出的处理方法或在质量特性冲突和信息准确度中选择折衷方案等。有权作出决定的客户必须积极地对待这一切,尽快做处理,做决定,因为开发人员通常只有等客户做出决定才能行动,而这种等待会延误项目的进展。
15、 尊重开发人员的需求可行性及成本评估
所有的软件功能都有其成本。客户所希望的某些产品特性可能在技术上行不通,或者实现它要付出极高的代价,而某些需求试图达到在操作环境中不可能达到的性能,或试图得到一些根本得不到的资料。开发人员会对此作出负面的评价,客户应该尊重他们的意见。
16、 划分需求的优先级
绝大多数项目没有足够的时间或资源实现功能性的每个细节。决定哪些特性是必要的,哪些是重要的,是需求开发的主要部分,这只能由客户负责设定需求优先级,因为开发者不可能按照客户的观点决定需求优先级;开发人员将为您确定优先级提供有关每个需求的花费和风险的信息。
在时间和资源限制下,关于所需特性能否完成或完成多少应尊重开发人员的意见。尽管没有人愿意看到自己所希望的需求在项目中未被实现,但毕竟是要面对现实,业务决策有时不得不依据优先级来缩小项目范围或延长工期,或增加资源,或在质量上寻找折衷。
17、 评审需求文档和原型
客户评审需求文档,是给分析人员带来反馈信息的一个机会。如果客户认为编写的“需求分析报告”
不够准确,就有必要尽早告知分析人员并为改进提供建议。
更好的办法是先为产品开发一个原型。这样客户就能提供更有价值的反馈信息给开发人员,使他们更好地理解您的需求;原型并非是一个实际应用产品,但开发人员能将其转化、扩充成功能齐全的系统。
18、 需求变更要立即联系
不断的需求变更,会给在预定计划内完成的质量产品带来严重的不利影响。变更是不可避免的,但在开发周期中,变更越在晚期出现,其影响越大;变更不仅会导致代价极高的返工,而且工期将被延误,特别是在大体结构已完成后又需要增加新特性时。所以,一旦客户发现需要变更需求时,请立即通知分析人员。
19、 遵照开发小组处理需求变更的过程
为将变更带来的负面影响减少到最低限度,所有参与者必须遵照项目变更控制过程。这要求不放弃所有提出的变更,对每项要求的变更进行分析、综合考虑,最后做出合适的决策,以确定应将哪些变更引入项目中。
20、 尊重开发人员采用的需求分析过程
软件开发中最具挑战性的莫过于收集需求并确定其正确性,分析人员采用的方法有其合理性。也许客户认为收集需求的过程不太划算,但请相信花在需求开发上的时间是非常有价值的;如果您理解并支持分析人员为收集、编写需求文档和确保其质量所采用的技术,那么整个过程将会更为顺利。
“需求确认”意味着什么
在“需求分析报告”上签字确认,通常被认为是客户同意需求分析的标志行为,然而实际操作中,客户往往把“签字”看作是毫无意义的事情。“他们要我在需求文档的最后一行下面签名,于是我就签了,否则这些开发人员不开始编码。”
这种态度将带来麻烦,譬如客户想更改需求或对产品不满时就会说:“不错,我是在需求分析报告上签了字,但我并没有时间去读完所有的内容,我是相信你们的,是你们非让我签字的。”
同样问题也会发生在仅把“签字确认”看作是完成任务的分析人员身上,一旦有需求变更出现,他便指着“需求分析报告”说:“您已经在需求上签字了,所以这些就是我们所开发的,如果您想要别的什么,您应早些告诉我们。”
这两种态度都是不对的。因为不可能在项目的早期就了解所有的需求,而且毫无疑问地需求将会出现变更,在“需求分析报告”上签字确认是终止需求分析过程的正确方法,所以我们必须明白签字意味着什么。
对“需求分析报告”的签名是建立在一个需求协议的基线上,因此我们对签名应该这样理解:“我同意这份需求文档表述了我们对项目软件需求的了解,进一步的变更可在此基线上通过项目定义的变更过程来进行。我知道变更可能会使我们重新协商成本、资源和项目阶段任务等事宜。”对需求分析达成一定的共识会使双方易于忍受将来的摩擦,这些摩擦来源于项目的改进和需求的误差或市场和业务的新要求等。
需求确认将迷雾拨散,显现需求的真面目,给初步的需求开发工作画上了双方都明确的句号,并有助于形成一个持续良好的客户与开发人员的关系,为项目的成功奠定了坚实的基础。
如何制定用户需求调研计划?
1、是确定自己想要解决的问题。针对问题设置问卷,问卷中问题不应太直接,容易干扰被访者。
2、确定目标受众人群,目标受众是谁?业务?老板?这个你应该比我了解。
3、确定调查方法
4、试访,试着问几个人,看问卷与调研方法能否解决你的问题。不行修改。
5、开始访问,数据收集。控制质量最关键。
6、数据处理、分析。其实不用考虑什么分析模型,只要能解决你企业的实际问题就OK。当然在数据分析过程中,你会发现有些问题没有解决,或有些数据有疑问,别猜,尽快针对特定问题进行补防。市场调研质量最重要,千万不要主观意识去猜。
7、报告拟写,过程中需要收集一些文案信息加以补充。
用户需求说明书--样本
1、 项目描述
1) 描述本项目的适用场合及处理业务。
2) 项目名称:本项目的名称,包括项目的全名、简称、代号、版本号。
3) 名词定义:对重要的或是具有特殊意义的名词进行定义。
2、 调研情况介绍:
描述主要的调研活动及对象。
3、 用户情况描述
1) 用户业务描述:描述本项目的用户使用本项目处理的业务。
2) 用户情况:介绍本项目的用户的情况,包括:
用户的工作流程;
用户的相关部门及职责;
用户的技术水平;
3) 用户原有系统的情况:介绍用户现在使用的系统的主要情况,包括主要的不足。
4、 任务概述
1) 目标
阐明本项目所需达到的目的。
2) 运行环境
硬件环境:
详细列出本软件运行时所必须的最低硬件配置、推荐硬件配置(如主机、显示器、外部设备等)以及其它特殊设备。
软件环境:
如操作系统、网络软件、数据库系统以及其它特殊软件要求。
3) 条件与限制
说明本软件在实现时所必须满足的条件和所受的限制,以及相应的原因。必须满足的条件包括输入数据
的范围以及格式,所受的限制包括软件环境、硬件环境等方面的内容。
5、 功能需求
1) 功能划分
从用户的角度将产品按功能划分成不同的部分,但应注意此处划分成的部分并不对应于最终程序实现时的不同功能模块。
2) 功能描述
细化由功能划分所生成的各部分的内容,应包括下列内容:
a. 必须完成的功能以及对此功能的详细描述:
按功能类型分类,逐条列出本软件所能完成的各项功能以及对此功能的详细描述。
b. 不支持的功能以及相应的原因:
列出本软件所不支持的各项功能以及相应的原因。
此部分内容务必详细准确、无二义性,以作为将来验收和测试的标准。
6、 数据描述
1) 输入/输出数据
说明输入输出数据的类型及格式。
2) 数据流图
从数据传递和加工的角度描述的数据流图,此数据流图不包含任何有关实现的内容,只是从最上层对有关内容加以描述。数据流图的表述形式参见软件工程中的有关规定。
3) 数据库描述(可选)
根据系统的总目标和范围,定义数据库的逻辑特性及物理特性。
4) 数据词典
对于数据流图中出现所有被命名的图形元素在数据词典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。
7、 性能需求
1) 数据精确度
根据实际情况,确定软件最终输出数据(包括传输中)的数据精确度。
2) 时间特性
说明开发的软件在响应时间、更新处理时间、数据转换与传输时间、运行时间等方面所需达到的时间特性。
3) 适应性
a. 复用性:
说明本项目是否可以复用已有软件、是否可为其它产品复用。
b. 灵活性:
说明在运行环境、与其他软件的接口以及开发计划等发生变化时,应具有的适应能力。
8、 运行需求
1) 用户界面
说明本软件的人机界面风格。
2) 硬件接口
说明该软件与硬件之间各接口的逻辑特点及运行该软件的硬件设备特征。
3) 软件接口
说明该软件与其它软件之间接口,对于每个需要的软件,应提供
a. 接口名称:b. 规格说明:c. 版本号:
4) 故障处理
说明本软件在健壮性方面所需达到的目标。
9、 不确定的问题
说明目前尚未确定的问题及处理的计划。
10、 风险分析
说明本项目面临的主要风险,包括时间、技术复杂度、人力资源等。
11、 其它需求
如可使用性、安全保密、可维护性、可移植性等。
特殊要求:由用户提出的,或是本公司要求的特殊要求、特殊的情况等。
12、 参考资料:
填写要求:列出参考引用的资料的名称,并附原文。
13、 编写人员及编写日期
列出参与编写的人员的名字,并标明负责人。
因篇幅问题不能全部显示,请点此查看更多更全内容