准则 :用“检测到什么”的方式来编写需求条件
应该写出系统检测什么,而不仅仅是发生了什么。不要写:客户忘记了PIN。系统不可能检测到客户忘记了密码。可能是客户离开了,或者心脏病发作,或者正忙于安抚一个哭叫的小孩。在这种情况下,系统能检测到什么呢?在用户没有任何动作的情况下,这意味着系统只能检测到等待时间超过了限制。应该写,等待用户输入密码的时间超时或PIN输入的时间超时。
扩展条件经常是一个描述系统检测到了什么的短语。有时也可以用一个句子。我喜欢在条件后面加一个冒号(:),使读者不会误认为它是一个执行步骤这个小小的约定减少了很多错误。这里有一些例子。
无效 PIN:
网络崩溃:
客户没有响应(超时):
现金不适当地投放:
如果你使用编号的步骤,那么在条件被检测出的地方也要写出步骤的编号,并在编号后面加上一个字母(例如4a)。顺序和字母是无关的,没有规定说 4b一定要在 4a后面。这就允许我们自己决定在一个执行步骤后附加多少扩展条件。
2a.资金不足:
2b.网络崩溃:
如果条件发生在多个步骤中,而且你认为指明条件在哪个步骤中发生是很重要的,那么可以简单地将步骤列出。
2-5a.用户突然退出:
如果条件多次出现,可以使用星号(*)来代替步骤编号。在编号的条件之前列出带星号的条件。
*a.网络崩溃:
*b.用户没有结束操作就离开了(超时):
2a.资金不足:
2b.网络崩溃:
错误是发生在用户输入数据时,还是之后,或是发生在系统验证数据的时候呢?不要被这样的问题所困扰。一个人可能认为错误发生在上述两个步骤中,但这样的争论是不值得的。我通常把这种情况放到系统验证步骤中。