教用户如何获得需求

romail 2004-11-30 10:59:01
我们现在在做一个项目,规定由客户提供需求,但由我们告诉他们如何获得需求,我该如何教他们如何做呢?而且要如何写需求的格式呢?望高手不吝赐教.
...全文
403 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonesky 2004-12-07
  • 打赏
  • 举报
回复
"由客户提供需求",也许认为公司可以减少一些工作量,但未必是好事,还是需要去详细了解客户的需求,工作量实际上没有减少多少。
有些客户的确能提出来,而且能写成比较详细的文档,这样做的前提是客户有能力完成这些事情。如果还需要你来指导他们怎么做需求,如果处理不好,项目做砸都有可能,除非是一个很小的项目。

由客户提供需求,关键的问题是客户把他们的业务能够表达出来,比如某系统业务流程是关键因素,那么你要求他们的写出流程是什么样的,委托开发的项目该怎么处理这些流程
如果你比较熟悉需求,其他问题好说了
futuredreams 2004-12-07
  • 打赏
  • 举报
回复
需求开发的目的是通过调查与分析,获取用户需求并定义产品需求。
需求调查的目的是通过各种途径获取用户的需求信息(原始材料),产生《用户需求说明书》。
需求分析的目的是对各种需求信息进行分析,消除错误,刻画细节等。常见的需求分析方法有“问答分析法”和“建模分析法”两类。
需求定义的目的是根据需求调查和需求分析的结果,进一步定义准确无误的产品需求,产生《产品需求规格说明书》。系统设计人员将依据《产品需求规格说明书》开展系统设计工作。
需求管理的目的是在客户与开发方之间建立对需求的共同理解,维护需求与其它工作成果的一致性,并控制需求的变更。
需求确认是指开发方和客户共同对需求文档进行评审,双方对需求达成共识后作出书面承诺,使需求文档具有商业合同效果。
需求跟踪是指通过比较需求文档与后续工作成果之间的对应关系,建立与维护“需求跟踪矩阵”,确保产品依据需求文档进行开发。
需求变更控制是指依据“变更申请-审批-更改-重新确认”的流程处理需求的变更,防止需求变更失去控制而导致项目发生混乱。
还有什么好的经验或者问题,大家一起探讨,互相学习,一起进步吧。
futuredreams 2004-12-07
  • 打赏
  • 举报
回复
hehe,那补充一个文档规范:
1. 产品介绍
提示:
(1)说明产品是什么,什么用途。
(2)介绍产品的开发背景。

2. 产品面向的用户群体
提示:
(1)描述本产品面向的用户(客户、最终用户)的特征,
(2)说明本产品将给他们带来什么好处?他们选择本产品的可能性有多大?

3. 产品应当遵循的标准或规范
提示:阐述本产品应当遵循什么标准、规范或业务规则(Business Rules),违反标准、规范或业务规则的产品通常不太可能被接受。

4. 产品范围
提示:阐述本产品“适用的领域”和“不适用的领域”,本产品“应当包含的内容”和“不包含的内容”。说清楚产品范围的好处是:(1)有助于判断什么是需求,什么不是需求;(2)可以将开发精力集中在产品范围之内,少干吃力不讨好的事情;(3)有助于控制需求的变更。

5. 产品中的角色
提示:阐述本产品的各种角色及其职责。各种角色的具体行为将在功能性需求中描述。

角色名称 职责描述





6. 产品的功能性需求
6.0 功能性需求分类
提示:将功能性需求先粗分再细分,下表中的 Feature A, Function A.1等符号应当被替换成有含义的名称。
功能类别 功能名称、标识符 描述
Feature A Function A.1

Feature B Function B.1

Feature C Function C.1


6.m Feature M
提示:此处写一些承上启下的文字。
6.m.n Function M.N
名称、标识符
功能描述
优先级
输入
操作序列
输出
补充说明

……
7. 产品的非功能性需求
7.1 用户界面需求
需求名称 详细要求



7.2 软硬件环境需求
需求名称 详细要求



