软件开发工作不是为了表现自己,而是要准确而深刻地表现用户的需求、社会的需求。如果开发人员不能准确知道用户需要什么,就很难开发出用户满意的软件。要解决这些问题,开发人员需要具备系统的探索能力和知识。缺乏相关业务知识,缺乏对用户的系统了解,只凭软件技术知识很难开发出符合用户需求的软件。
以不同的角度对软件需求进行分层,对于全面准确地分析理解用户的需求,会起到有效的促进作用,所以我们有必要对软件需求的层次进行分析讨论。下面就是本人收集总结的以不同角度的对软件需求的分层,但愿不同角度的不同需求层次提供给大家不同的视角,可以给大家一点启示。
1、以需求用途角度
以需求用途角度需求可以分为市场需求、产品线需求、产品需求、系统需求等层次。
市场需求:主要说明的是市场前景分析,用户需要的是哪一类的产品,或者是对这个产品的哪项功能更感兴趣,优先级如何,其用途是确定要不要做这样的产品。
产品线需求:是对一组在使用价值、系统功能、销售对象等方面比较接近的产品(软件系统)的概念描述,从用户的目的需要推导出概要性的方式需要。
产品需求:一条产品线因为阶段不同或用户不同而有不同版本的产品,产品需求就是对某一具体版本产品(软件系统)的概念描述,其用途是确定产品的范围和轮廓。
系统需求:是为了开发软件产品,在产品需求的基础上对完成用户目的需要的方式进一步分析细化,细化到可以为设计人员提供设计的基础。
2、以明确程度角度
以明确程度角度需求可以分为明确的需求(包括书面的需求、口头的需求)、潜在的需求等层次。
明确的需求是指用户明确表达解决现在问题的一种主观愿望。这种需求也可以叫“显性需求”,是指用户对自己需要的商品或服务,在心中已明确地了解自己的欲望,形成了书面的需求(包括合同、确认后的需求规格说明书等)或口头的需求。
明确的需求是比较容易获得的,困难的是获得潜在的需求和周边的需求。有些需求开发人员往往只满足于获得明确的需求,而不太注重获得潜在的需求。而其中有些潜在的需求又恰恰是系统必须满足的需求。
潜在的需求一是指客户目前因为软件知识、视野等局限而无法明确或具体提出的需求,经过需求分析人员引导,用户采纳为自己的需求;二是指不需要用户明确提出的需求,如公安信息系统中的信息应当符合公安信息标准,像“行政区划、案件类型等编码型的信息项应当采用诱导性输入法”等等,这些需求不需要用户明确提出,但软件系统一定要满
足。如何掌握住这种需求,使需求明确化,是最重要的,也是最困难的一件事,因为有的时候客户本身往往也不知道自己的需要到底是什么。
大多数初次购买软件系统的潜在客户,都无法确切地知道自己真正的需求。因此,开发人员碰到这类客户时最重要也是最困难的工作,就是发掘这类客户的需求,使潜在的需求转变成明确的需求。为了更好挖掘潜在需求,需求调研分析人员应该具有丰富的业务经验和知识,同时还要善于利用如询问、图表、原型等各种手段来引导客户。
3、以涉众范围角度
以涉众范围角度需求可以分为客户的需求、用户的需求、周边的需求等层次。
客户常常不是直接用户,如企业或政府的系统建设管理部门、软件产品的中间商等,他们与软件开发商联系,为即将开发的软件提供部分需求或全部需求,但不一定直接使用软件。
这里的用户包括直接用户个人和用户所在的集体。
用户和客户的需求往往存在关注角度的不同。例如用户往往关注系统本身的功能好不好用、实不实用;而中间商客户往往是关心软件产品好不好卖,企业或政府的系统建设管理部门会比较关心与其他系统的整体联系。好用才会好卖,因此软件需求分析人员不能仅仅听取“客户”意见,还要收集“用户”意见,特别是典型用户的意见。
周边的需求是指虽然不直接使用系统产品,但与系统相关的人员的需求,这类需求往往很容易被忽视(如:税务系统对于交税的企业的需求、海关报关系统对于报关企业的需求、上网儿童或使用教育软件学生的家长的需求)。周边的需求考虑的是从用户满意到社会满意,要挖掘这方面的需求,就要设身处地为相关的群众着想,找机会接触相关群众,听取大家的意见。
4、以期望程度角度
以期望程度角度需求可以分为基本的需求、期望的需求、超越期望的需求等层次。
日本卡诺搏士提出的顾客需求的模型定义了3 种类型的顾客需求:基本型、期望型、兴奋型。因此按照用户对需求的期望程度我们可以将需求分为三个层次:基本需求、期望需求、超越用户期望的需求。用户对这三个层次表现的情绪分别是:满足、满意、惊喜。
用户的基本需求是产品必须满足的要求,也可以叫核心的需求。例如系统必须提供的功能或必须用到的一些强制性标准,可能这一基本要求用户没有提出来,但这并不意味着他们就可以接受不能满足那些需求的产品。如果系统满足不了用户的这一层次的需求,用户就会产生强烈的不满,系统也会因此而失去用户。
以“顾客”为中心,不仅考虑顾客基本的需求,还要考虑期望的需求,完成从满足基本需求一期望需求一兴奋需求的过渡。
用户期望的需求不一定是必须的属性或功能,但却是用户希望得到的,如果能满足这一期望那就很可能使用户高兴,吸引用户继续与你合作。期望的需求在产品中实现的越多,顾客就越满意;当没有满足这些需求时,顾客就会不满意。
超越用户期望的需求是一些让用户完全出乎其意料的特性。如果产品没有提供这类特性,顾客不会不满意,因为他们通常没有想到这些需求;而当产品提供了这类特性时,顾客就非常满意,非常乐意使用这一系统。
在软件开发市场竞争日趋激烈的今天,仅仅满足用户的基本需求是不够的,我们不仅要正确理解用户的需求,而且要善于想用户所想,挖掘用户的潜在需求,使用户感到满意和惊喜,同时还要尽可能地超越用户的期望。
当然,超越用户期望的需求一定要由用户作最终的决定,如果开发人员擅作主张就很可能成为“镀金的需求”。
5、以需求调研角度
以需求调研角度需求可以分为业务需求、用户需求、系统需求等层次。这是最经典的需求分层方法。
目标层:客户为什么愿意为产品花钱。它有助于开发商更好地理解领域,也有助于检查是否所有目标都已体现在需求中,在开发过程中是否都考虑到了。
领域层:产品应该支持(帮助或替代)的用户的各项任务。领域层的描述可以使开发商更好地理解领域、也可以帮助开发商了解隐含的需求或要求提供更进一步的信息。
产品层:产品应该提供的功能,指定了产品的输入输出情况,只需说明功能或特性而无需说明细节。
设计层:如产品界面的细节、通信协议、用户希望用B/S还是用C/S等等设计上的要求,但并没有说明产品内部如何实现。
6、以建设阶段角度
以建设阶段目标需要角度需求可以分为基础信息化需求、工作流程优化需求、信息资源整合需求、信息综合利用需求等不同层次。
在基础信息化实现以后,就会考虑流程的优化,帮助整个企业或政府机关进行整体流程再
造,以提高工作效率。流程优化开始可能是各个部门单点突破,然后会面临如何解决信息孤岛的问题,因此有了信息资源整合需求,进而自然地会考虑如何综合利用各种已经积累的信息。
虽然是以阶段来划分,却体现了不同阶段用户需求的不同层次。无论是企业还是政府机关,信息系统的建设都包括了这些层次,每一层需求是上一层需求的基础。新的系统建设可以一次性的综合考虑四个层次的需求。将企业或政府信息化的需求分为这样四个层次,有助于了解发展的趋势,了解客户当前的背景和目标,对症下药地提出和挖掘准确合理的用户需求。
7、以用户关注角度
以用户关注角度需求可以分为目标性需求、功能性需求、操作性需求等层次。
目标性需求:定义了整个系统需要达到的目标;
功能性需求:定义了整个系统必须完成的任务;
操作性需求:定义了完成每个任务的具体的人机交互;
目标性需求是企业的高层管理人员所关注的,功能性需求是企业的中层管理人员所关注的,操作性需求是企业的具体操作人员所关注的。
8、以管理学的角度
以管理学的角度来说,一般可以分为业务层、监督层、决策层(公安机关称为实战层、指导层、决策层)。也可以针对具体情况调整或细化这些层次。
9、以业务差异角度
以业务差异角度角度来说,一般可以分为业务共性需求、行业特性需求及企业个性需求(或扩展需求)的多层次需求。
例如,开发ERP系统就要考虑不同行业、不同企业之间的共性需求,这样便于扩大ERP系统的适用范围。但仅仅考虑共性, 开发成千篇一律的软件肯定无法推广,因此也要考虑行业特性需求及企业个性需求,做到核心架构符合业务共性需求,通过灵活的系统配置或机动的局部修改来适应行业特性需求及企业个性需求。
再如,金盾工程就把信息库建设需求分为共享数据项集、业务管理项集和地方业务扩展项集等三个层次:
共享数据项集:由各业务数据库抽取出来的、能反映业务基本属性的、各部门需要共享的基本信息的集合。
业务管理项集:一般是由公安部统一规定的、能完成特定业务管理的项目集。
地方业务扩展项集:除业务管理项集以外,为满足本地的特殊业务需求而制定的业务管理项目集。
10、以业务先后角度
以业务先后角度角度来说,一般可以分为事前、事中、事后等三个层次。每一项业务都可以按照事前、事中、事后要做什么去考虑问题,这样能使需求分析得更全面。
结束语
需求分层的方式还能举出很多种,也可以由需求调研分析人员根据具体的情景以不同角度把需求分为不同层次。需求分层目的只有一个,就是更全面、更准确地挖掘用户的需求,更全面、更准确地表达用户的需求。