论坛首页 综合技术论坛

需求挖掘--操作步骤整理

浏览 1510 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-03-26  
需求挖掘是一个复杂,细致的研发工作,需要很好的沟通氛围,很强的谈话技巧,很迅速的逻辑整理理解能力,反向思维能力,很强的技术能力(迅速估计可行性)。

做需求挖掘,不要指望客户叫过来开个会,客户就会把需求原原本本,按部就班地告诉你,然后签字说一定不会改变。 其实所有的人,包括客户,对需求的理解都是片面的,朦胧的,这个挖掘的工作就是组织好所有的人,让他们对事情的认识,对业务的认识,对流程的认识,对操作的认识清晰化,最终形成文档。

前期需求分析做的越仔细,开发设计过程中所浪费的金钱就越少,需求分析过程中纠正了一个需求的Bug,挽回的损失是以万为单位计算的,而纠正这样的一个需求的Bug的花费,却可能只花几分钟,多说一两句话,多问一两个问题而已。


把需求挖掘分为三个阶段,准备阶段,业务理解阶段,摘要UseCase以及草图沟通阶段,详述Usecase以及用户体验设计阶段


(一)准备阶段:

确定好你要进行谈话的对象,这些对象可能有很多不同种类的人:

1. 客户方面的直接负责人:  这种人有拍板的能力,他能做的会是给你分配资源,确保你的工作能开展。但是通常,他可能不会直接使用到项目,具体细节不会太清楚。

2. 客户代表:  也就是参与者,需求代表着各方的利益,很可能不同角色的客户,在某个流程的需求处理上,会影响到自己的利益,或者是自己当前的工作习惯。这种权衡,调整就要请执行人来协调了。

3. 破坏者:  阻碍项目,唱反调的人。 他们的意见有时也很有参考价值,虚心接受,仔细分析他们产生想法的原因



确定好谈话对象之后,就该逐个建立良好的关系,营造好一种沟通的氛围。

千万不要小看这个过程,与一个陌生的人,和一个有点好感的人谈话,效果是差别很大的。谈话是需求挖掘的精髓,谈什么,怎么谈决定了成败。

1. 可以找机会主动接近下你的谈话对象,打个招呼,记住对方的名字,并大声说出来

2. 见面了问个容易回答的小问题,并给出你的赞美

3. 或者送个小礼物等等


主要的谈话对象应该是系统的各个参与者,他们都有各自的利益,目标,工作习惯,知识水平等,分析各个参与者的个体信息,明确对方的利益所在,你才能够挖掘到你想要的东西,从而达到双赢。


对于每个谈话对象所代表的群体,要预先整理出一个档案,明确写明对方的利益所在,其实不管对方的业务也好,流程也好等等都是以这个利益为中心的。 也许谈话过程中,对方会有很多你认为是荒诞的想法,但如果追溯到这个利益上面,你就能找到真正的原因。


目标,工作习惯,知识水平等这些简要描述,能帮助分析用户的内在原因。  用户有时候说的话,提出来一个步骤,说要怎么怎么做,其实并不是真的这么做就好,这个步骤也许是他拍脑袋想出来的,不完整,片面的,会损害到他人利益的。 这个时候作为需求挖掘人员,你的找打他这想法的内在驱动因素,然后和他讨论出一个更加完善,合适的方案。


总结起来,准备阶段需要做好三件事:  1.确定要谈话的对象   2. 和这些对象初步建立良好的关系  3. 整理出这些对象的档案



凡是预则立,不预则废, 有了准备之后,才有可能按部就班,进行良好的谈话。




(二)业务理解阶段:

每个真正的需求,都有其内在的驱动因素,但一旦被说出来,可能就会被各种各样的因素包裹住,从而让人对这个需求的理解产生偏差

谈需求前,先谈业务,有助于把握内因,真正了解用户目前在做什么,怎么做,之后,我们就能和用户一起想办法,进行改进,获得他们真正的需求。


理解业务其实很简单,系统性地问一系列的问题,就能挖出大部分的业务。已经有很多谈话高手,把这些问题整理出来了,我们所需要做的就是采用很好的方式去问这些问题,获得具体,清晰明了的答案,同时,在不同的情境中,这些问题可以不断地深化。 记住多问一个问题,就有可能多挽回数以万计资金的投入。



抽象层次,找出任务:

