uml之用例之间的关系

            用例描述系统满足需求的方式。当细化描述用例操作步骤时,就可以发现有些用例以几种不同的模式或特例在运行,而有些用例在整个执行期间会出现多重流程。如果将用例中重要的可选性操作流程从用例中分隔出来,以形成一个新的用例,这对整个系统的好处是显而易见的。当分离可重复使用的用例后,用例之间就存在着某种特殊关系。包含和扩展是两个用例紧密相关时,关联用例的两种方法。包含关系用于表示用例为执行其功能时需要从其他用例引入功能。类似的扩展关系则表示用例的功能可以通过其他用例的功能得到扩充。

  1. 包含关系:
    1. 在对系统进行分析时,通常会发现有些功能在不同的环境下都可以被使用。在编写代码时,我们希望编写可重用的构件,有些构件包括诸如可以从其他代码中调用或参考的类库、子过程以及函数。
    2. 包含关系和对象之间的调用关系比较相像,他描述的是一个用例需要某种类型的功能,而该功能被另一个用例定义,那么在用例的执行过程中,就可以调用已经定义好的用例。
    3. 被包含的用例由两种方法确定:一种是被包含的用例事前已经存在,他们是因为某个目的而定义的,在系统的开发工程中,恰好需要同样的功能,这样就不需要在系统中重新定义用例,直接将其中包含到新的用例中就可以。 另一种确定包含用例的方法是从已经存在的几个用例中提取实现相同的功能的操作步骤,可以形成新的用例。
    4. 被包含的用例称为提供者用例,包含用例称为客户用例,提供者用例提供功能给客户使用。
    5.  包含(includes):用例A includes 用例B,表示没有了用例B,用例A本身也就不完整了。例如:还是老王进城,他从海南来北京办事,3天才能回去,那么这种情况下进城用例与上厕所用例的关系就应该是包含关系了。
  1. 泛化关系
    1. 代表一般于特殊的关系。UML用例图中泛化关系的意思和面向对象程序设计中的继承的概念是类似的。不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。在泛化关系中子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或者覆盖父用例中的行为和含义。
    1. 3)泛化:泛化关系指的是同一业务目的的不同技术实现。例如:老王进城,他可以坐飞机,可以坐火车,还可以走路,那么进城用例就泛化为坐飞机、坐火车和走路三个用例了,它们之间存在层级关系。
  1. 扩展关系:
    1. 1)扩展(extends):用例B extends 用例A,表示用例B是用例A在某种特定情况下可能会出现的扩展用例。例如:老王进城办事,2小时就可以回去,在这2小时内内急时就会去上厕所。上厕所用例是进城用例的扩展,因为不上厕所老王进城办事也可完成。
    2. 扩展点的定义为:基用例中德一个或多个位置,在该位置会衡量某个条件以决定是否启用扩展用例。

 

  1. 在UML用例图中,角色和用例都能够泛化。角色的泛化/继承很容易理解,因为角色本来就是类(Class),它是一种版型(stereotype)为Actor的类,所以角色的继承直观而自然。但是用例的继承实际上分为两种情况,并不是简单的使用泛化,而是使用扩展(extended)和包含(include)两种泛化的特例。扩展用于子用例的动作步骤基本上和父用例的动作步骤相同,只是增加了另外的一些步骤的情况下。包含用于子用例包含了所有父用例的动作,它将父用例作为了自己的一个大步骤,子用例常常包含一个以上的父用例
  2. 总的来看,扩展可以“冻结”基本用例以保持稳定(因为扩展用例通常是不确定的);包含可以提供公共交互,提高“复用”;泛化是同一业务目的的不同技术实现。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值