UML中usecase之间的关系

老文。

 

用例描述的是系统外部可见的行为,是系统为某一个或几个参与者提供的一段完整的服务。从原则上来讲,用例之间都是并列的,它们之间并不存在着包含从属关系。但是从保证用例模型的可维护性和一致性角度来看,我们可以在用例之间抽象出包含(include)、扩展(extend)和泛化(generalization)这几种关系。这几种关系都是从现有的用例中抽取出公共的那部分信息,然后通后过不同的方法来重用这部公共信息,以减少模型维护的工作量。

 

泛话(继承)就不说了很好理解.

 

包含(include) 

 

包含关系是通过在关联关系上应用<<include>>构造型来表示的,如下图所示。它所表示的语义是指基础用例(Base)会用到被包含用例(Inclusion),具体地讲,就是将被包含用例的事件流插入到基础用例的事件流中。

 

扩展(extend) 

 

扩展(extend)关系如下图所示,基础用例(Base)中定义有一至多个已命名的扩展点,扩展关系是指将扩展用例(Extension)的事件流在一定的条件下按照相应的扩展点插入到基础用例(Base)中。

至少从这个两个定义里面都看到了”将扩展(被包含)用例的事件流插入基础用例事件流”, 也就是 如果 用例A include 用例B, 似乎就又可以描述为 用例B extend 用例A, 是这样吗?

前一分钟, 我问了从我身边经过的一个同事这个问题, 他的答案是:可以把extend理解为并联,include理解为串联. 也就是说 include所包含的用例必须是基础用例的一部分,没有他基础用例就不完整. 而extend则意味着扩展, 可以扩展用例插入到任何扩展点.或者说 “对于包含关系而言,子用例中的事件流是一定插入到基础用例中去的,并且插入点只有一个。而扩展关系可以根据一定的条件来决定是否将扩展用例的事件流插入基础用例事件流,并且插入点可以有多个。”

Comments are closed.