7.3 产品质量需求
主要质量属性 详细要求
正确性
健壮性
可靠性
性能,效率
易用性
清晰性
安全性
可扩展性
兼容性
可移植性

7.n 其它需求


附录A:需求建模与分析报告
建议用Rational Rose对产品需求进行建模与分析。
A.1 需求模型1

A.n 需求模型N
mengbo 2004-12-07
  • 打赏
  • 举报
回复
up ....
cacu 2004-12-03
  • 打赏
  • 举报
回复
根据测不准原理,用户需求本来不存在,只有设计完成后用户需求才会清兮的存在
romail 2004-12-03
  • 打赏
  • 举报
回复
有一定帮助,不过这些是在网上有的
romail 2004-12-03
  • 打赏
  • 举报
回复
正在看啊
nbnasom 2004-12-03
  • 打赏
  • 举报
回复
学习ING
bigpig 2004-12-03
  • 打赏
  • 举报
回复
futuredreams(鱼儿)洋洋洒洒N千字啊,楼主不知道这个对你有帮助否,讨论一下吧.
TScom 2004-12-01
  • 打赏
  • 举报
回复
需求本来就是客户的需求,何来教客户获取?应该是你来获取的才对吧,可以参照多方面的书籍,有许多需求获取的方法。
futuredreams 2004-12-01
  • 打赏
  • 举报
回复
继续上面的:
需求获取是一个需要高度合作的活动,而并不是客户所说的需求的简单誊本。作为一个分析者,你必须透过客户所提出的表面需求理解他们的真正需求。询问一个可扩充(open-ended)的问题有助于你更好地理解用户目前的业务过程并且知道新系统如何帮助或改进他们的工作。调查用户任务可能遇到的变更,或者用户需要使用系统其它可能的方式。想像你自己在学习用户的工作,你需要完成什么任务?你有什么问题?从这一角度来指导需求的开发和利用。

