【转】识别用例之间的关系

用例间的三种关系:
(1)扩展(extends):用例B extends 用例A,表示用例B是用例A在某种特定情况下可能会出现的扩展用例。例如:老王进城办事,2小时就可以回去,在这2小时内内急时就会去上厕所。上厕所用例是进城用例的扩展,因为不上厕所老王进城办事也可完成。
(2)包含(includes):用例A includes 用例B,表示没有了用例B,用例A本身也就不完整了。例如:还是老王进城,他从海南来北京办事,3天才能回去,那么这种情况下进城用例与上厕所用例的关系就应该是包含关系了。
(3)泛化:泛化关系指的是同一业务目的的不同技术实现。例如:老王进城,他可以坐飞机,可以坐火车,还可以走路,那么进城用例就泛化为坐飞机、坐火车和走路三个用例了,它们之间存在层级关系。
总的来看,扩展可以“冻结”基本用例以保持稳定(因为扩展用例通常是不确定的);包含可以提供公共交互,提高“复用”;泛化是同一业务目的的不同技术实现。用例之间除了上述三种关系不再有其他关系,用例之间不能通讯。

======================================================

下面是另外一种解释,用例子来描述。

4.2 用例之间的关系

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

4.2.1 包含(include)

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



包含关系是UML1.3中的表述,在UML1.1中,同等语义的关系被表述为使用(uses),如下图。



在ATM机中,如果查询、取现、转帐这三个用例都需要打印一个回执给客户,我们就可以把打印回执这一部分内容提取出来,抽象成为一个单独的用例"打印回执",而原有的查询、取现、转帐三个例都会包含这个用例。每当以后要对打印回执部分的需求进行修改时,就只需要改动一个用例,而不用在每一个用例都作相应修改,这样就提高了用例模型的可维护性。



在基础用例的事件流中,我们只需要引用被包含用例即可。

查询-基本事件流

1. 用户插入信用卡

2. 输入密码

3. 选择查询

4. 查看帐号余额

5. 包含用例"打印回执"

6. 退出系统,取回信用卡

在这个例子中,多个用例需要用到同一段行为,我们可以把这段共同的行为单独抽象成为一个用例,然后让其他的用例来包含这一用例。从而避免在多个用例中重复性地描述同一段行为,也可以防止该段行为在多个用例中的描述出现不一致性。当需要修改这段公共的需求时,我们也只需要修改一个用例,避免同时修改多个用例而产生的不一致性和重复性工作。

有时当某一个用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。

4.2.2 扩展(extend)

扩展(extend)关系如下图所示,基础用例(Base)中定义有一至多个已命名的扩展点,扩展关系是指将扩展用例(Extension)的事件流在一定的条件下按照相应的扩展点插入到基础用例(Base)中。对于包含关系而言,子用例中的事件流是一定插入到基础用例中去的,并且插入点只有一个。而扩展关系可以根据一定的条件来决定是否将扩展用例的事件流插入基础用例事件流,并且插入点可以有多个。



例如对于电话业务,可以在基本通话(Call)业务上扩展出一些增值业务如:呼叫等待(Call Waiting)和呼叫转移(Call Transfer)。我们可以用扩展关系将这些业务的用例模型描述如下。






在这个例子中,呼叫等待和呼叫转移都是对基本通话用例的扩展,但是这两个用例只有在一定的条件下(如应答方正忙或应答方无应答)才会将被扩展用例的事件流嵌入基本通话用例的扩展点,并重用基本通话用例中的事件流。

值得注意的是扩展用例的事件流往往可以也可抽象为基础用例的备选流,如上例中的呼叫等待和呼叫转移都可以作为基本通话用例的备选流而存在。但是基本通话用例已经是一个很复杂的用例了,选用扩展关系将增值业务抽象成为单独的用例可以避免基础用例过于复杂,并且把一些可选的操作独立封装在另外的用例中。

4.2.3 泛化(generalization)

当多个用例共同拥有一种类似的结构和行为的时候,我们可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。



以下是一个用例泛化关系的例子,执行交易是一种交易抽象,执行房产交易和执行证券交易都是一种特殊的交易形式。

用例泛化关系中的事件流示例如下:



 

用例图之间的几种关系 用例图之间的几种关系 1. 执行者与执行者之间的唯一关系(继承) A.解释 执行者与执行者之间只有一种关系即继承(也叫泛化)。其意义与面向对象过程中的继承关系类似,但它主要强调子类执行者对父类执行者与用例之间的交互行为的继承。 B.表示形式 (从子类指向父类) C.核心 两个或两个以上执行者之间有共性,共性单独设为一个执行者。 D.例子 在教务管理系统中,老师、学生、用户之间的关... 阅读详情

相关推荐

【UML】——用例图关系讲解

