UML用例图中的泛化、扩展和包含关系

在画用例图的时候,理清用例之间的关系是重点。用例的关系有泛化(generalization)、扩展(extend)和包含(include)。其中include和extend最易混淆。下面我们结合实例彻底理清三者的关系。

基本概念

用例图(Use Case Diagram):用例图显示谁是相关的用户,用户希望系统提供什么服务(用例),以及用例之间的关系图。用例图主要的作用是获取需求、指导测试。

用例图的4个基本组件:参与者(Actor)、用例(Use Case)、关系(Relationship)和系统。

泛化(generalization):泛化关系是一种继承关系,子用例将继承基用例的所有行为,关系和通信关系,也就是说在任何使用基用例的地方都可以用子用例来代替。泛化关系在用例图中使用空心的箭头表示,箭头方向从子用例指向基用例。

扩展(extend): extend关系是对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。extend的基用例中将存在一个扩展点,只有当扩展点被激活时,子用例才会被执行。 extend关系在用例图中使用带箭头的虚线表示(在线上标注<<extend>>),箭头从子用例指向基用例。

包含(include): include为包含关系,当两个或多个用例中共用一组相同的动作,这时可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享。因为子用例被抽出,基用例并非一个完整的用例,所以include关系中的基用例必须和子用例一起使用才够完整,子用例也必然被执行。include关系在用例图中使用带箭头的虚线表示(在线上标注<<include>>),箭头从基用例指向子用例。

实例需求场景

联通客户响应OSS。系统有故障单、业务开通、资源核查、割接、业务重保、网络品质性能等功能模块。现在我们抽出部分需求做为例子讲解。

需求1:客户响应用户和国际客服可以进行割接通知查询,在页面上有骨干割接查询、省间割接查询、省级割接查询的Tab。

分析:可以很容易看出割接查询和不同的割接子查询Tab之间是继承的关系,所以此处用泛化。用户和客户响应、国际客服也是继承的Actor关系。

需求2:客户响应用户和国际客服可以查看某条割接通知信息,可以在页面上导出割接信息Excel格式,可以查询和该条割接相关联的故障单信息。

分析:因为导出割接和查看相关联的故障单信息都是可选的,就是说我查看割接的时候,也可以不进行这些操作,所以这里用extend关系。也就是导出割接和查看故障单信息扩展了查看割接信息。

需求3:客户响应用户可以以网管系统为来源创建割接通知,在创建割接通知时可以保存为草稿,也可以直接发布割接通知。

分析:由于创建割接通知时,发布割接通知可以同时进行,也可以先存为草稿,所以发布割接是可选的,用extend就比较合适。也就是发布割接扩展了创建割接通知。

需求4:用户在进行业务开通、发布割接通知、发布重保通知及相关跨省的业务时需要进行数据分发。

分析:由于业务开通、重保、割接及其它跨省的业务都需要用到数据分发用例,我们可以将数据分发用例单独抽出来,供各业务使用,这里用include就比较合适。实际的系统中数据分发也是单独抽出来用jms和webservice实现的接口服务。

其它需求:可以看到删除割接通知和查看割接明细也可以做为割接通知查询用例的扩展,因查询列表时,一般可以选择继续查看明细或者删除操作。但在实际化图中,这两个extend可以不画,这里只是为了让大家理解概念。

时间: 2024-09-18 05:48:16

UML用例图中的泛化、扩展和包含关系的相关文章

[UML]UML系列——用例图中的各种关系(include、extend)

用例图中的各种关系 一.参与者与用例间的关联关系       参与者与用例之间的通信,也成为关联或通信关系. 二.用例与用例之间的关系 包含关系(include) 扩展关系(extend) 包含关系         (1)  概念         包含关系描述的是一个用例需要某种功能,而该功能被另外一个用例定义,那么在用例的执行过程中,就可以调用已经定义好的用例.        (2)表示符号<<include>>           再如上篇文章中饮料自动售货机的例子:     

UML学习:用例图中的各种关系(include、extend)

