对于软件需求的描述,不应仅仅描述要实现的功能或非功能需求,还应对每条需求都要给出一个验收标准。
什么是验收标准
所谓验收标准,就是使用可度量的数据对用户需求进行宣描述,以便在“验收”的时候,能够用量化的数据确认需求是否实现。这里的验收标准,不是针对软件产品的,而是针对用户需求,针对每一条的用户需求。
这么说来,验收标准原来就是对需求的定量描述。可是用户需求是那么好定量描述的吗?
对于功能需求,相对来说,还是比较容易的,而那些非功能性需求,比如,性能、安全性、易用性等要定量描述却是常常让人摸不到头脑。其实,这只不过是因为你还没有理解用户的真正意图。
比如这样的一条需求:产品应该用户友好。如何定量描述“用户友好”?这就要求你要去了解“用户友好”的更准确的含义。例如,是指易于学习,或易于使用,或其他含义?
假定用户的意图是“我希望我的用户能快速学会使用该产品”,这表明度量的尺度是“掌握给定任务所需的时间”。那么,对“用户友好”的验收标准建议是:在新用户第一次使用该产品时,他们将能够在30分钟内完成增、改、删等基本操作。
2. 为什么软件需求一定要有验收标准?
软件需求有验收标准,至少可以带来以下3方面的好处:
有助于需求的一致理解
当需求用定量数据描述时,存在误解的可能性应非常小了。比如这样的需求描述:在90%的情况下,工程师将在15秒钟内得到软件系统产生的工程计划。这样的描述,无论用户、开发人员、测试人员对需求的理解都不会有偏差。
有助于对需求的确认
在消除了需求的歧义,达成了需求的一致理解,用户对于需求的确认,就会很容易进行。因为这些需求描述都很清楚,确定其重要性以及排定其优先级,就不算什么难事。
有助于对需求实现的验证
需求实现的验证通常是通过测试来进行的。在编写测试用例的时候,需要给出预期的结果,需要给出有效输入数据和无效输入数据的测试用例,这些要求,在每条需求都有验收标准的情况下将很容易满足。
3. 验收标准示例
那么,验收标准应该怎样写呢?下面举几个例子:
功能需求
一项功能性需求是产品必须做的某件事情,是产品必须采取的一项动作,因此验收标准指明了如何得知产品已经成功地完成该动作。
比如,一项功能需求描述是:产品将记录气象站的读数。 对应的验收标准:记录的气象站读数将与气象站发送的读数相符。
如果功能需求是进行某种计算,那么验收标准将指出,计算的结果必须与权威机构对数据的看法一致。
例如,如果需求是“产品将记录……”,那么验收标准就类似“取得的数据将符合……(数据的最初来源)”。如果需求是“产品将检查……”,那么验收标准将是“被检查的数据将符合……(权威的数据来源)”。
性能需求
一项性能需求的描述:响应速度足够快,以避免打断用户的思路。
验收标准:在95%的情况下,响应时间将不超过1.5秒,在其他情况下不超过4秒。
安全性需求
需求描述:只有使用A类登录的工程师能够修改气象站的数据。 验收标准:在1000次气象数据的修改k全部由A类登录的工程师完成,没有例外。
易用性需求
需求描述:产品将是直观的和自解释的。 验收标准:在首次使用该产品时,工程师能够在30分钟内得到一份正确的除冰预报。
4. 小结
需求的验收标准/定量描述对于需求管理和需求开发,以及验证和确认来说都是至关重要的。不抓好它,可能会在开发过程中引入大量的潜在缺陷,给软件研制带来巨大的风险。