一、什么是需求调研?
  需求调研对于一个应用软件开发来说,是一个系统开发的开始阶段,它的输出“软件需求分析报告”是设计阶段的输入,需求调研的质量对于一个应用软件来说,是一个极其重要的阶段,它的质量在一定程度上来说决定了一个软件的交付结果。怎样从客户中听取用户需求、分析用户需求成为调研人员重要的任务。
  需求调研是为需求说明书撰写做前期工作,需求说明书是从需求调研表中得到或抽取而出;是了解实际工作中真正需要什么样的程序的过程,再把这些需求细节整理由设计部开发,给用户使用。
  需求调研,特别是合同额已经确定的项目的需求调研,像外交一样,实际上是一种策略艺术,它是在和客户相互尊重、平等互利的基础上,不卑不亢的去交流沟通,守住我方底线,尽可能的争取有利于我方条件,在完成任务的同时,还能赢得客户的理解和尊重。
  需求调研,简而言之是和客户进行谈话沟通,把客户的想法和要求记录下来,后整理成为《用户需求说明》,以便进行下一步的需求分析、系统设计等,正因为后面的需求分析、系统设计,乃至开发等等都以需求调研的内容为依据,那么需求调研质量的好坏直接决定了软件系统的好坏,也即项目的成败。
  通常我们一提到某个系统,感觉上应该始终是一个东西,但其实在不同人眼里,可能是不一样的,比如按照一般软件开发过程来说,有如下几种:
  1.客户实际需要的软件
  2.客户头脑中想要的软件
  3.调研人员调研后的软件
  4.设计人员设计出来的软件
  5.开发人员开发完成的软件
  (这里特别注意客户实际要的软件和客户头脑中想要的软件可能并不是一个东西)
  如果上述中间各个过程都有理解偏差,那么很可能出现终开发完成的软件和客户实际需要的软件差异较大,一个失败的或者做的不好的项目,往往原因在这里。
  而且还有一点,上述过程中,越往后,修改这些偏差要付出的代价越大,直到你无法承受。那么,保证你调研出来的需求和客户实际的需求以及客户头脑中想要的三者保持一致,并且这个需求在开发上是能够实现并且容易实现,是每一个需求调研人员努力要做到的。
  二、项目类需求调研的特点
  1.《需求规格说明书》的出具比较仓促,质量低
  (1).不切实际的工期(需求调研成了走过场)
  (2).用户方怕担责任的心态(模棱两可的说法)
  (3).认知程度的限制(项目达到的预期是什么?调研人员错误的理解,怕引出额外诉求)
  (4).迫于工期压力,各方妥协签字了(没有争取广泛的支持)
  2.大部分需求是《需求规格说明书》出来以后出来的
  (1).程序被迫使用,与切身利益相关,被迫重视(流程、易用性、工作量全来了)
  (2).用户认知程度逐渐被引导,使用积极性提高,提出更多的功能诉求
  注意把握这些问题要点,在实际操作中注意规避相关错误要点,正确很好的引导客户,把需求调研向良性的方向发展。
  三、需求调研的前期准备
  1.确定调研工具
  选取需求调研过程中的一些辅助工具,选取要求是自己(本组)熟悉的工具, 工具好也是要求是普通流行的,因为要考虑交流的问题。
  如:原型、草绘图、WORD、EXCEL、PPT、POWERDESIGNER、STARTUML等。
  这里只强调原型化方法,原型化方法是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能。建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性、技术的可行性或考察是否满足用户的需求等。如:为了考察是否满足用户的要求,可以用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,然后听取用户的意见,改进这个原型。以后的目标系统在原型系统的基础上开发。
  原型主要有三种类型:探索型、实验型、进化型。
  探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性;
  实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠。
  进化型:目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成终系统。
  在使用原型化方法时有两种不同的策略:废弃策略、追加策略。
  废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成比较好的思想,据此设计出较完整、准确、一致、可靠的终系统。系统构造完成后,原来的模型系统被废弃不用。探索型和实验型属于这种策略。
  追加策略:先构造一个功能简单而且质量要求不高的模型系统,作为终系统的核心,然后通过不断地扩充修改,逐步追加新要求,发展成为终系统。进化型属于这种策略。
  2.调研项目前期情况
  对象:售前人员、商务人员、项目经理;
  内容:招标书、答标书、合同、以及其他与用户交流的口头或书面材料(包括宣传、承诺等)
  甲方行业情况的了解、好看一些行业方面的书籍,学习业务领域知识。
  了解客户、项目的背景,如果事先客户给过类似的《软件初步思路》之类原始需求文档,那么首先弄懂这个文档,了解客户的目的,为什么要做这个软件,主要想解决什么问题,涉及的业务有哪些等等,这些调研准备的基础。
  根据了解的初步用户需求,分析可能的难点在什么地方,列出这些难点。做到心中有数,并且记录前面了解需求的过程中不明白的地方,便于到现场后及时和客户沟通。