用例图中的各种关系 一.参与者与用例间的关联关系 参与者与用例之间的通信,也成为关联或通信关系. 二.用例与用例之间的关系 包含关系(include) 扩展关系(extend) 包含关系 (1)  概念 包含关系描述的是一个用例需要某种功能,而该功能被另外一个用例定义,那么在用例的执行过程中,就可以调用已经定义好的用例. (2)表示符号<<include>> 再如上篇文章中饮料自动售货机的例子:

团队沟通利器之UML——用例图

       在所有的UML图中,最容易理解的是用例图,也是元素最少的一种UML图,也是产品经理最拿手的一种图.   一: 用途     用例图常用来描述需求,让用户第一时间了解系统所具有的功能,可能有人就会问,几个图怎么可能让人一下就了解系统 所具有的功能的?其实在产品经理的prd中都是"图文相依"的形式展现,这里的"文"也就是"用例描述".   二:基本元素    用例图中的所有元素都是初级概念,所以所有的元素都是我们常用的,首先我们还是看看

【软件工程】2.UML用例图

什么是UML?UML(Unified modeling language) 出现于70年代中期,建模语言数量从不到十种增加到了五十多种,OO(面向对象)方法的用户并不了解不同建模语言的优缺点及相互之间的差异: 90年代中期形成了UML统一建模语言,它是一种支持模型化和软件系统开发的图形化语言. UML建模工具 (1)IBM Rational Rose (2)StarUML (3)ArgoUML (4)等等...... 我们接下来使用的建模工具是IBM Rational Rose,我们首先在自己电

UML用例图总结(转)

  用例图主要用来描述"用户.需求.系统功能单元"之间的关系.它展示了一个外部用户能够观察到的系统功能模型图. [用途]:帮助开发团队以一种可视化的方式理解系统的功能需求. 用例图所包含的元素如下: 1. 参与者(Actor) 表示与您的应用程序或系统进行交互的用户.组织或外部系统.用一个小人表示. 2. 用例(Use Case)   用例就是外部可见的系统功能,对系统提供的服务进行描述.用椭圆表示. 3. 子系统(Subsystem) 用来展示系统的一部分功能,这部分功能联系紧密.

菜鸟求助:visio画UML用例图时遇到的问题

问题描述 UML用例图有四种关系:关联.包含.扩展.泛化(继承)请问在用visio里,这四种关系的连接线在哪里?找不到.... 解决方案

UML——用例图

  用例图是除开发人员以外的用户所能看到的系统功能模型图,展示了一些用户和用例以及它们之间的联系.   用例图的作用主要有三个:   a.获取需求:   b.指导测试:   c.在整个过程的其他工作流起到作用.   用例图所包含的元素如下:   1.参与者(Actor)   参与者不单单是指人,而是指系统以外的,在使用系统或与系统交互过程中所扮演的角色.因此参与者可以是人,也可以是事物或者子系统等等.参与者用简笔画的小人表示:   2.用例(UseCase)   用例可以理解为参与者需要系统做的

YY博客园UML用例图-活动图-状态图之博客模块

UML建模YY系列: YY博客园UML类图之博客模块 YY博客园UML时序图之博客模块 YY博客园UML用例图-活动图-状态图之博客模块 前面YY了博客园UML类图之博客模块和博客园UML时序图之博客模块,这次把剩下常用的用例图.状态图和活动图一起给完成了.至于其他不常用的对象图.组件图和配置图在此一律不表.协作图可以由时序图转换而来,因此也不做讨论. 博客园博客模块用例图 用户粒度如何控制呢?囧... 用户登陆活动图 博客园博客的状态图 博客状态图出来了,是什么时候上最多推荐的?有本事让我上最

UML类图中几种关系的总结,EA图中会用到

九种关系总结,EA图中会用到: 关联关系(Association):双向关联,单向关联,自关联.多重性关联Multiplicity. 聚合(Aggregation):整体与部分的关系,整体对象销毁时成员对象不销毁,一般是构造函数或Set方法传入成员对象. 组合(Composition):整体与部分的关系,整体对象销毁时成员对象一并销毁,一般在构造函数中创建成员对象. 依赖关系(Dependency):Driver类依赖Car类的move方法,Driver--->Car 泛化关系(Generali