`
peterwei
  • 浏览: 249485 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

UML用例图之泛化(generalization)、扩展(extend)和包含(include)关系--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可以不画,这里只是为了让大家理解概念。

用例图:大家可以参照着图,好好理解。




加深理解
我们再用另外一个场景的用例说明一下include和extend,因为就这两个玩意比较容易搞混。
销户:因为销户必需先进行账户结算,所以这里用include
停机提醒:有两个可选项,短信提醒和邮件提醒,所以用extend.





经过以上的分析,相信大家对三种关系已经有比较好的理解了。大家有什么其它想法或好的见解,欢迎拍砖。

PS:以上用例图用Enterprise Architect 7.5所画,在此推荐一下EA,非常不错。可以替代Visio和Rose了。Visio功能不够强大,Rose太重。唯有EA比较合适。
  • 大小: 101.1 KB
  • 大小: 48 KB
分享到:
评论
25 楼 peterwei 2011-03-23  
leaow567 写道
不错 学习了 不知道ea 有没有逆向工程的 能力哦

这个肯定是有的,而且正向逆向都很perfect.
24 楼 leaow567 2011-03-23  
不错 学习了 不知道ea 有没有逆向工程的 能力哦
23 楼 peterwei 2011-03-21  
xunmi 写道
peterwei 写道
下一步,打算结合实际系统,写一系列Enterprise Architect7.5 uml建模工具的使用总结。

非常期待这个总结,虽然EA有自带的网上书店的例子,但图太多,实际当中用的最多就是用例图、时序图、流程图、类图、数据库设计。

最近在忙linux下的东西,没什么时间。等一有空闲我就会写。希望能带动大家使用Enterprise Architect和uml。
22 楼 xunmi 2011-03-21  
peterwei 写道
下一步,打算结合实际系统,写一系列Enterprise Architect7.5 uml建模工具的使用总结。

非常期待这个总结,虽然EA有自带的网上书店的例子,但图太多,实际当中用的最多就是用例图、时序图、流程图、类图、数据库设计。
21 楼 peterwei 2011-03-20  
fhlfwl 写道
peterwei 写道

泛化(generalization):泛化关系是一种继承关系,子用例将继承基用例的所有行为,关系和通信关系,也就是说在任何使用基用例的地方都可以用子用例来代替

说反了吧。。。。

没反。
20 楼 fhlfwl 2011-03-19  
peterwei 写道

泛化(generalization):泛化关系是一种继承关系,子用例将继承基用例的所有行为,关系和通信关系,也就是说在任何使用基用例的地方都可以用子用例来代替

说反了吧。。。。
19 楼 feng02120 2011-03-18  
很好,学习了,期待有其他图例的讲解
18 楼 floatingleaf 2011-03-18  
一点都不厚道  。:)《—_—》(:。
17 楼 aq1sw2 2011-03-17  
EA挺好的,画起来比UML方便。UML能画的EA也能画
16 楼 peterwei 2011-03-17  
floatingleaf 写道
嗯 好的。我大体懂了,就是一定切忌的是要:区别对待!谢谢你的交流,嘿嘿。
顺便弱弱的问下,PeterWei现在在哪儿高就吖 呵呵

北京的某个角落。
15 楼 floatingleaf 2011-03-17  
嗯 好的。我大体懂了,就是一定切忌的是要:区别对待!谢谢你的交流,嘿嘿。
顺便弱弱的问下,PeterWei现在在哪儿高就吖 呵呵
14 楼 peterwei 2011-03-17  
引用
那弱弱的问下,泛化的用例,加入到了编码的地步,会转化成什么样的关系吖.

做需求的时候最好不去考虑编码的事情。
use case的泛化更多是需求方面的东西,到了编码阶段,有可能没有任何关系。
如割接查询那个用例,有骨干查询、省间查询两个子用例。在开发阶段可能用的都是同一个查询方法,也有可能分开两个查询方法。在界面展示上,是两个不同的tab,或者两个不同的菜单。
同时用例里面的泛化和设计里的泛化又不是同一个概念。所以不用想太多。
13 楼 floatingleaf 2011-03-17  
peterwei 写道
floatingleaf 写道
实例需求场景
联通客户响应OSS中,extends 不就是 继承的意思吗?

“割接查询和不同的割接子查询Tab之间是继承的关系,所以此处用泛化”,这个可以理解。

“导出割接和查看故障单信息扩展了查看割接信息。”,这里也确实是上面所讲的extends的特性,我也理解了

但是,泛化的 本质 和 extends在类间的定义(也是 继承的意思),是一样的,这个回头再看的时候我搞晕了。

首先,我从没这样的需求直接去编码,但是通过这样的建模,试想在编码的时候 是不是 泛化和 extends在
父类 子类之间 都是用 extends了呢?
UML 中确实 泛化和 extends之间 有不同的表现形式, 但是编码的时候,类与类之间是不是 就区分不开泛化和extends了呢?
还有 查看割接通知 怎么是 extends了 割接通知查询了吖,文章里面没有提到,这里是楼主自己理解上去的吗?

等待楼主的回答。

这么说吧,这个use case之间的关系,和类设计之间没有必然联系。在做需求的时候你不用考虑设计的东西。

引用
“导出割接和查看故障单信息扩展了查看割接信息。”,这里也确实是上面所讲的extends的特性,我也理解了

扩展extends说明的是这个用例不是一定要执行的。比如你在查看割接信息界面里,有两个链接,一个是导出,另一个是查看故障单信息(另外相关的故障单模块信息)。这两个链接都不是一定要执行的,比如我只看割接信息,不导出也不查看其它信息。从而说导出扩展extends了前者。

引用
还有 查看割接通知 怎么是 extends了 割接通知查询了吖,文章里面没有提到,这里是楼主自己理解上去的吗?

参照上面的说明,这个也是类似的概念。ps:这是我们实际的系统用例分析,当然全部是我的理解。这不是抄来的,是原创。

那弱弱的问下,泛化的用例,加入到了编码的地步,会转化成什么样的关系吖
12 楼 peterwei 2011-03-17  
floatingleaf 写道
实例需求场景
联通客户响应OSS中,extends 不就是 继承的意思吗?

“割接查询和不同的割接子查询Tab之间是继承的关系,所以此处用泛化”,这个可以理解。

“导出割接和查看故障单信息扩展了查看割接信息。”,这里也确实是上面所讲的extends的特性,我也理解了

但是,泛化的 本质 和 extends在类间的定义(也是 继承的意思),是一样的,这个回头再看的时候我搞晕了。

首先,我从没这样的需求直接去编码,但是通过这样的建模,试想在编码的时候 是不是 泛化和 extends在
父类 子类之间 都是用 extends了呢?
UML 中确实 泛化和 extends之间 有不同的表现形式, 但是编码的时候,类与类之间是不是 就区分不开泛化和extends了呢?
还有 查看割接通知 怎么是 extends了 割接通知查询了吖,文章里面没有提到,这里是楼主自己理解上去的吗?

等待楼主的回答。

这么说吧,这个use case之间的关系,和类设计之间没有必然联系。在做需求的时候你不用考虑设计的东西。

引用
“导出割接和查看故障单信息扩展了查看割接信息。”,这里也确实是上面所讲的extends的特性,我也理解了

扩展extends说明的是这个用例不是一定要执行的。比如你在查看割接信息界面里,有两个链接,一个是导出,另一个是查看故障单信息(另外相关的故障单模块信息)。这两个链接都不是一定要执行的,比如我只看割接信息,不导出也不查看其它信息。从而说导出扩展extends了前者。

引用
还有 查看割接通知 怎么是 extends了 割接通知查询了吖,文章里面没有提到,这里是楼主自己理解上去的吗?

参照上面的说明,这个也是类似的概念。ps:这是我们实际的系统用例分析,当然全部是我的理解。这不是抄来的,是原创。
11 楼 peterwei 2011-03-17  
floatingleaf 写道
实例需求场景
联通客户响应OSS中,extends 不就是 继承的意思吗?

“割接查询和不同的割接子查询Tab之间是继承的关系,所以此处用泛化”,这个可以理解。

“导出割接和查看故障单信息扩展了查看割接信息。”,这里也确实是上面所讲的extends的特性,我也理解了

但是,泛化的 本质 和 extends在类间的定义(也是 继承的意思),是一样的,这个回头再看的时候我搞晕了。

首先,我从没这样的需求直接去编码,但是通过这样的建模,试想在编码的时候 是不是 泛化和 extends在
父类 子类之间 都是用 extends了呢?
UML 中确实 泛化和 extends之间 有不同的表现形式, 但是编码的时候,类与类之间是不是 就区分不开泛化和extends了呢?
还有 查看割接通知 怎么是 extends了 割接通知查询了吖,文章里面没有提到,这里是楼主自己理解上去的吗?

等待楼主的回答。

这个extends是use case里的概念,也就是说是用来捕获和整理需求的。和java语言里还有区别,也没有必然联系。你理解成扩展更合适。
10 楼 floatingleaf 2011-03-17  
实例需求场景
联通客户响应OSS中,extends 不就是 继承的意思吗?

“割接查询和不同的割接子查询Tab之间是继承的关系,所以此处用泛化”,这个可以理解。

“导出割接和查看故障单信息扩展了查看割接信息。”,这里也确实是上面所讲的extends的特性,我也理解了

但是,泛化的 本质 和 extends在类间的定义(也是 继承的意思),是一样的,这个回头再看的时候我搞晕了。

首先,我从没这样的需求直接去编码,但是通过这样的建模,试想在编码的时候 是不是 泛化和 extends在
父类 子类之间 都是用 extends了呢?
UML 中确实 泛化和 extends之间 有不同的表现形式, 但是编码的时候,类与类之间是不是 就区分不开泛化和extends了呢?
还有 查看割接通知 怎么是 extends了 割接通知查询了吖,文章里面没有提到,这里是楼主自己理解上去的吗?

等待楼主的回答。
9 楼 peterwei 2011-03-16  
你是说这个意思呀。没有专门的时序模型,因为时序图在用例模式、类模型等模型都能用到。算是公用的一个视图。
用个几天就可以很熟了。而且ea带有很多uml的模板和例子教程。
1.在某个模型里右键添加视图。




2.然后选择uml behaviral里的sequence图




3.假如你是在类模型里,可以把类直接往框架拖拉就行。


8 楼 Crusader 2011-03-16  
peterwei 写道
Crusader 写道
貌似不能画序列图?

不能画序列图的还是uml建模工具吗?当然能,可能你没有学会怎么画。:->



我是看你说的好才下的:),以前一直用powerdesigner
创建项目后,发现没有sequence模型,再研究下~~



7 楼 peterwei 2011-03-15  
Crusader 写道
貌似不能画序列图?

不能画序列图的还是uml建模工具吗?当然能,可能你没有学会怎么画。:->


6 楼 Crusader 2011-03-15  
貌似不能画序列图?

相关推荐

    UML用例图之泛化(generalization)、扩展(extend)和包含(include)关系

    用例的关系有泛化(generalization)、扩展(extend)和包含(include)。其中include和extend最易混淆。下面我们结合实例彻底理清三者的关系。基本概念用例图(UseCaseDiagram):用例图显示谁是相关的用户,用户希望系统...

    解释UML用例图中包含,扩展、泛化的区别.doc

    理解 UML 用例图中的包含、扩展、泛化关系 UML 用例图是Unified Modeling Language(统一建模语言)中的一种图形表示方法,用于描述系统的功能和行为。在 UML 用例图中,包含、扩展和泛化是三种基本关系,它们之间...

    UML用例图的包含,扩展,泛化的详细阐述.doc

    UML 用例图的包含、扩展、泛化的详细阐述 UML 用例图是一种重要的建模工具,用于描述系统的功能和行为。在 UML 用例图中,包含、扩展和泛化是三种基本关系,它们之间的区别和应用场景是开发者需要掌握的重要知识。...

    uml用例图实例讲解

    《UML用例图实例讲解》 UML(统一建模语言)是软件开发中用于系统建模的重要工具,其中用例图是描述系统功能需求的关键图表。本章将深入探讨用例图的概念、建模技术和一个实际的图书馆管理系统用例图的案例。 5.1 ...

    UML用例图实例讲解

    在"uml用例图实例讲解.ppt"这个文件中,可能包含了各种用例图的例子,如银行系统的用例图,其中可能有"存款"、"取款"、"转账"等用例,以及"客户"、"ATM机"等参与者。通过这些例子,初学者可以更好地理解用例图的...

    UML用例图例子

    **UML用例图(Use Case Diagram)是统一建模语言(Unified Modeling Language)中的一种图形表示形式,用于描述系统或软件的外部行为。它主要关注系统的功能需求,通过图形化方式来展示用户(Actors)与系统(System...

    UML用例图讲解PPT

    其中,用例图(Use Case Diagram)是UML中最基础的图表之一,主要用于描绘系统与用户、外部实体之间的交互关系,展示系统的主要功能和需求。 在UML用例图中,主要包含以下几个核心元素: 1. **参与者(Actor)**:...

    uml用例图实例讲解ppt

    其中,用例图(Use Case Diagram)是UML的一种静态视图,主要用于描绘系统的主要角色、用例以及它们之间的关系,帮助我们理解系统的需求和功能。以下是对用例图及其建模技术的详细解析。 **用例图的概念** 用例图...

    uml技术学习(附物流系统用例图)

    - **包含(Include)和泛化(Generalization)**:用例间的组合和继承关系,有助于减少冗余,提高模型的重用性。 3. **UML的基本图形元素** - **类(Class)**:描述系统中的对象,包括属性、操作和关系。 - **...

    UML,用例图

    【UML,用例图】是统一建模语言(Unified Modeling Language)中的一种图形表示方式,主要用于描述系统功能需求和用户交互。用例图提供了一种直观的方式来展示系统的外部行为,它关注的是谁(参与者)如何与系统进行...

    UML 用例图的PPT

    UML(统一建模语言)是软件开发中用于可视化、构造和文档化的标准工具,其中用例图是一种重要的图表类型,它描绘了系统与外部用户,即活动者之间的交互。用例图提供了一个高层次的视角,展示了系统的核心功能及其与...

    UML用例图 相关内容

    其中,**用例图**是UML中最直观且易于理解的部分之一,主要用于展示系统的功能需求,即系统应提供的服务。通过用例图,可以清晰地呈现用户与系统之间的交互关系,从而帮助开发者和利益相关者更好地理解和规划系统。 ...

    UML指南用例图

    用例图是UML中的关键元素之一,主要用来描述系统的功能需求,体现系统参与者与系统之间的交互关系。** 在本资料“UML指南:用例图”中,我们将深入探讨以下几个方面: 1. **用例图的基本概念**: - **用例(Use ...

    uml用例图.rar

    UML用例图是UML中的一个重要组成部分,主要用来描绘系统的需求,特别是用户与系统之间的交互。 **UML用例图的基本元素** 1. **参与者(Actor)**: 参与者是系统外部的实体,可以是人、硬件设备或其他系统。在用例...

    UML用例的关系_UML用例图关系_源码

    本文将深入探讨UML用例图中的关系,并详细解释如何理解和应用这些关系。 首先,UML用例图由几个核心元素构成:参与者(Actor)、用例(Use Case)和关系。参与者代表系统外的实体,如用户或外部系统;用例则表示...

    UML用例图实例 超时管理系统

    在这个实例中,我们将探讨如何运用UML用例图来设计和理解一个超时管理系统。 首先,理解超时管理系统的基本概念。超时管理系统通常用于监控和管理各种系统的运行时间,例如,防止用户在超市自助结账时长时间无操作...

    初学UML-用例图入门教程

    用例图是UML中的核心概念之一,它主要用来描绘系统与用户之间的交互,即系统外部参与者如何与系统进行交互,完成特定的任务或达到某种目的。用例图提供了一个高层次的视图,帮助我们理解系统的需求和功能。 1. **...

    UML中用例关系讲解

    UML中用例关系讲解 UML(Unified Modeling Language)是一种软件设计语言,用于描述、设计、构建和文档化软件系统。用例关系是UML中的一种关系类型,用于描述用例之间的关系。用例关系有三种:扩展关系、包含关系和...

Global site tag (gtag.js) - Google Analytics