一.用例图简介             用例图是需求分析的产物,描述了系统的参与者与系统进行交互的功能,是参与者所能观察和使用到的系统功能的模型图。它的主要目的就是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的“角色”关系以及系统各个功能之间的关系。它通过用例(Use Case)来捕获系统的需求,再结合参与者(Actor)进行系统功能需求的分析和设计。 为了减少模型维

周士豪 3704

用例图之参与者、用例间的四种关系

用例图中包括三种元素,参与者,用例,它们之间的关系。下面说说参与者与用例之间,用例与用例之间都有哪些关系。 1.关联关系         定义:参与者与用例之间通常用关联关系来描述。         表示方法:带箭头的实线,箭头指向用例。         如图所示:     2. 泛化关系         定义:一个用例可以被特别列举为一个或多个子用例,这被称为用例泛化。

sunny_LI 9万+

实体识别和关系抽取的联合模型总结

实体识别和关系抽取的目标是从非结构化的文本中发现(实体1、关系、实体2)的三元组,它对知识库的构建和问答任务都很重要,是信息抽取的核心问题。 现有的关系抽取方法主要有两种: 1.使用流水线方法进行抽取:先对句子进行实体识别,然后对识别出的实体两两组合,再进行关系分类,最后把存在实体关系的三元组做为输入。 缺点:1.错误传播,实体识别模块的错误会影响下面的关系分类性能。2.差生了没必要的冗余信...

NeilGY的博客 2万+

UML用例图中三种关系详解

用例图的三种关系 泛化(Generalization) 包含(Include) 扩展(extend) 概念和用法 (1)泛化关系:是一种继承关系,子用例是父用例的一种特殊形式,它继承了父用例的所有结构、行为、关系。其中三角箭头指向父用例。 ...

晴宇 1万+

面向对象中类与类之间的关系

类与类之间的关系是面向对象编程(OOP)中的核心概念之一,它们描述了不同类之间的相互作用和依赖方式。关联、聚合、组合、依赖

ULTRAmanTAROACE的博客 1618

别再只盯着轨迹线了!FLUENT DPM后处理实战:从粒子采样到直方图报告的完整流程

本文详细介绍了FLUENT DPM后处理的完整流程,从粒子采样到直方图报告的实战技巧。通过设置采样面、分析.dpm文件数据以及创建加权直方图,帮助工程师获取粒子速度、粒径分布等定量信息,提升多相流模拟的深度分析能力。特别适合需要超越轨迹线分析的CFD工程师。

weixin_28730353的博客 277

识别用例之间的关系

用例间的三种关系:(1)扩展(extends):用例B extends 用例A,表示用例B是用例A在某种特定情况下可能会出现的扩展用例。例如:老王进城办事,2小时就可以回去,在这2小时内内急时就会去上厕所。上厕所用例是进城用例的扩展,因为不上厕所老王进城办事也可完成。(2)包含(includes):用例A includes 用例B,表示没有了用例B,用例A本身也就不完整了。例如:还是老王进城,他从

小马的专栏 2832

PADS VX2.7学习记录06-PADS Router软件功能操作

PADS VX2.7学习记录06-PADS Router软件功能操作

qq_31444421的博客 7860

识别和非识别关系之间有什么区别?

我无法完全掌握差异。 您能否同时描述两个概念并使用真实示例?

p15097962069的博客 1613

DEMATEL-ISM模型的Python实现——方法介绍以及代码复现

本文参考文献与网络资料,对DEMATEL-ISM方法做了介绍何步骤描述,并给出Python代码进行了计算和绘图。

cros1的博客 2万+

基于STM32F103C8T6的循迹避障小车完整制作过程(详细)----上篇(第123点)

基于STM32F103C8T6的循迹避障小车完整制作过程 由于本人的一个小项目,要做一个基于STM32的循迹避障小车,前后花了约1周的时间,这个过程种也参考了很多大神分享的资料,学到很多的东西。但是资料都比较分散,有些东西也不好找,在这里就想把自己制作小车的一个整体过程记录分享一下,希望能够帮到你。 我自己也算是一个小白,之前有做过 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎...

weixin_43924857的博客 14万+

UML用例关系识别

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

橙子撸代码专栏 1450

高级技能-高可用和容灾-两地三中心、异地多活架构

两地三中心和异地多活是当前主流的跨地域高可用架构方案。两地三中心通过生产中心、同城灾备和异地灾备的组合,提供多级容灾能力,适合对数据安全要求高的行业。异地多活则采用单元化设计,多个站点同时服务,提升资源利用率,但需解决网络延迟、数据冲突等挑战。两种架构在RTO/RPO、一致性、改造成本等方面各具特点,企业应根据业务规模、一致性要求和预算进行选择,可考虑从同城双活起步,逐步向异地多活演进。混合架构可能是平衡容灾与多活的务实方案。

zhongjianfeng100的博客 168

【AIGC】AI文本转语音+语音转文本,构建专属领域转文本模型

