UML用例图三种关系详解

合集下载

UML用例和用例图

UML用例和用例图

h
18
主要内容
基本概念:Use case、Actor、
Scenario Use case间的关系 Use Case 分析技术 案例讲解
h
19
关系
• 参与者与用例之间
– 关联关系
• 用例与用例之间
– 包含关系 (include) – 扩展关系 (extend) – 泛化关系 (generalization)
• 主事件流: • 1、系统显示ID和密码窗口; • 2、顾客键入ID和密码,然后按OK键; • 3、系统验证顾客ID和密码,并显示个人信息窗口; • 4、顾客键入姓名、街道地址、城市、邮政编码、电话号码,然
后按OK键; • 5、系统验证用户是否为老顾客; • 6、系统显示可以卖的商品列表; • 7、顾客在准备购买的商品图片上单击,并在图片旁边输入要购
• 用例结束后的系统状态
• 其他需要描述的内容
用例描述原则:尽可能写的“充分”,而不是追求写的形 式化、完整或漂亮。
h
32
h
33
书写用例文档
——路径交互步骤的描述
只书写“可观测”的 使用主动语句 句子必须以执行者或系统作为主语 每一句都要朝目标迈进 分支和循环 不要涉及界面细节
h
34
书写用例文档
买的数量。选购商品完毕后按Done按钮; • 8、系统通过库存系统验证要购买的商品是否有足够库存; • …….(后续描述省略)
问题:对用户界面的描述过于详细,对于需求文档来说, 详细的用户描述对获取需求并无帮助。
h
45
改进后的描述
• Use Case:Buy Something • 参与者:Customer • 主事件流: • 1、顾客使用ID和密码进入系统; • 2、系统验证顾客身份; • 3、顾客提供姓名、地址、电话号码; • 4、系统验证顾客是否为老顾客; • 5、顾客选择要购买的商品和数量; • 6、系统通过库存系统验证要购买的商品是否有足

简述uml用例间的关系

简述uml用例间的关系

简述uml用例间的关系UML(Unified Modeling Language)是一种用于软件开发的建模语言,它提供了一种标准的图形化表示方法,用于描述系统的结构、行为和交互。

在UML中,用例图是一种常用的图形化表示方式,用于描述系统的功能需求和用户与系统之间的交互。

用例间的关系是指不同用例之间的相互关联和影响。

在UML中,用例间的关系有以下几种:1. 包含关系(Include):表示一个用例包含另一个用例的功能。

当一个用例需要借用其他用例的功能时,可以使用包含关系来表示。

例如,一个购物车用例可能包含了添加商品、移除商品和结算等子用例。

2. 扩展关系(Extend):表示一个用例可以在特定条件下扩展另一个用例的功能。

当一个用例的某个功能在特定条件下可以被扩展时,可以使用扩展关系来表示。

例如,一个支付用例可以在用户选择使用优惠券时扩展结算用例的功能。

3. 泛化关系(Generalization):表示一个用例是另一个用例的特殊情况或特化。

当一个用例继承了另一个用例的功能,并且在此基础上添加了新的功能时,可以使用泛化关系来表示。

例如,一个在线购物系统中的用户登录和游客购物两个用例可以通过泛化关系来表示,游客购物是用户登录的特殊情况。

4. 关联关系(Association):表示不同用例之间的关联和交互。

当一个用例需要与其他用例进行交互时,可以使用关联关系来表示。

例如,在一个社交网络系统中,用户发布动态和用户评论动态两个用例可以通过关联关系来表示。

5. 依赖关系(Dependency):表示一个用例依赖于另一个用例。

当一个用例的实现依赖于其他用例时,可以使用依赖关系来表示。

例如,在一个在线购物系统中,购物车结算用例依赖于查看购物车用例。

6. 一般化关系(Realization):表示一个用例实现了另一个用例的功能。

当一个用例实现了另一个用例定义的接口和行为时,可以使用一般化关系来表示。

例如,一个在线支付系统可以实现支付用例定义的支付接口和行为。

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

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

⽤例图之参与者、⽤例间的四种关系⽤例图中包括三种元素,参与者,⽤例,它们之间的关系。

下⾯说说参与者与⽤例之间,⽤例与⽤例之间都有哪些关系。

1.关联关系定义:参与者与⽤例之间通常⽤关联关系来描述。

表⽰⽅法:带箭头的实线,箭头指向⽤例。

如图所⽰:2. 泛化关系定义:⼀个⽤例可以被特别列举为⼀个或多个⼦⽤例,这被称为⽤例泛化。

泛化关系在类间也有。

⼦⽤例从⽗⽤例处继承⾏为和属性,还可以添加⾏为或覆盖、改变已继承的⾏为。