还有,探讨例外的情况:什么会妨碍用户顺利完成任务?对系统错误情况的反映,用户是如何想的?询问问题时,以“还有什么能” ,”当…时,将会发生什么”“你有没有曾经想过” ,“有没有人曾经”为开头。记下每一个需求的来源,这样向下跟踪直到发现特定的客户。
有些时候,尝试着问一些“愚蠢”的问题也有助于客户打开话匣子。如果你直接要求客户写出业务是如何实现的,客户十有八九无法完成。但是如果你尝试着问一些实际的问题,例如:“以我的理解,你们收到订单后,会...”。客户立刻就会指出你的错误,并滔滔不绝的开始谈论业务,而你,就在一边仔细的聆听吧。这一招就叫做“抛砖引玉”。
需求讨论会上必须要使用笔记本电脑,还要指定一个打字熟练的人把所有的讨论记录下来,记录的同时还要做一定的整理。如果不这样做,那么你结束会议的时候就会发现,所有的讨论只剩下一个模糊的印象,需求对你来说仍然是一件遥远的事情。在座谈讨论之后,记下所讨论的条目(item),并请参与讨论的用户评论并更正。及早并经常进行座谈讨论是需求获取成功的一个关键途径,因为只有提供需求的人才能确定是否真正获取需求。进行深入收集和分析以消除任何冲突或不一致性。
尽量把客户所持的假设解释清楚,特别是那些发生冲突的部分。从字里行间去理解以明确客户没有表达清楚但又想加入的特性或特征。Gause 和Weinberg(1989)提出使用“上下文无关问题”?这是一个高层次的问题,它可以获取业务问题和可能的解决方案的全部信息。客户对这些问题的回答诸如“产品要求怎样的精确度”或“你能帮我解释一下你为什么不同意某人的回答吗?”这些回答可以更直接地认识问题,而这是封闭(close-end)问题所不能做到的。
需求获取利用了所有可用的信息来源,这些信息描述了问题域或在软件解决方案中合理的特性。一个研究表明:比起不成功的项目,一个成功的项目在开发者和客户之间采用了更多的交流方式(Kiel and Carmel 1995)。与单个客户或潜在的用户组一起座谈,对于业务软件包或信息管理系统(MIS)的应用来说是一种传统的需求来源。直接聘请用户进行获取需求的过程是为项目获得支持和买入(buy-in)的一种方式。
尽量理解用户用于表述他们需求的思维过程。充分研究用户执行任务时作出决策的过程,并提取出潜在的逻辑关系。流程图和决策树是描述这些逻辑决策途径的好方法。
在需求获取的过程中,你可能会发现对项目范围的定义存在误差,不是太大就是太小。如果范围太大,你将要收集比真正需要更多的需求,以传递足够的业务和客户的值,此时获取过程将会拖延。如果项目范围太小,那么客户将会提出很重要的但又在当前产品范围之外的需求。当前的范围太小,以致不能提供一个令人满意的产品。需求的获取将导致修改项目的范围和任务,但作出这样具有深远影响的改变,一定要小心谨慎。
正如经常所说的,需求主要是关于系统做什么,而解决方案如何实现是属于设计的范围。这样说虽然很简洁,但似乎过于简单化。需求的获取应该把重点放在“做什么”上,但在分析和设计之间还是存在一定的距离。你可以使用假设“怎么做”来分类并改善你对用户需求的理解。在需求的获取过程中,分析模型、屏幕图形和原型可以使概念表达得更加清楚,然后提供一个寻找错误和遗漏的办法。把你在需求开发阶段所形成的模型和屏幕效果看成是方便高效交流的概念性建议,而不应该看成是对设计者选择的一种限制。
需求获取讨论会中如果参与者过多,就会减慢进度。人数大致控制在5到7人是最好的。这些人包括客户、系统设计者、开发者和可视化设计者等主要工程角色。相反地,从极少的代表那里收集信息或者只听到呼声最高、最有舆论影响的用户的声音,也会造成问题。这将导致忽视特定用户类的重要的需求,或者其需求不能代表绝大多数用户的需要。最好的权衡在于选择一些授权为他们的用户类发言的产品代表者,他们也被同组用户类的其它代表所支持。
没有一个简单、清楚的信号暗示你什么时候已完成需求获取。当客户和开发者与他们的同事聊天、阅读工业和商业上的文献及在早上沐浴时思考时,他们都将对潜在产品产生新的构思。你不可能全面收集需求,但是下列的提示将会暗示你在需求获取的过程中的返回点。
1. 如果用户不能想出更多的使用实例,也许你就完成了收集需求的工作。用户总是按其重要性的顺序来确定使用实例的。
2. 如果用户提出新的使用实例,但你可以从其它使用实例的相关功能需求中获得这些新的使用实例,这时也许你就完成了收集需求的工作。这些新的使用实例可能是你已获取的其它使用实例的可选过程。
3. 如果用户开始重复原先讨论过的问题,此时,也许你就完成了收集需求的工作。
4. 如果所提出的新需求比你已确定的需求的优先级都低时,也许你就完成了收集需求的工作。
5. 如果用户提出对将来产品的要求,而不是现在我们讨论的特定产品,也许你就完成了收集需求的工作。
以上知识大致上讨论需求分析应该如何做,实际上对于需求分析的方法有很多很多,已经形成了一定的理论,当然这种理论比较偏向与方法学,而方法学的应用主要还是要靠个人。所以,大家在实际应用的时候,不妨结合自己的实际,有选择性的采用一些方法,那你就是成功的。
futuredreams 2004-12-01
  • 打赏
  • 举报