我们展示了如何使用阿里百炼的语音合成和语音识别技术,实现文本转语音和语音转文本的完整流程,并讲述如何针对自己的业务构建专属转文本模型。我们获取到比较精确的转出的文字再去做别的处理,可以极大帮助我们的实际业务。

智兔唯新的博客 7613

3、固定翼无人机模型解析

本文详细解析了固定翼无人机的动力学模型与纵向模型,涵盖位置、速度、角度及角速度的变化率方程,并介绍了力和力矩的计算方法以及气动系数的表达式。通过关键参数分析,探讨了速度、迎角和倾斜角对飞行性能的影响。文章还展示了模型在编队飞行和任务规划中的应用,并提出了参数优化与先进控制策略等优化思路,为无人机飞行控制系统设计提供了理论基础。

gaochao的博客 240

PHP实现获取本机ip及mac地址​(附完整源码)

PHP实现获取本机ip及mac地址​(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 352

用例建模

用例建模UML需求建模图示需求分析阶段的工作任务什么是业务用例建模什么是用例图用例图的作用用例图对开发的意义大学信息系统的一个用例图如何建立用例模型用例图的组成UML需求建模过程用例建模技术确定系统的范围和边界识别参与者识别用例识别用例间的关系***(1)参与者与用例之间的关系******(2)参与者之间关系******(3)用例之间关系***详解:包含(include)关系详解:扩展(exten...

万事胜意 7635

华为OD机试真题 新系统 2026-08-16 Python&JS【智能家居模式调度优化】

智能家居系统中有多个自动化联动模式,每个模式 modes[i]=[start_time,end_time,power],表示它在左闭右开区间 [start_time,end_time) 内持续消耗固定功率 power。

MISAYAONE的博客 85

慕课软件工程(第十二章.识别对象之间的关系)

慕课北京大学.软件工程.第十二章.面向对象分析.识别对象之间的关系0 目录12 面向对象分析12.4 识别对象之间的关系12.4.1课堂重点12.4.2测试与作业13 下一章 0 目录 12 面向对象分析 12.4 识别对象之间的关系 12.4.1课堂重点 12.4.2测试与作业 1单选(2分)在面向对象分析阶段,对于继承关系的简化以下说法正确的是___...

weixin_42473228的博客 1313

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

RUP之用例间的关系

这一段时间,参加了部门组织的RUP教学项目,由一位“外援”架构师为我们指导教练。最近一直在忙于业务建模,今天刚刚将自己负责部分的系统用例识别了一遍。其间一直有一个问题,缠绕着包括我在内的很多同事,那就是用例之间的关系——包含、扩展、泛化——到底该如何使用。    翻阅了同事去年参加RUP培训时带来的材料,终于能基本分清三者之间的关系。 用例是从系统外部可见的行为,是系统为某一个或几个参与者(Act

跬步致远——Ai92 4606

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

UML类和类之间的关系详解

五分钟读懂UML类图 12-10 10:411097浏览举报 T字号 平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道。实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一、类的属性的表示方式 在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,ag...

smilehappiness的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

EA&UML日拱一卒 用例泛化关系

使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。给定一个类目,其指向一般类目(泛化方向)的传递闭包通常统称为泛化类目,其指向特殊类目(泛化的反方向)的传递闭包通常统称为特化类目。增加具象用例的种类在一个完全不考虑具体场景(例如可以是一个和银行完全无关的场景)的情况下进行,从而可以开发出更加通用的用例。将上述3种形式的认证进行泛化可以得到一个抽象的用户认证用例。除了密码认证,还可以有指纹认证:​​​​​​​。也可以有面部识别:​​​​​​​。...

面向对象思考 1075

UML之用例图

什么是UML? UML是Unified MOdeling Language(统一建模语言)的简称。 1、UML是一种语言 2、UML是一种可视化语言 3、UML是一种适于详细描述的语言 4、UML是一种结构语言 5、UML是一种用于文档化的语言 用例图: 用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。简单地说就是谁使用这个系统做什么的。 图元素: 1、参与者 在系统之外与系统交互的某人或者...

瑾兮 2273

用例建模之用例图

用例图 UseCase Diagram 通俗来说,用例是文本形式的情节描述,用以说明某参与者使用系统以实现某些目标。用例建模主要是编写文本的活动,而非制图。 用例建模的制品有用例图和用例描述,我这篇博客只说下画用例图的一些方法和注意要点。但需要强调的是,用例是文本文档,用例图在编写用例工作中是次要的。 制作合理的用例图,通常给团队带来以下利益: 明确系统的业务范围、服务对象(角色...

qq_33361432的博客 8462
上一篇: dt.jar、tools.jar、rt.jar这几个包的作用
下一篇: 介绍两款用于Web原型设计的工具:Axure RP Pro 和 iRise Studio。
topinking
博客等级 码龄20年 15粉丝 242原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值