首页 理论教育 软件系统中的扩展关系表示方法案例学习

软件系统中的扩展关系表示方法案例学习

时间:2023-10-16 理论教育 版权反馈
【摘要】:图4-15扩展关系的表示方法案例学习◎图4-16中,基础用例是“归还书籍”,扩展用例是“交罚金”。如果超过了还书时间或者书籍受损,按规定借书者需要交一定的罚金,这个时候就不能执行“归还书籍”用例提供的常规动作。若更改用例“归还书籍”,势必会增加系统复杂性,因此在用例“归还书籍”中增加扩展点,即扩展条件为超时或者损坏,满足此扩展条件将执行扩展用例“交罚金”,使得系统更容易被理解。

软件系统中的扩展关系表示方法案例学习

一个用例的对话流程中,可能会根据条件插入执行另一个用例以使用其功能,这个被插入的用例可以定义为基础用例的增量扩展即扩展用例,这样在描述基本动作序列的基本用例和描述可选动作序列的扩展用例之间就建立了扩展关系。扩展用例是可选的,如果缺少扩展用例,不会影响到基础用例的完整性;扩展用例在一定条件下才会执行,并且其执行会改变基础用例的行为。扩展用例依赖于基本用例,只是由部分片段组成,不是完整的独立用例,无法单独执行。进一步地讲,从基本用例到扩展用例的扩展关系表明:按基本用例中指定的扩展条件,把扩展用例的动作序列插入到由基本用例中的扩展点定义的位置。

扩展关系也是依赖关系的一种,因此也用带箭头的虚线表示,箭头从扩展用例指向被扩展用例(即基础用例),虚线上方注明构造型≪extend≫,如图4-15所示。

图4-15 扩展关系的表示方法

案例学习

◎图4-16中,基础用例是“归还书籍”,扩展用例是“交罚金”。如果书籍顺利归还,那么执行“归还书籍”用例即可。如果超过了还书时间或者书籍受损,按规定借书者需要交一定的罚金,这个时候就不能执行“归还书籍”用例提供的常规动作。若更改用例“归还书籍”,势必会增加系统复杂性,因此在用例“归还书籍”中增加扩展点,即扩展条件为超时或者损坏,满足此扩展条件将执行扩展用例“交罚金”,使得系统更容易被理解。

图4-16 扩展关系举例

基础用例提供了一组扩展点(Extension Point),在这些扩展点中可以添加新的行为,而扩展用例提供了一组插入片段,这些片段能够被插入到基础用例的扩展点。扩展关系可以有控制条件,当用例实例执行到一个扩展点时,控制条件决定是否执行扩展。因此,扩展关系可处理事件流的异常或可选事件,即在用例规格说明中由扩展事件流来说明描述,如表4-1所示。

表4-1 用例规格说明示意图

基础用例不必知道扩展用例的任何细节,它仅为其提供扩展点。事实上,基础用例没有扩展也是完整的,这一点与包含关系有所不同。一个用例可能有多个扩展点,每个扩展点也可以出现多次。但一般情况下,基础用例的执行不会涉及扩展用例的行为,只有扩展条件被涉足,扩展用例的行为才被执行,然后事件流继续。(www.xing528.com)

扩展关系为处理异常或构建灵活系统框架提供了一种有效的方法。包含关系和扩展关系的使用场合如下:

(1)包含关系:当一个通用的用例可以成为几个特殊的用例的组成部分的时候用包含关系。

(2)扩展关系:当一个用例是一个一般用例的特例时用扩展关系(要说明扩展点)。

图4-17中,包含关系由用例1连向用例2,表示用例1使用了用例2中的行为功能;扩展关系由用例4连向用例3,表示用例3描述了一项基本需求,而用例4描述了该基本需求的特殊情况即扩展。

包含关系和扩展关系的区别是:

(1)相对于基础用例,扩展用例是可选的,而包含用例则不是。

(2)如果缺少扩展用例,基础用例还是完整的;而缺少包含用例,则基础用例就不完整了。

(3)扩展用例的执行需要满足某种条件,而包含用例不需要。

(4)扩展用例的执行会改变基础用例的行为,而包含用例不会。

图4-17 包含关系和扩展关系的区别

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