过去数年常听到一些软件从业人员的投诉包括:“他们(客户)基本上不知道自己的需求,怎么做他们都不满意,功能不断增加,如何能够完成他们的系统建设?”“他们(客户)上周说要这个功能,今天说要这个功能,为什么不全告诉我们,让我们可以不用在开发过程中不断更改!”一些类似的投诉只说明我们的软件从业人员基本上没有明白到范围建设的重要性,而且未能在项目启动前把项目范围建立起来。
范围与功能的分别
在“如何把握不存在的需求”一文中,已经说明范围是有效管理需求变更的唯一方法。有明确的项目范围,我们才能够学习及分析范围内的作业流程,建立系统的功能需求,并在开发过程中当客户要求变动的时候有效管理我们的工作范围,才能够有机会按照预算在指定的时间内完成项目的交付。
软件开发项目从开始到今天,一直以来客户都不能够告诉我们需要哪些功能,他们只能告诉我们系统需要完成哪些目标。回顾“如何把握不存在的需求”一文中的第一个例子,20世纪70 年代的客户需要把库存管理进行自动化,收到的指示会像下例:“建立一套库存管理系统取代目前的人工作业流程”。这一句指示是唯一任务说明。系统分析员在接受这个任务后第一个工作是建立项目的Term of Reference (ToR)。系统分析员会进行初步调查,通过简单的访谈,与库存部门负责人明确理解他们工作的开始点和终结点,得出的结果可能像下例:“从货品(包括原材料,半成品及制成品)进入仓库开始,到货品因应生产或销售申领要求离开仓库为止,其中包括货品存入量的统计,存放位置记录,总库存量统计,申领数目,检货,提取货品,准备出仓,最后更新货品存量统计等工作过程”。这是所谓的Term of Reference,也是我们今天所认识的项目范围。
在用户及管理层认同上述的ToR 后,这个项目的负责人便需要估计需要对多少人进行访谈,需要多久时间进行访谈,需要多少时间对访谈结果进行分析,多少时间建立项目需求,编写需求说明书,需要多久进行系统设计,多少程序员及多少时间进行程序编写,如何进行测试,编写系统文档,编写用户手册,什么时候在仓库安装终端,如何连接主机,什么时候进行用户培训,如何让系统取代目前的人工作业等等有关工作计划及时间表。
在系统分析员完成访谈后,便需要依据访谈结果进行分析,理解什么时候知道有货品进入仓库,什么时候更新有关数据,如何更新,采用哪些表单,仓库人员如何决定货品应该存放在哪里,如何记录有关信息,如何知道需要检货,什么时候进行数据更新,如何分别哪些货品要去生产部门或者直接送到客户指定地点等等信息。这些信息便成为系统在不同过程中所需的功能需求。
从上述的开发过程说明中可以体现功能需求并不是客户或用户提供,是系统分析员在理解目前的人工作业后分析出来的结果。
在系统移交到仓库中运行前,仓库中的工作人员需要对系统的操作进行学习及测试。要知道当时仓库的工作人员并不是针对系统的功能进行测试,是对系统能否满足他们的工作过程进行测试。基于这批工作人员对人于工作业的过程十分理解,如果系统未能提供一些他们操作过程中的日常工作,他们会要求技术人员对系统进行修改。这个过程让我们误会用户是对功能需求进行测试,这个误会一直到今天让我们把系统开发的焦点错误地放在功能上,而不是系统的最终交付上。而系统的最终交付是否能够满足ToR 的要求是当时项目成败的主要指标。
文章来源于领测软件测试网 https://www.ltesting.net/