我们知道,在收集一个软件系统需求的时候,一般会用到用例图。在分析两个用例之间的关系的时候,会用到《include》和《extend》这两个原型。这两个原型很容易让UML的初学者感到迷惑,包括我,呵呵。今天,在这里初步探讨它们之间的区别。
- 《Include》: 表示一个用例包含另一个用例,即要完成包含用例就一定要执行被包含用例。
- 《extend》:表示一个用例扩展到另一个用例,这里有一点需要注意:在执行一个被扩展用例时,不一定执行扩展用例。即扩展用例的执行是受条件限制的,是可选的。这一点,是区别两个用例之间的关系是《包含》还是《扩展》的依据。
下面举两个比较直观的例子:
.
- 说明:这是一个ATM系统中的两个用例,很显然,在执行“取款”用例的过程必定要执行“银行卡验证”用例。将来在画“取款”的活动图的时候,一定要把“银行卡验证”作为一个步骤加入进去。
- 说明:这是一个图书管理系统常见的两个用例。这里被扩展用例“还书”有一个“扩展点”即“过期”。当且仅当还书过期的时候,“还书”用例的活动图中才需要加入扩展用例“罚款”,即“罚款”用例是可选的,而不是必选的。
从以上两个例子,我们就可以明确得区分,两种关系的区别。
再贴几张图感受一下: