《编写有效用例》读书笔记
完整正式用例格式中一些概念
范围——用来描述项目开发人员负责的设计工作的边界,以便与应由其他人负责的设计工作或已经完成的设计工作相区别。
项目相关人员是指契约的参与者。
执行者是指任何具有行为的事物。执行者可能是一个人、一个公司或组织、一个计算机程序或一个计算机系统(硬件、软件或软硬件兼备的系统)。可以从系统的项目相关人员、用例的主执行者、被设计系统本身、用例的辅助执行者、内部执行者中寻找执行者。
三个命名的目标层次(用户目标、概要层次目标、子功能层次)
用户目标是主执行者努力使工作得以完成的目标,或是用户使用系统的目标,是基本业务过程。
概要层次目标包含多个用户目标。在描述系统时,它们有三方面的功能:显示用户目标运行的语境;显示相关目标的生命周期顺序;为低层用例提供一个目录表。
子功能层次的目标是指那些在实现用户目标时可能会被用到的目标。
前置条件是指该条件已经通过其他用例的执行进行了设置。用例的前置条件声明了启动该用例之前系统必须满足的条件。
最小保证是系统向项目相关人员作出的最低承诺,尤其是在主执行者的目标不能被满足的情况下。
成功保证说明了用例成功结束后项目相关人员的哪些利益得到了满足,用例可以通过执行主场景获得成功,也可以通过执行可选路径获得成功。
触发事件指明了启动用例的事件。有时,用例执行过程的第一步紧接着触发事件发生,有时触发事件就是用例中的第一步操作。
场景和步骤:
主成功场景就是主执行者完成了目标,所有项目相关人员的利益都被满足了的场景。
执行步骤时对用例的补充,并且都有统一的语法形式,在一个简单活动中,执行者完成任务或向另外的执行者发送信息。
执行步骤的10大准则
(1)使用简单的语法;
句子结构应该非常简单:主语……谓语动词……直接宾语……前置短语
例如 系统……从帐户余额中扣除……一定数量……
(2)明确地写出“谁控制球”;
作者举了踢足球的场景的例子,说明了不管步骤的执行者如何变化,都要遵循(1)描述的格式。
(3)从俯视的角度来编写用例;
从用户的角度来写用例,而不是从系统内部来描述系统
(4)显示过程向前推移;
可能是翻译的问题,意思应该是如果过程繁杂,超过了9步,那么考虑提高目标层次,即“向前推移”
(5)显示执行者的意图而不是动作;
通过操纵系统的用户界面来描述用户的动作,这是在编写用例时常见的一种严重错误,它使得编写的目标处于一个很低的层次。我把它叫做“界面细节描述(interface detail description)”。在需求文档中,我们只关心界面所要达到的意图,总结在执行者之间传递的信息。可将这些低层次的步骤合并成一个步骤。
(6)包含“合理”的活动集;
用例描述为了表现一个事务,分解成了四个步骤,而这些步骤各有其复杂度,书中给出了五种形式,一种比一种分步多,作者倾向于中间第三和第四种形式,不过他也提出要视具体步骤复杂度来确定采用什么形式
(7)“确认”而不是“检查是否”
这是一个经常犯的错误,写用例不是写程序流程,不需要用选择语法,需要选择的时候,在扩展场景里体现。
(8)可选择地提及时间限制;
(9)习惯用语:“用户让系统A与系统B交互”;
要分开来写,用户与系统A怎么怎么样,然后系统A和系统B怎么怎么样,这样用户才能看的懂。
(10)习惯用语:“循环执行步骤X到Y,直到条件满足”;
同(7),但如果需要重复的话,可直接在重复的步骤的前面和后面说明即可。
总之,这10大原则,目的就是为了让用例成为用户和开发人员沟通的桥梁,所以语言要简单易懂,而且要逻辑清晰。
扩展实质上是一个从主用例中被拆分的用例。扩展开始于一个与它相关的条件。它包含了一个执行步骤的序列,该序列描述了在这个条件下发生了什么。扩展以完成或放弃扩展目标作为结束。
技术和数据的变化:
扩展说明了系统所完成的目标是不同的,但有时需要表达“有多种不同方法来完成相同目标”。系统所完成的目标是相同的,但怎样做可能不同。这通常是因为技术的变化或输入数据的不同。应该将这些变化写到“技术和数据变化”列表,而不是写到扩展部分中。如果决定使用UML用例图,那么你可以为一个基本步骤创建一个空的。一般性的基用例,为每个变化创建一个具体的用例。
连接用例说明了用例关系中的include和extend关系。包括子用例和扩展用例。
1)、子用例:一个执行步骤可以是一个简单的步骤或者是另外一个用例的名称。
一般的,步骤如果用下划线或楷体字区别开写的话,这个步骤就是子用例。
2)、扩展用例
两个用例之间需要另外一种连接,这种连接很像扩展机制。其具有以下特征:
(1) 有一个主活动,主活动可以被中断
(2) 主活动可以被多种方式中断,并且不能控制中断
可以考虑使用与描述场景扩展相同的机制,但这里是创建新用例。新用例称为扩展用例(extension use case)它除了是独立的用例之外,其他都与场景扩展相同。扩展用例从一个条件开始,在基用例中该条件可能满足的地方被引用。应将所有的条件都放到模板的触发事件部分中。