Use Case中的include, extend和generalization

  画用例图时用例之间的关系应该是一个比较难理解的概念,用例之间的关系分为include, extend和generalization三种。

  先介绍一下比较容易理解的generalization,generalization关系是一种继承关系,子用例将继承基用例的所有行为,关系和通信关系,也就是说在任何使用基用例的地方都可以用子用例来代替,典型的用法就是“支付订单”用例可以有“现金支付”和“信用卡支付”两个子用例。 generalization关系在用例图中使用空心的箭头表示,箭头方向指向基用例。

  include和extend是两个比较容易混淆的关系,先来看include关系。include为包含关系,当两个或多个用例中共用一组相同的动作,这时可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享,这比较类似代码开发中将重复的代码抽出来做为一个独立的函数调用。因为子用例被抽出,所以基用例并非一个完整的用例,所以include关系中的基用例必须和子用例一起使用才够完整,子用例也必然后被执行。include关系在用例图中使用带箭头的虚线表示(在线上标注<<include>>),箭头指向子用例。

  extend关系是对基用例的扩展,与include相比,最大的区别是extend的基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。extend的基用例中将存在一个扩展点,只有当扩展点被激活时,子用例才会被执行,典型的例子是在查询用例之后,可以有一个扩展的导出用例。extend关系在用例图中使用带箭头的虚线表示(在线上标注<<extend>>),箭头指向基用例。

posted @ 2009-07-15 16:14  moonsnow  阅读(643)  评论(1编辑  收藏  举报