回复
嗯,我总结了一些经验,不知道有没有帮助:
很多人认为用户不知道自己要什么,其实用户只是不能很好的描述出自己需要的东西,在这里原型设计和页面设计就显得非常重要了。
由与用户接触最紧密的售前部门参考竞争对手相关产品的特点并详细了解用户工作的特点和需要后写出一份用户调查问卷用来帮助用户选择和描述他们的需求,对于每个应用功能都有优先级排序和对效率、稳定性、安全性等不同方面的特殊要求。记录用户需求并整理归档,根据项目进度确定功能点,根据功能点估算人力时间分配。
让用户或者潜在用户成为长期联系和对项目进行指导的人员,负责易用性的人员和设计部门的人员需要多跟用户取得联系并听取用户对已经看到的设计方案或者功能提出的改进意见。
需求分析有很多方法,不要试图在你的项目中把这些方法都用上去。同样,尝试着使用你认为对你很有帮助的方法,确实收到效果之后,在考虑继续学习方法。因为上面提到的都是需求分析的大方法,事实上还有很多很多的方法可以采用,例如,采用SRS模板、指明需求的来源、为每项需求注上标号、记录业务规范、创建需求跟踪能力矩阵、审查需求文档、以需求为依据编写测试用例、编写用户手册、确定合格的标准。
1. 绘制系统关联图,这种关联图是用于定义系统与系统外部实体间的界限和接口的简单模型。同时它也明确了通过接口的信息流和物质流。
2. 创建用户接口原型,当开发人员或用户不能确定需求时,开发一个用户接口原型?一个可能的局部实现?这样使得许多概念和可能发生的事更为直观明了。用户通过评价原型将使项目参与者能更好地相互理解所要解决的问题。注意要找出需求文档与原型之间所有的冲突之处。
3. 分析需求可行性,在允许的成本、性能要求下,分析每项需求实施的可行性,明确与每项需求实现相联系的风险,包括与其它需求的冲突,对外界因素的依赖和技术障碍。
4. 确定需求的优先级别,应用分析方法来确定使用实例、产品特性或单项需求实现的优先级别。以优先级为基础确定产品版本将包括哪些特性或哪类需求。当允许需求变更时,在特定的版本中加入每一项变更,并在那个版本计划中作出需要的变更。
5. 为需求建立模型,需求的图形分析模型是软件需求规格说明极好的补充说明。它们能提供不同的信息与关系以有助于找到不正确的、不一致的、遗漏的和冗余的需求。这样的模型包括数据流图、实体关系图、状态变换图、对话框图、对象类及交互作用图。
6. 创建数据字典,数据字典是对系统用到的所有数据项和结构的定义,以确保开发人员使用统一的数据定义。在需求阶段,数据字典至少应定义客户数据项以确保客户与开发小组是使用一致的定义和术语。分析和设计工具通常包括数据字典组件。
7. 使用质量功能调配,(QFD)是一种高级系统技术,它将产品特性、属性与对客户的重要性联系起来。该技术提供了一种分析方法以明确那些是客户最为关注的特性。QFD将需求分为三类:期望需求,即客户或许并未提及,但如若缺少会让他们感到不满意;普通需求;兴奋需求,即实现了会给客户带去惊喜,但若未实现也不会受到责备(Zultner 1993;Pardee 1996)。
romail 2004-11-30
  • 打赏
  • 举报
回复
你说的是常规的方法,但是这次我们是让用户自己做需求.问题是客户往往不能说出系统的样子,或者说他们也说不出自己的需求.
bigpig 2004-11-30
  • 打赏
  • 举报
回复
你把你的人找来,把客户找来,让客户说出他们希望这个系统是什么样子,你们记录下来,并且把你们记录的东西不断的给客户反馈整理,然后你们根据一些标准文档,比如国标文档,写出需求文档,签合同.开发
上面说的就是最简单的获取方式.根据你们自己的分析方式来指定如何获取需求是最重要的.
详细的可以写N本书.
spgoal 2004-11-30
  • 打赏
  • 举报
回复
你应该给项目相关的一些问题,让他们回答,引导他们
bigpig 2004-11-30
  • 打赏
  • 举报
回复
我上面说的例子不是什么常规方法,是简化的方法,实际情况还有很多情况需要做改变的.只拿上面几条的根本行不通的.另外不大理解你说的[让用户自己做需求],其实个人认为客户能做的就是业务模型的建立.
bigpig 2004-11-30
  • 打赏
  • 举报
回复
把你的客户拉出去做培训吧,我觉得你们都不清楚这个需求怎么做,就更不可能给客户讲清楚了
还有你说[让用户自己做需求]不晓得是不是说让用户提交给你们需求说明,然后你们在根据这个说明做分析,难道你们不参与客户的这个确立需求的过程么?

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