表⽰⽅法:带空⼼箭头的实线,箭头指向被泛化(被继承)的⽤例,即⽗⽤例。

(PS:泛化关系的箭头不是指向被泛化,⽽是指向被继承。

泛化和继承是不同的⽅向。

泛化是从下到上的抽象过程,继承是从上到下,从⼀般到特殊的过程。

)如图所⽰:机房收费系统中可以这样应⽤:当系统中具有⼀个或多个⽤例是⼀般⽤例的特化时,就使⽤⽤例泛化。

3.包含关系定义:其中⼀个⽤例(基础⽤例)的⾏为包含了另⼀个⽤例(包含⽤例)的⾏为。

基础⽤例可以看到包含⽤例,并依赖于包含⽤例的执⾏结果。

但是⼆者不能访问对⽅的属性。

表⽰⽅法:虚线箭头+<<include>>字样,箭头指向被包含的⽤例。

如图所⽰:使⽤情况:(1)如果两个以上⽤例有重复的功能,则可以将重复的功能分解到另⼀个⽤例中。

其他⽤例可以和这个⽤例建⽴包含关系。

(2)⼀个⽤例的功能太多时,可以⽤包含关系创建多个⼦⽤例。

4.扩展关系(extend)定义:是把新⾏为插⼊到已有⽤例的⽅法。

个⼈感觉可以叫做特殊情况处理。

⽐如去⾷堂⽤饭卡打饭,绝⼤部分⼈是刷卡,拿饭,两个步骤就完成了。

但是如果某个学⽣的饭卡⾥没钱了,假定不⽤现⾦或者借钱或者赊账等等其他的⽅式来打饭,⽽是必须⽤⾃⼰的饭卡来打饭。

那么他就要先去给饭卡充值。

“饭卡充值”就是“刷卡”的⼀个扩展⽤例。

“饭卡充值”与“刷卡”就是扩展关系。

表⽰⽅法:虚线箭头+<<extend>>字样,箭头指向被扩展的⽤例(即基础⽤例)。

UML类图关系大全(经典)

UML类图关系大全(经典)

UML类图关系大全1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。

在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。

对象引用本身就是有向的,更适合表达我们所讨论的那种关系。

所以这种关系在设计的时候比较少用到,关联一般都是有向的。

使用ROSE 生成的代码是这样的:class C1...{public:C2* theC2;};class C2...{public:C1* theC1;};双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。

单向关联:C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。

没有生命期的依赖。

一般是表示为一种引用。

生成代码如下:class C3...{public:C4* theC4;};class C4...{};单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。

自身关联(反身关联):自己引用自己,带着一个自己的引用。

代码如下:class C14...{public:C14* theC14;};就是在自己的内部有着一个自身的引用。

2、聚合/组合当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。

聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。

这句话怎么解,请看下面组合里的解释)。

代码如下:class C9...{public:C10 theC10;};class C10...{};组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。

但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。

UML 用例图、关系图、活动图

UML 用例图、关系图、活动图

例如,一个银行系统中,有
一个“验证用户”用例,用 身份认证
于验证用户的合法性,它有
两 个 特 殊 的 子 用 例 , 一 个 是 密码认证
指纹认证
“检查密码”,另一个是
“检查指纹”,它们都有父
用例“验证用户”的行为,
并且可以出现在父用例出现
的任何地方,还可以添加自
己的行为。
用例图实例
• 以前面图书信息管理系统为例,画出用例 图。先找出参与系统地的角色:
• 扩展关系——允许一个用例扩展另一个用
例的功能。例如,在图书信息管理系统中,
读者还书时,系统检查所还图书是否有预
订记录,如果有则执行“通知”用例。在
UML中扩展关系表示为箭头和《extend》形
式。
《extend》
还书
通知
管理员
读者
注意
• 使用关系和扩展关系之间的区别,A使用B 本质上是A一定使用B,同时增加自己的专 属行为;而A被用例B扩展是说明A是一个一 般用例,B是一个特殊用例,A在某些条件 下可能使用B。
(2)取消预订——本用例提供取消预订图书的功能。
(3)还书——完成还书任务,在还书是要检查所还的书是否超 期、是否有其他读者预订,有的话要通知预订者。
(4)借书——提供借阅书功能 。
• 分析这个用例图,发现“还书”用例应该 被扩展,因为在还书时检查所还图书是否 有预订记录,若有,则应该通知预订者前 来借书。
• 一个用例内部的具体处理细节是由其他图形工具描述 的,用例图只是反映系统的总体功能,以及与这些功 能的相关的角色。有些人可能在画“借书”用例时, 情不自禁地就考虑了“输入读者号和书号”,“检查 图书是否在库?”,“图书数量减1”,“添加读者借 书记录”等等,一旦考虑了这些细节,就会发现用例 图画不下去了。因此,读者注意用例图中不要考虑处 理细节。