你整个组织的策略,目标是什么?
要实现你组织饿目标,你工作的具体目标是什么?
围绕这个目标,过去通常需要完成什么样的任务,用一句话概括你的每个任务?
对这些工作任务,将来有什么样的期待?



对任务分类整理:

哪些是通用任务,很多人都需要, 哪些是个人角色独有的任务?
每个任务的优先级如何?
任务之间有什么依赖的关系


对任务本身的研究:

这个任务由谁负责?
每个任务分哪几个步骤完成?
任务开始的前提条件是什么?
任务结束表示成功或者失败的标志是什么?
任务的输入输出是什么?
如何使用这些输入输出?
任务中一般有什么样的问题,以及异常的情况,突发的事故?
突发事故问题的原因是什么?影响有多大?一般如何应对的?
任务执行需要有什么样的技能?
任务是否对某些人或者事情有依赖性?
你在执行这个任务的时候,是处于一个什么样的角色?
你是亲自做这个任务还是指导别人去做?
一般完成这个任务你需要花多少时间,工作总量如何衡量?
你这个任务是为谁而做的?
这个任务有什么质量检测的指标吗?
你用什么软件工具,或其他工具来完成这个任务的?
你用的是一个软件还是一组软件?
任务过程中,有用到什么标准的格式或者模板吗?
任务中有没有谁来决定你用什么软件,或者工具?
你喜欢什么软件,或者不喜欢什么软件?
你期望什么软件能让你把这个工作做的更好,更迅速,更愉快?
这个任务中使用到的数据时如何获取的?
有没有能够重用到的数据?
如何跟踪到这个任务的效果?



以上的这些问题,摊开来可能有上百个,每个问题只是开个头,深入内容下去又会有更多的问题。这有助于挖掘人员,从客户代表那边挖掘出初步的业务,用户回答的每一个问题,都要仔细记录,确保充分理解。同时,如果遇到了不理解,或者比较模糊的细节业务,千万记得要寻根究底,一直问下去。这个时候就充分体现了营造一个很好谈话氛围,采用良好谈话技巧的重要性。


谈话高手能够让客户觉得自己被人关注了,受到尊重,从而讲起来滔滔不绝,不知疲倦,不厌其烦。 而粗鲁的挖掘者,则可能会让客户不停看手表,心理一直默念你有完没完。


(三)摘要UseCase以及草图沟通阶段:

了解到了用户的任务,那从任务中引申出UseCase,那就是自然而然的事情了,UseCase分三种类型:简述,摘要,和详述。  在这个阶段沟通任务还没完,我们需要设计好软件系统的UseCase,然后和用户确认。


这个时候摘要的UseCase是很合适的,通过一段简要文字的描述,讲清楚这个任务的主要成功场景,主要的失败场景。 这个UseCase不是给用户看的,只是为了我们写详述的UseCase的一个准备。


通过这个阶段的产出,摘要usecase, 我们可以开始绘制界面的草图。这个草图是指用铅笔,在白纸上,绘制好,并和客户一起讨论。用草图绘制出来的界面,看是否能够满足用户的需要。最好就是能鼓励用户自己画,挖掘人员从旁边进行指引。 


这个阶段其实有个很有意思的活动,叫做纸质界面测试,我们在纸上画出所有的界面,然后找个用户用户在纸上进行点击操作,而我们责像电脑一样,和用户交互,负责界面的切换。通过这样的活动,我们能够知道,用户是否能够轻易在我们的界面上完成他的任务,是否满足业务的需求。





(四)详述Usecase以及用户体验设计阶段


用户草图最终经过测试和筛选,得到了一个界面的主体框架,usecase的初步框架也整理出来了,在这个基础上,有两个事情需要做:

1.开展用户体验设计

完善界面的各个元素,可以采用相关的客户端技术(Extjs,Flex), 制作出Prototype

用户体验设计又是另外一个很大范畴的东西,包括布局,导航,文本,响应性等一系列的技巧




2.UseCase的整理

采用标准的格式编写UseCase,写UseCase也是很大一个范畴,有一定的模板,语言规范。

另外,需要着重提出来的是,UseCase需要关注错误场景的编写,挖掘,错误场景经常是容易被遗漏,从而导致损失的。




很多赶鸭子上架,充当需求分析人员的开发人员,往往没有前面任何铺垫,就直接开始第四个阶段的设计,这个时候肚子里面是没有货的,全部都是拍脑袋造出来的方案,耗时耗力,并且毫无用处。











论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics