在用例图中,应该如何区分《include》和《extend》这两个原型?

我们知道,在收集一个软件系统需求的时候,一般会用到用例图。在分析两个用例之间的关系的时候,会用到《include》和《extend》这两个原型。这两个原型很容易让UML的初学者感到迷惑,包括我,呵呵。今天,在这里初步探讨它们之间的区别。

  • 《Include》: 表示一个用例包含另一个用例,即要完成包含用例就一定要执行被包含用例。
  • 《extend》:表示一个用例扩展到另一个用例,这里有一点需要注意:在执行一个被扩展用例时,不一定执行扩展用例。即扩展用例的执行是受条件限制的,是可选的。这一点,是区别两个用例之间的关系是《包含》还是《扩展》的依据。

   下面举两个比较直观的例子:

. image

  •     说明:这是一个ATM系统中的两个用例,很显然,在执行“取款”用例的过程必定要执行“银行卡验证”用例。将来在画“取款”的活动图的时候,一定要把“银行卡验证”作为一个步骤加入进去。

image

  • 说明:这是一个图书管理系统常见的两个用例。这里被扩展用例“还书”有一个“扩展点”即“过期”。当且仅当还书过期的时候,“还书”用例的活动图中才需要加入扩展用例“罚款”,即“罚款”用例是可选的,而不是必选的。

从以上两个例子,我们就可以明确得区分,两种关系的区别。

PS:关于《Include》和《Extend》的使用还有什么疑问,欢迎跟帖讨论。

posted on 2010-11-11 16:02  Tolen_Don  阅读(1173)  评论(2编辑  收藏  举报

导航