uml 基础教程 第三章-用例图

uml 基础教程 第三章-用例图
大多数标点符号,用例的名字是一个能准确描述功能的动 词短语或动词词组。
• 用例具有3个明显的特征: (1)用例表明的是一个类,而不是某个具体的实例 (2)用例必须由某一个参与者触发激活后才能执行,即
每个用例至少应该涉及一个参与者 (3)用例是一个完整的描述
椭圆来表示用例
“回顾”饮料销售机
• 在前面的分析中,我们获得了系统中有3个用例,分别是 “Buy soda(买饮料)”、“Restock(供货)”、“Collect( 收款)”。
• 假设正在对一台饮料机建模,这台饮料销售机允许顾 客选择买一罐饮料或是买一杯饮料。在这种情况下,“Buy Soda”就是一个父用例,“Buy a can of soda”和“Buy a cup of Soda”就是子用例。用例之间的泛化关系建模与类之间 泛化关系建模方法相同,用一条带空心三角形箭头的实线 从子用例指向父用例。
• 要用在用例图上显示某个用例:
➢使用人形符号绘制一个参与者;
➢绘制一个椭圆表示用例,将用例的名称放在椭 圆的中心或椭圆下面的中间位置;
➢使用带箭头或不带箭头的线段来描述参与者和 用例之间的关系。
举例:饮料销售机
• 假设你现在正着手设计一台饮料销售机。为了获得用户 的观点,你会见了许多可能的用户以了解这些用户将如何 与这台机器交互。
“取钱”用例
• 还有一个“取钱”用例,同样也是因为一段时间的流逝, 收款人发起了这个用例。它的前期工作步骤与”供货“一 样,也是打开销售机前端架子。收款人从机器中取出钱, 然后按照”供货“步骤,放回架子锁好机器。 这个用例的前置条件也是时间间隔的流逝,后置条件 是收款人收到了钱。
3.1.1 参与者
• 理想情况下,顾客看到这条消息后会立即选择其它品牌 的饮料。销售机也必须提供给顾客取回原来的钱的选项。 这表示,销售机应给顾客两种选择:让顾客选择另一种饮 料并且给顾客提供这种饮料(如果这种饮料还有存货的话) 或者让顾客选择退钱。

UML中三种常用的图

UML中三种常用的图

1.用例图:用例图是从用户的观点描述系统的功能,它由一组用例、参与者以及他们之间的关系组成他将系统的一个功能描述成一系列事件,这些事件最终对参与者产生有价值的可观测结果参与者(Actor):代表与系统交互的外部实体用例(Use-Case):表示系统能提供的功能,如:登录,查询等关联关系:当参与者与用列进行交互时,用例与参与者之间有关联关系,用一条直线表示这种关系参与者之间可能存在泛化关系,类似的参与者可以用泛化关系组成一般与特殊的层析结构如:经理初次之外,用例之间还存在一定的关系,具体包括包含(include)、扩展(extend)、泛化(Generalization)等3种关系(1)包含关系一个复杂系统中,不同用例之间可能存在一些相同的行为,这时可将这些相同的行为提取出来单独组成一个用例。

当其他用例使用该用例时,用例之间便形成了包含关系包含关系用带关键字<<include>>的虚线来表示,虚线指向被包含的用例注册新用户(2)扩展关系在用例的执行过程中,可能会出现异常行为,也可能在不同的流程分支中选择执行,这时可将异常行为或可选分支抽象成一个单独的扩展用例,它与主用例之间形成扩展关系扩展关系用带关键字<<extend>>的虚线表示,箭头指向被扩展的用例注册(3)泛化关系与参与者之间的泛化关系一样,用例之间的泛化关系是描述用例之间一般与特殊关系的,不同的子用例代表了父用例的不同实现方法。

密码找回2.类图类图描述系统的静态结构,表示系统中的类、类与类之间的关系以及类的属性和操作类用一个矩形方框表示,方框被分成3部分,最上面显示类名,中间部分显示类的属性,最下面显示类的操作类之间的关系包括关联、聚合、泛化、依赖等类型关联(Association)是一种结构定义,表达模型元素间的一种语义联系,它是对具有共同的结构特性、行为特性、关系和语义链的描述,使用一条连接在两个类之间的实线表示,关系的每一端用数字表示关系的重数。

UML用例图的创建与应用详解

UML用例图的创建与应用详解

UML用例图的创建与应用详解UML(Unified Modeling Language)是一种用于软件系统建模的标准化语言。

