我们知道,软件开发是由需求驱动的,需求是源于用户的需要,这是一个基本原则,但是“需要”如何表达成“需求”呢?这就是需求获取,或曰“需求开发”(CMMI L3的过程域)。
如果我们的产品是面向特定行业或特定客户的,那么由特定的客户(业务部门)提交业务需求书是需求的重要来源,在这种情况下,需求获取有许多有利条件:IT企业与特定客户具有长期合作关系,在这个过程中可以培养客户提出需求和表达需求的能力,可以同客户联合成立需求小组,共同开发需求。
如果我们的产品是面向市场的,那么市场的声音或市场的潜在声音都是用户的需求,但我们的产品不可能面面俱到,这时我们IT企业有足够的主动权来选择用户、细分市场、定位产品,特别是在市场还未正式地发出声音之前,通过创意来挖掘未来的需求,这种抢占市场先机的需求获取,是需求开发的最高境界。
与“需求”密切相关的一个概念就是“用户”,我们不去定义这个自明的概念,而是提供如下一些观念供大家借鉴:
用户是经过筛选的:人们的需要是千差万别的,有时甚至是相互矛盾的,因此,筛选出真正的用户、定位好产品是至关重要的。
用户是沉默的:这是说用户难以想到细节或描述不清楚需求或不会主动去表达等情况,用户的“需要”常常是一种“冲动”或“冲突”,隐藏在他的头脑中、在工作现场、在企业流程或文化中,它与其它信息混杂在一起,并且是支离破碎、用户未体验的,用户不易通过口头或书面的方式表述清楚,因而用户是沉默的。因此,应有专业的需求分析师(通常由系统分析员担任)与用户交谈、到现场调研,进行需求挖掘。
用户是大喊大叫的:这是面向特定用户开发产品时常有的情况,特别是按合同开发时,若双方对需求的理解不一致,强势的用户会提出一些过分要求。我们要与用户交朋友,达到相互理解,并采取相应的策略化解矛盾。
用户是可引导的:面向行业的IT企业,通常较用户有更多的、更成熟的应用系统经验或更宽广的视野,这时可以向用户推荐应用系统架构或处理模式。对于业务的具体处理流程,IT人员也可以更多地从新的视角(从软件实现和改进操作的角度)提出建议来引导用户。
需求获取就是要在上述对“用户”概念的认识基础上,将用户的“需要”挖掘出来,我总结了如下的一些挖掘需求的方法:
1、分析特定客户(业务部门)提交的业务需求书
2、与特定客户(业务部门)进行讨论与交流(或联合成立需求组),包括:
需求讨论会
与业务专家或代表讨论
3、通过调查获取需求,常见需求调查方式有:
与用户交谈,向用户提问题
参观用户的工作流程,观察用户的操作
用户工作的情景分析
现有系统的问题报告和改进要求,事件和响应
市场调查和向用户群体发调查问卷
与同行、专家交谈,听取他们的意见
分析已经存在的同类软件产品,提取需求
从现有产品或竞争产品的文档中提取需求
从行业标准、规则中提取需求
总之,需求开发就是在只有一个大体需要或只是一个概念上的想法的基础上,IT人员通过广泛的调查,并从服务意识的角度出发,带领客户或引导客户一起“搞清楚”需求。而调查是广泛的,包括:业务专家、一线人员、市场情况、竞争对手等;并且调查是深入的,如:问卷、访谈、研讨会、现场了解、收集资料以及与业务人员交朋友。