描述需求应遵循的几个简单准则
有人说,用例是项目利益相关方对系统的契约,那么需求规格说明也不是写给自己看的,它也是利益相关方共同遵守的契约。 所以需求的描述应当简单、明了,具有可读性,不会让人产生歧义。 这样的需求才可能是被利益相关方共同遵守的契约。 要形成这样的需求契约,需求描述应当遵循以下准则: 准则1:使用简单的语法 描述需求的句子结构应该非常简单,并且在整个需求规格说明中都遵循同样的规则,如: 主语……前置短语……谓语动词……直接宾语。 例如: 系统……从账户余额中……扣除……一定数量。 假如描述需求的句子没有一个简单的结构,所描述的需求可能就会变得难以理解。 准则2:明确地写出“控制者” 每一个动作都应明确谁是控制者。 以踢足球为例。球员1将球传给球员2,球员2运球,然后将球传给球员3。在每一个步骤中,都会有人“控制球”。“在句子结束的时候,谁控制足球?”不论什么时候,这个问题都应该有明确的答案。 准则3:从系统外部的角度来描述需求 编写需求不能从系统内部来看待外部世界,也不能从系统内部来描述系统。比如:“读取ATM卡和PIN号码,并从账号余额中扣除一定数量。”这就是从系统内部来描述系统的行为。这种方式违反了准则2,不知道谁是动作的主体。 正确的方式是从系统外部的角度来描述需求,如: 用户插入ATM卡并输入PIN,系统从账号余额中扣除一定数量。 准则4:显示过程向前推移 在描述完成某个功能所需的步骤时,应避免描述很多过小的步骤。因为这样将导致该功能的描述段落变得很长。所以应当将一些小的步骤合并,这样的需求可读性更好、更加清晰。 而要合并小的步骤,就要找到具有较高层次目标的步骤,这就需要将过程前移。比如: 一个过小的步骤:用户按下Tab键 为什么用户要按下Tab键呢?是为了将焦点移到地址框中。为什么她要将焦点移到地址框中呢?因为在系统开始工作前,她要输入用户名和地址。 因此,这个过小的步骤可以合并到下面的步骤中: 用户输入名字和地址。 准则5:显示操作者的意图,而不是动作 在需求规格说明中,我们只关心用户的意图,而不关心具体的动作。对具体动作的描述属于设计的任务,而不应该出现在功能需求文档中。 比如,以下的需求描述就不是很恰当: 1.系统要求用户输入名字。 2.用户输入名字。 3.系统要求用户输入地址。 4.用户输入地址。 5.用户点击“确定”。 6.系统显示用户的简介。 以下的需求描述会更好: 1.用户输入名字和地址。 2.系统显示用户的简介。 准则6:“确认”而不是“检查是否” 在很多功能描述中,都需要系统验证一些业务规则是否满足。通常,人们说系统检查某个条件是否满足,但是用“检查”这个动词并不好,因为它并不是真正的目的,系统这样做的真正的目的是为了确认、验证或确保某些事情。所以我们将“系统检查密码是否正确”替换为: 系统验证了密码是正确的。 比如,下面的需求描述: 2.系统检查密码是否正确。 3.如果密码正确,系统向用户提供有效的操作。 可以修改为: 2.系统验证密码正确。 3.系统向用户提供有效的操作。 这样修改后,就是描述了一个功能需求成功的场景。而:“如果密码无效时,应该怎么办?”则可以作为异常情况描述。 准则7:习惯用语:“用户让系统A与系统B交互” 当正在开发的系统A要从系统B中获取信息,我们不能这样写:“用户点击获取按钮,这个时候系统从系统B获得数据。”而应该这样描述: 用户命令系统从系统B获取后台数据。 通过编写方式的转变,我们指明是由用户控制执行的时间,并说明了用户、系统A,系统B的职责及交互的细节。 准则8:用“检测到什么”的方式来编写条件 在编写前置/后置条件时,应该写出系统检测什么,而不仅仅是发生了什么。 比如,不能写“客户忘记了PIN”。系统是不可能知道客户忘记了密码还是客户离开了,或者其他什么原因没有输入密码。在用户没有任何动作的情况下,这意味着系统只能检测到等待时间超过了限制。所以,这样的条件应当描述为: 等待用户输入密码的时间超时或PIN输入的时间超时。 这正是: 需求描述有技巧,遵循准则会更好 八个准则引美玉,只愿需求描述好 参考书目:编写有效用例,作者:(美)科伯恩(Cockburn,A.),译者:王雷,张莉,出版社:电子工业出版社 作者简介:王小双,长期从事GJB推广、实施、评价、改进的工作,创建《软件工程之思》 |
转载请注明地址:http://www.keboencheng.com/kbecfj/10084.html
- 上一篇文章: 沈壮海文化图强的世界图景
- 下一篇文章: 没有了