您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
UML 用例图:提示和常见问题解答
 
作者:灵动生活
 
 
   次浏览      
2011-08-05
 
编辑推荐:
本文介绍UML 用例图的一些常见问题解答,希望对您的学习有所帮助。
本文由火龙果软件Alice编辑,推荐。

内容:

什么 是一个 UML 用例图 (UCD),我应该什么时候使用 它?

你怎么做 知道 UCD 中的 Actor 是谁吗?

你怎么做 知道在“System”框中放什么吗?

我图中的Actor 有相互作用。我如何表示它们?

我试图表示系统执行的一系列动作。我该怎么做呢?

UML用例图与传统流程图有什么不同?

我什么时候 使用 USES 箭头?

我什么时候 使用 extends 箭头?

什么是 用途和扩展之间的区别?

场景 我想将分支描述为几种可能的结果, 或具有一些错误条件。我该如何表示 使用用例图?

 

什么 是一个 UML 用例图 (UCD),我应该什么时候使用 它?

UML 用例图可用于 在水平 道路。也就是说,不仅仅是表示细节 对于系统的各个功能,可以使用 UCD 以显示其所有可用功能。这很重要 不过,需要注意的是,UCD 有根本的不同 从序列图或流程图中,因为它们确实如此 不尝试表示顺序或编号 系统 actions 和 sub actions 应该 伏法。有许多图形示例 在此常见问题解答中;您可能需要查看它们以熟悉 你自己和他们的外表。

UCD 只有 4 个主要元素: 您正在描述的系统交互的 Actor 与系统本身、用例或服务, 系统知道如何执行,以及台词 表示这些元素之间的关系。