在软件开发过程中,UML用例图是一种重要的工具,用于描述系统的功能需求和用户与系统之间的交互。

本文将详细介绍UML用例图的创建与应用。

一、UML用例图的概念和基本元素UML用例图是一种用于描述系统功能的图形化表示方法。

它主要由用例(Use Case)、参与者(Actor)和关系(Relationship)三个基本元素组成。

1. 用例(Use Case):用例是对系统功能的描述,它表示系统与用户之间的交互。

每个用例代表一个特定的用户需求或系统功能。

用例通常以椭圆形状表示,并用文本标识。

2. 参与者(Actor):参与者是与系统进行交互的外部实体,可以是人、其他系统或外部设备。

参与者以人的图标或简单的方框表示,并用文本标识。

3. 关系(Relationship):用例和参与者之间的关系有三种:关联(Association)、包含(Include)和扩展(Extend)。

关联表示用例和参与者之间的关联关系,包含表示一个用例包含另一个用例,扩展表示一个用例可以根据条件扩展另一个用例。

二、UML用例图的创建步骤创建UML用例图可以分为以下几个步骤:1. 确定系统边界:首先确定系统的边界,即明确系统与外部实体的交互范围。

2. 确定参与者:根据系统边界确定参与者,包括系统的用户、其他系统或外部设备。

3. 确定用例:根据系统需求确定用例,描述系统的功能和用户需求。

4. 绘制用例图:根据确定的参与者和用例,使用UML工具绘制用例图,将参与者和用例按照关系连接起来。

5. 完善用例图:根据需要,可以添加用例之间的关系,如包含和扩展关系。

三、UML用例图的应用场景UML用例图在软件开发过程中有广泛的应用场景,以下是几个常见的应用场景:1. 需求分析:用例图可以帮助分析人员理解用户需求,明确系统的功能需求和用户与系统之间的交互。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1UML用例图中包含(include)、扩展(extend)和泛化(generalization)三种关系详解
共性:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。

1、包含(include)
包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。

基用例控制与包含用例的关系,以及被包含用例的事件流是否会插入到基用例的事件流中。

基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。

包含关系对典型的应用就是复用,也就是定义中说的情景。

但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。

这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。

例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那新建、编辑以及修改都要在用例详述中描述,过于复杂;如果分成新建用例、编辑用例和删除用例,则划分太细。

这时包含关系可以用来理清关系。

2、扩展(extend)
扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。

扩展用例为基用例添加新的行为。

扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。

但是扩展用例对基用例不可见。

对于一个扩展用例,可以在基用例上有几个扩展点。

例如,系统中允许用户对查询的结果进行导出、打印。

对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。

导入、打印和查询相对独立,而且为查询添加了新行为。

因此可以采用扩展关系来描述:
4、泛化(generalization)
泛化关系:子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。

子用例可以使用父用例的一段行为,也可以重载它。

父用例通常是抽象的。

在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。

例如,业务中可能存在许多需要部门领导审批的事情,但是领导审批的流程是很相似的,这时可以做成泛化关系表示:
上面是我参考的一篇文章,觉得将三种关系的区别讲得很清晰,在此基础上结合自己的系统,对项目(在线购物系统)的用例做了整体的描绘。

************************************************************** ***
(1)系统整体用例图
按照先整体用例,后子系统用例来进行描绘的,欢迎大家提出好的建议!
转:UML中扩展和泛化的区别
泛化表示类似于OO术语“继承”或“多态”。

UML中的Use Case 泛化过程是将不同Use Case之间的可合并部分抽象成独立的父Use Case,并将不可合并部分单独成各自的子Use Case;包含以及扩展过程与泛化过程类似,但三者对用例关系的优化侧重点是不同的。

如下:
●泛化侧重表示子用例间的互斥性;
●包含侧重表示被包含用例对Actor提供服务的间接性;
●扩展侧重表示扩展用例的触发不定性;详述如下:
既然用例是系统提供服务的UML表述,那么服务这个过程在所有用例场景中是必然发生的,但发生按照发生条件可分为如下两种情况:
⒈无条件发生:肯定发生的;
⒉有条件发生:未必发生,发生与否取决于系统状态;
因此,针对用例的三种关系结合系统状态考虑,泛化与包含用例属于无条件发生的用例,而扩展属于有条件发生的用例。

进一步,用例的存在是为Actor提供服务,但用例提供服务的方式可分为间接和直接两种,依据于此,泛化中的子用例提供的是直接服务,而包含中的被包含用例提供的是间接服务。

同样,扩展用例提供的也是直接服务,但扩展用例的发生是有条件的。

另外一点需要提及的是:泛化中的子用例和扩展中的扩展用例均可以作为基本用例事件的备选择流而存在。

相关文档
最新文档