您应该使用 UCD 来表示 从自上而下的角度看系统的功能 (也就是说,系统的功能一目了然 很明显,但所有描述都处于非常高的级别。 稍后可以将更多详细信息添加到图表中,以 阐明系统行为中有趣的点。

例: UCD 很好 适合描述所有事物的任务 可以通过数据库系统完成,由所有人 可能使用它的对象(管理员、开发人员、数据输入 人员。

您不应使用 UCD 来表示 异常行为(发生错误时)或尝试 说明必须执行的步骤顺序 才能完成任务。使用序列图可以 展示这些设计特点。
示例:UCD 不太适合描述 TCP/IP 网络协议,因为有很多 异常情况、分支行为和条件 功能(数据包丢失时会发生什么情况或 晚了,当连接中断时怎么办?

 

你怎么知道UCD里的角色是谁?

当使用 Action/Response 时 表中,它很容易识别 Actor:其 行为显示在 “Actor's Actions” 列是角色,以及其行为出现的实体 在 “System's Response” 列中是组件 在系统中。

如果您通过非正式会议 叙述、序列图或场景描述、 参与者通常是其行为 无法控制或更改(即,不 您正在构建或描述的系统的一部分。 演员最明显的候选者是人类 在系统中;除非在极少数情况下,当系统 你正在描述的实际上是一个人工过程(例如 作为与客户打交道的一种特定方法 员工应该跟随)您必须互动的人 with 都将是 actors。如果您的系统与 其他系统(数据库、由其他维护的服务器 人,遗留系统)你最好对待这些 作为演员,因为不是他们的行为 您有兴趣描述 。

例: 添加 管理公司财务的新数据库系统, 您的系统可能必须与他们的 现有的库存管理软件。既然你没有 编写此软件,不打算替换它,并且 只使用它提供的服务,这是有道理的 让该系统成为一个参与者。

你怎么知道该在"System"框里填什么?

系统框仅显示在顶层 图(请记住,典型的 UML 用例描述 将由许多图表和子图表组成), 并且应该包含用例椭圆,每个顶级一个 您的系统为其参与者提供的服务。任何 您的系统可能具有的内部行为 仅由系统的其他部分使用 未显示在系统框中。一种有用的思考方式 的 API API 的 API API 的 API 是这样的:如果使用 case 表示顶级服务,那么它应该 对与之交互的 Actor 请求有意义 在单个会话中仅提供系统的该服务 (无论从任何意义上说,“会话”是可理解的 在您的系统中。

例: 在图中 下面我们想展示 照相机。假设我们选择 “Open Shutter”, “Flash” 和 “Close Shutter” 为 顶级用例。当然,这些都是行为 相机有,但没有摄影师会选择 打开相机,打开快门,然后放下, 对他们当天的摄影感到满意。 要意识到的关键是这些行为 不是孤立地完成的,而是 一个更高级的用例 “Take Picture”。 (请注意,摄影师 在会话期间仅“拍照”一次 用他们的相机。

 

我图中的Actor 有相互作用。我如何表示它们?

如果 Actor 中,则无法表示这些交互 与您的系统位于同一图表上。您可以做什么 而是绘制一个单独的 UCD,将其中一个 Actor 本身作为一个系统,以及你的原始系统 (与其他演员一起)作为 Actor 图。

例: 假设你 想要绘制用户之间的交互,则 Web 浏览器及其联系的服务器。由于您可以 图上只有一个系统,您必须选择 一个明显的 “系统”,例如 服务器。然后,您可能会想绘制交互 lines 来执行,但这是一个问题,因为 目前尚不清楚这种交互的含义,因此并非如此 在这里展示它很有帮助。更有用的解决方案是 绘制两个图,显示所有交互, 如下。

 

我试图表示系统执行的一系列动作。我该怎么做呢?

使用UML用例图,您不能这样做。ucd应该是自上而下的、水平的功能描述,而不是逐条的行为描述。在大多数情况下,尝试用用例图表示操作序列并不是一个好主意。你应该使用顺序图或传统的流程图。(用UCD表示简单的分支条件是可能的,如下所述,但是您应该谨慎地使用这种技术,因为它会使图表变得不可读。)

UML用例图与传统流程图有什么不同?

如上所述,UCD 代表功能 以自上而下的方式,而流程图表示行为 以线性的、基于时间的方式。此外,您的开发方式 它们完全不同。

示例: (此文本 请参阅下图。在构建 UCD 时, 第一步是确定所有顶级 行为。完成此作后(不是很棘手 process)中,至少在高层次 方式,您的系统知道如何做的所有事情。 然后,您可以通过分解 use cases 转换为更多 use cases,这些用例由 顶级用例。在开发的每个阶段, 但是,您的 UCD 是系统对 功能性:它可能缺乏细节,但不会缺乏 feature set 元素。如果功能或行为 在项目的生命周期中添加或删除,则 您需要进行的更改范围是成比例的 既要考虑系统本身的更改范围, 以及模型的成熟度。这很有用,因为 这意味着,当您的模型非常年轻时(只有 high-level 绘制的图表)对系统进行彻底的更改 不涉及扔掉很多工作。一个 flow 但是,图表并不能正确描述系统 直到你画完它,即使那时很小 系统更改将导致重大返工 的流程图。通常,UCD 支持该过程 的分析和设计比流程图好得多。

什么时候使用“使用”箭头?

使用 arrow (或使用 edge 在传统图 thoery 中被调用)是从 一个用例 X 到另一个用例 Y,以指示 执行 X 的过程总是至少涉及执行 Y 一次(尽管它可能涉及多次执行,“在 least once“是唯一保证的关系 通过此符号。此符号可称为 aggregation 运算符,因为它表示给定的 用例是其组件 是它使用的用例。如果某个用例 使用其他几个组件,这意味着所有组件 用例必须在完成过程中完成 聚合用例,尽管没有规范 在 UCD 中,按照完成这些内容的顺序进行。一个 考虑 Arrow 用途的简短、助记法是 它可以被读取 X 使用 Y 表示“X 具有 a Y“作为其行为的一部分。

例: 假设你 想要向下图中添加细节,表示 一个航空公司预订系统。首先,您将创建 顶级服务的单独关系图,然后 您将添加构成顶级 的。“Check in Passenger” 有一个使用边 到“称重行李”和从“办理登机手续” Passenger“改为”Assign Seat“;这表明 为了为乘客办理登机手续,行李必须 称重,并且必须分配一个座位。同样, 图中指示为了添加预留 对于系统,必须检查可用空间,并且 必须记录乘客的信息。你可以 想象一下,进一步分解这些用例以展示 更多细节。

 

什么时候使用extends箭头?

extends 箭头(或 extends edge) 从用例 X 绘制到用例 Y,以指示 进程 X 是 与更通用的进程 Y 的类型相同。您将使用 这在您的系统具有许多 所有 subtasks 中的用例(进程) 常见,但每个都有不同之处 这使得你不可能把它们都混为一谈 一起集成到同一个用例中。

例: 假设你 想要向下图中添加细节,表示 一个航空公司预订系统。具体来说,您 想说明的是,并非所有的座位都上 飞机完全一样(有些窗户和一些 靠过道的座位),有时乘客会表达 偏好这些类型的座位之一,但不是 另一个。但当然,它们不能只是给出的 因为他们想要的座位 可能不可用。因此,分配过程 靠窗的座位涉及检查可用性 的窗口座位,而分配 过道座位涉及检查是否有 靠过道的座位。但是,即使这些过程不同, 它们在许多其他方面非常相似,因此 忽视它们的相似之处是没有意义的。 幸运的是,UML 让我们两者兼得:我们编写了 assign 这两种类型的座位是不同的过程,但 它们的相似之处在于两个进程都扩展了一个公共的 更一般的流程(分配席位)。

 

使用和扩展的区别是什么?

这可能是最好的思考方式 这些图表元素如下所示:

- “X 使用 Y”表示 任务 “X” 有一个子任务 “Y”; 即在完成任务 “X” 的过程中, 任务 “Y” 将至少完成一次。

- “X extends Y” 表示 “X” 是与 “Y” 类型相同的任务, 但 “X” 是一个特殊的、更具体的例子 执行 “Y”。也就是说,做 X 很像 执行 Y,但 X 有一些额外的进程 超越必须做的事情 order 完成 Y。

Example: 表示 为了成功“签到”,您必须 “称量行李”和“分配座位”, 按某种顺序进行多次。不过,关键是 是用例使用的所有 UC 都必须在 该用例被视为完整。一旦您 意识到有几种类型的座位分配, 您可能很想使用 uses edge 的 edge 如下所示,但这没有意义: 此图表明,为了分配席位,您 必须同时分配靠窗座位和靠过道座位 乘客。不过,不要害怕;这种情况是 由 extends 关系正确处理。用 extends 关系(如下所示 图),我们可以表示有两种方式 分配座位:分配靠窗座位和分配 一个靠过道的座位,但只需要在 为乘客分配座位的过程。

 

我想描述的场景分为几个可能的结果,或者有一些错误条件。我如何用用例图来表示呢?

表示失败和分支条件 通常最好使用 Sequence Diagram 或 流程图, 但是,在一些灰色地带的情况下,情况并不清楚 用例图是否合适。一个 经验法则:if in 表示分支作 在 Use Case Diagram 中,您必须添加更多 用例椭圆,并且生成的图表是 Muddy 或 令人困惑,请考虑使用不同的图表样式。

话虽如此,可以表示 UCD 的简单分支行为,尽管我会 想再次强调 UCD 不是流程图。 这是通过意识到如果用例或进程 你试图表示的可以有两个显著的 不同的结果(例如成功和失败), 那么这意味着你真的有两种不同的用途 案例:一个流程成功,一个 这个过程失败了。当然,这两个用例 的区别在于它们都是 原始用例,因此您将绘制原始用途 case 中,两个分支从它延伸出来。我认为 这几乎是对 extends edge 的含义的滥用, 因为它在这里真的没有被用来表示 用例的分类法(这是它的目的),但它是 而是利用特定的抽象定义 与 hack 流程图类行为的关系 out UCD 风格。同样,请谨慎使用这种技术; 它很快就会使图表变得不可读。

例: 假设 我们想表示普通 CD 播放器的用例。 当一切顺利时,CD 播放器会缩回托盘 CD 位于其上,读取它并开始播放。 (此行为的用例如下所示。 brevety 省略了顶级图表。 不幸的是,一些用户会命令系统 即使托盘中没有 CD,也可以播放 CD。因此,我们 具有故障条件,在此条件下,系统必须 执行除播放 CD 以外的其他作(即 prompt CD 的用户。为了表示这一点,我们修改了 普通图,其中包含一些额外的用例,其中 验证 CD 的存在。播放行为 CD 扩展了验证 CD 存在,因为它是验证 CD 所在的 CD。另一个 验证 CD 是否存在的特殊情况是 此作已完成,并且 CD 不存在,因此用户 提示输入 CD。我要最后一次说 这种扩展的使用有点触手可及,但它确实如此 一种优雅的方式来表达单个 此类行为数量较少时使用的用例。

 

 

   
次浏览       
 
相关文章

用户手册:EA Helper
自然语言自动化生成图
使用iSpace进行多人协作建模
基于模型的软件复用(MBSR)
 
相关文档

AUTOSAR_TR_BSW UML模型建模指南
UML时间图建模(基于EA)
UML 模型框架(基于EA)
UML序列图编写规范
 
相关课程

UML+EA+面向对象分析设计
UML + 嵌入式系统分析设计
业务建模与业务分析
基于UML和EA进行系统分析设计

最新活动计划
DeepSeek大模型应用开发实践 3-15[在线]
基于 UML 和EA进行分析设计 2-24[上海]
SysML和EA系统设计与建模 3-27[北京]
MBSE(基于模型的系统工程)2-27[北京]
OpenGauss数据库调优实践 3-11[北京]
UAF架构体系与实践 3-25[北京]
 
 
最新文章
在EA中内嵌文档- Artifact
EA中模型视图
EA中的实体关系图
使用EA进行风险建模
EA中的项目词汇表
EA的模型导出或导入csv文件
自定义表格(Custom Table)在EA中的使用
Gap Analysis Matrix(差距分析矩阵)
更多...   
MBSE工具
MBSE平台
建模工具 EA
模型库-Model Center
需求管理-ReqManager
自动建模-Modeler
多级仿真-Sys Simulator
代码工程-Code Engineer
文档生成器-DocGenerator
更多...   
成功案例
广汽研究院 SysML+EA+软件分析设计
高合汽车研发部门 建模工具EA、WebEA、学习视频
国汽智联 建模工具EA、模型库、WebEA和iSpace
亿咖通 MBSE工程体系与工具链咨询
中航无人机 MBSE工具链
吉利汽车 购买EA工具
华科汽车零部件 购买EA工具
东风岚图汽车 购买EA工具 以及EA定制开发
更多...