用例图(Use Case Diagram)说明

article/2025/9/7 18:09:26

UML建模——用例图(Use Case Diagram)
        </h1><div class="clear"></div><div class="postBody"><div id="cnblogs_post_body" class="blogpost-body blogpost-body-html">

注:本文在 https://www.cnblogs.com/lcword/p/10472040.html 的基础上稍作修改。

用例图主要用来描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示这些元素之间的各种关系,如泛化关联依赖。它展示了一个外部用户能够观察到的系统功能模型图。

【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。

 

一、用例图所包含的的元素

1. 参与者(Actor)——与应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示

 

                

 

2. 用例(Use Case)——用例就是外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示,椭圆里面采用动宾结构的文字,也就是 “动词”+“名词”这样的格式,这些用例表明了系统能做什么事情。可以按照 角色 + 用例描述 这样的顺序来读图:如:角色为 “员工” ,用例为 “查询工资” ,读法就为“员工查询工资”

 

             

 

3. 子系统(Subsystem)——用来展示系统的一部分功能,这部分功能联系紧密。在所有的用例外面,有一个方框,这个方框只框住了用例,没有框住角色,这个框框叫做系统边界,框框的上部会注明本系统(子系统)的名称

 

    

4、线条:线条是指角色与用例之间的线条,线条有三种:无箭头的,指向用例的箭头,指向角色的箭头。无论是否有箭头,这些线条都是用来联系角色(小人)和用例(圈圈)的,表示某某角色能"做"什么用例。有箭头的线条,表示角色与系统交互的过程中,数据的流向,如果箭头指向用例,就说明角色需要往系统中输入数据,如果箭头指向角色,说明系统往角色输出数据。 而没有箭头的线条,则没有明确表示数据的流向,一般情况不需要明确表示数据的流向,只需要画无箭头的线条就可以了 。

 

 

二、用例图所包含的的关系

  用例图中涉及的关系有:关联泛化包含扩展

  如下表所示:

 

 

  a. 关联(Association)

 

  表示参与者与用例之间的通信,任何一方都可发送或接受消息。

 

  【箭头指向】:无箭头,将参与者与用例相连接,指向消息接收方

 

  

 

  b. 泛化(Inheritance)

 

  就是通常理解的继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。

 

  【箭头指向】:指向父用例

 

 

  c. 包含(Include)

 

  包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。包含关系对典型的应用就是复用,也就是定义中说的情景。但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。

  例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那添加、修改以及删除都要在用例详述中描述,过于复杂;如果分成添加用例、修改用例和删除用例,则划分太细。这时包含关系可以用来理清关系。

 

  【箭头指向】:指向分解出来的功能用例

 

 

  d. 扩展(Extend)

 

  扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。

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

 

  【箭头指向】:指向基础用例

 

 

  e. 依赖(Dependency)

 

  以上4种关系,是UML定义的标准关系。但VS2010的用例模型图中,添加了依赖关系,用带箭头的虚线表示,表示源用例依赖于目标用例。

 

  【箭头指向】:指向被依赖项

 

 

  5. 项目(Artifact)

 

  用例图虽然是用来帮助人们形象地理解功能需求,但却没多少人能够通看懂它。很多时候跟用户交流甚至用Excel都比用例图强,VS2010中引入了“项目”这样一个元素,以便让开发人员能够在用例图中链接一个普通文档。

 

  用依赖关系把某个用例依赖到项目上:

 

 

  然后把项目->属性的Hyperlink设置到你的文档上;

 

  这样当你在用例图上双击项目时,就会打开相关联的文档。

 

  6. 注释(Comment)

 

 

  包含(include)、扩展(extend)、泛化(Inheritance) 的区别:

 

  条件性:泛化中的子用例和include中的被包含的用例会无条件发生,而extend中的延伸用例的发生是有条件的;

 

  直接性:泛化中的子用例和extend中的延伸用例为参与者提供直接服务,而include中被包含的用例为参与者提供间接服务。

 

  对extend而言,延伸用例并不包含基础用例的内容,基础用例也不包含延伸用例的内容。

 

  对Inheritance而言,子用例包含基础用例的所有内容及其和其他用例或参与者之间的关系;

  ●泛化侧重表示子用例间的互斥性;

  ●包含侧重表示被包含用例对Actor提供服务的间接性;

  ●扩展侧重表示扩展用例的触发不定性;

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

 

 

三、几个用例图示例

 

****************************************************************************

  以下为某在线购物系统的用例图,对系统做出做了整体的描绘。

  (1)系统整体用例图


    


   
   
(商品用例图)

   
   
    
   
   
  
(购买信息用例)
  
   

   
    (用户资料用例)


   

分类: 程序员
<div id="blog_post_info">
好文要顶 关注我 收藏该文
lclc
关注 - 0
粉丝 - 269
+加关注
31
0
<div class="clear"></div>
<div id="post_next_prev"><a href="https://www.cnblogs.com/lcword/p/10396494.html" class="p_n_p_prefix">« </a> 上一篇:    <a href="https://www.cnblogs.com/lcword/p/10396494.html" title="发布于 2019-02-18 16:51">漫谈干系人识别管理</a>
<br>
<a href="https://www.cnblogs.com/lcword/p/10472118.html" class="p_n_p_prefix">» </a> 下一篇:    <a href="https://www.cnblogs.com/lcword/p/10472118.html" title="发布于 2019-03-04 17:48">网页打开速度的心理学</a>
posted @ 2019-03-04 17:37  lclc  阅读( 125635)  评论( 6)  编辑  收藏  举报
</div><!--end: topics 文章、评论容器-->

刷新评论 刷新页面 返回顶部
【推荐】百度智能云 2022 开年见礼,开发者上云优惠专场在等你
【推荐】新春有你也有礼,参与华为开发者生态市场论坛评论活动
【推荐】百度智能云 2022 新春嘉年华:云上迎新春,开心过大年
【推荐】华为开发者专区,与开发者一起构建万物互联的智能世界
编辑推荐:

· 从 MVC 到 DDD 的架构演进


· ASP.NET Core 6框架揭秘实例演示[02]:基于路由、MVC和gRPC的应用开发


· 理解 ASP.NET Core - 基于 JwtBearer 的身份认证


· [ASP.NET Core] 设置 Web API 响应数据的格式——FormatFilter特性篇


· 技术管理进阶——Leader应该关注成长慢的同学吗?

最新新闻
· 清华姚班陈丹琦获斯隆奖!与去年得主马腾宇是同班同学
· 星巴克用“涨价”回应“风波”
· 51亿美元吞下“高塔”,英特尔叫板台积电
· 索尼启动Treat Codes寻宝活动 有机会赢得一台PS5
· 研究发现网络安全犯罪正朝向利用零日漏洞的方向快速发展
» 更多新闻...

LoadPostCategoriesTags(cb_blogId, cb_entryId); LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid);
GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate, cb_postType);
loadOptUnderPost();
GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);

</div><!--end: forFlow -->
</div>

http://chatgpt.dhexx.cn/article/CNjybYcJ.shtml

相关文章

UML—用例图的那些事

目录 背景: 1.用例图的发展史 过程: 1.用例图中的元素和关系 2.应用中的例子 总结&#xff1a; 背景: 1.用例图的发展史 用例图是一种常用的软件工程工具&#xff0c;用于描述系统的功能需求和用户与系统的交互。它在软件开发过程中起到了重要的作用&#xff0c;并且经历了…

软件工程 -- 用例图

1.用例图&#xff1a;一幅用例图包含的模型元素有系统&#xff0c;行为者&#xff0c;用例及用例之间的关系 系统系统被看作是一个提供用例的黑盒子&#xff0c;内部如何工作&#xff0c;用例如何实现&#xff0c;这些对于建立用例模型来说都不重要。代表系统的方框的边线表示…

用例图2.0

顶层用例图&#xff1a; 查看玩家信息用例图&#xff1a; 查看玩家信息场景描述 用例名称 查看玩家信息 范围 玩家信息查看和修改 级别 子功能 主要参与者 玩家 涉众及其关注点 玩家&#xff1a;希望能够准确、快速地查看自己的信息和战绩。页面简洁易于截屏分享&a…

尝试使用Bouml创建用例图

文章目录 一、下载Bouml二、安装Bouml三、使用Bouml&#xff08;一&#xff09;创建项目&#xff08;二&#xff09;创建子包&#xff08;三&#xff09;创建用例图 Bouml是一个免费的UML 2工具箱&#xff0c;支持C&#xff0c;Java以及Idl。 一、下载Bouml 官网&#xff1a;…

软件工程-用例图

用例图简介&#xff1a; 用例图&#xff08;英语&#xff1a;use case diagram&#xff09;是用户与系统交互的最简表示形式&#xff0c;展现了用户和与他相关的用例之间的关系。通过用例图&#xff0c;人们可以获知系统不同种类的用户和用例。用例图也经常和其他图表配合使用…

[BoUML]用例图

使用BoUML可以轻松绘制用例图. *注意扩展关系的箭头(扩展了谁?),详细的有关箭头方向&#xff0c;可以参考:http://blog.csdn.net/TangZhongxin/article/details/4640248 有些书上的箭头方向都会指错&#xff0c;读的时候要小心!

asp.net_DropDownList应用

记录三个DropDownList的实践操作 1. 先上效果图 多选框选择其中一个选项&#xff0c;多行文本框输出这个选项的基本数据&#xff0c;以及下面的两个按钮的功能。 前端代码&#xff1a; <% Page Language"C#" AutoEventWireup"true" CodeFile"D…

mvc html dropdownlist,ASP.NET MVC中使用DropDownList地详解

DropDownList控件又称下拉列表框控件,DropDownList控件动态连接到数据库,按指定 条件从数据库 中查询 出列表选项数据,然后绑 定到控件,可以方便快速地显示出多个下拉选 项 。 同时 ,通过修 改数据库 中数据 ,可 以动 态改 变下 拉选项 在ASP.NET MVC中,尽管我们可以直接…

DropDownList 绑定数据

如何使用DropDownList 控件绑定数据呢&#xff0c;今天我们来介绍一下比较常用的一种方法——前后台结合方式&#xff1a; 首先&#xff0c;我们需要拉一个DropDownList 控件&#xff1a; 然后&#xff0c;通过控件配置SqlDataSource数据源&#xff0c;选择合适的数据表&#…

jQuery 如何得到 scrollHeight 的值

之前为了得到div的scrollHeight的值&#xff0c; 一直写法是这样的&#xff1a; $(#box)[0].scrollHeight; 今天我知道了另外一个方法&#xff1a; $(#box).prop(scrollHeight); 注意&#xff1a; $(#box).arrt(scrollHeight); 这个写法是undefined值

scrollHeight,clientHeight,scrollTop

移动端加载数据时&#xff0c;由于数据太多&#xff0c;不会一次性全部加载出来。有些会采用pc端那样用分页码的形式&#xff0c;但是更多的确实滑动滚动条到内容最后&#xff0c;加载更多内容出来。一般引入了三方的前端框架和插件&#xff0c;基本都会有此功能。偶尔会需要采…

前端中的scrollHeight 、scrollTop、clientHeight等意思

要记住 通过 标签.style.width是获取不到宽度的&#xff0c;如果必须要获取可以通过clientWidth&#xff0c;或者是offsetWidth 完成这个动作需要先知道三个高度&#xff1a; scrollHeight 文档内容实际高度&#xff0c;包括超出视窗的溢出部分 scrollTop 滚动条距元素…

一张图让你搞懂scrollHeight、offsetHeight等

名称属性说明clientTop只读clientTop 表示一个元素的顶部边框的宽度&#xff0c;不包括左外边距和左内边距。top可写该属性规定了元素的顶部位置&#xff0c;包括&#xff1a;内边距、滚动条、边框和外边距。scrollTop可写scrollTop表示被选元素的垂直滚动条位置offsetTop只读元…

document.body.scrollHeight 取值不变

遇到一个奇葩的问题,document.body.scrollHeight一直不变,不会因为content 内容的高度而变化 原因: 就是因为下面这个样式设定,overflowX.

scrollHeight的值一直为0,怎么办?

注意&#xff1a;要使用ref&#xff0c;不要使用document.getElementById&#xff0c;不然得不到scrollHeight真实的值。 如下&#xff1a; chatform的值一直为0&#xff0c;而listheight的值是有的

scrollTop和scrollHeight属性

--------------------------------------------------------------------- 检测滚动条是否滚动到底部&#xff1a; <body><div id"outerctn"><div id"innerctn"><div id"innerctn1">测试div1</div><div id&qu…

el.scrollHeight属性的理解

目录 前言 一、scrollHeight是什么&#xff1f; 二、没了 前言 在看iview的collaspse-transition组件实现时&#xff0c;发现有el.scrollHeight这个属性&#xff1a; enter(el) {el.dataset.oldOverflow el.style.overflowif (el.scrollHeight ! 0) {el.style.height el.scro…

html 滚动条 scrolltop scrollheight,浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight...

浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight 发布时间&#xff1a;2020-07-17 09:27:20 来源&#xff1a;亿速云 阅读&#xff1a;223 作者&#xff1a;小猪 小编这次要给大家分享的是浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeigh…

html5 scrollheight,scrollHeight和scrollWidth,获取网页内容高度和宽度不正确

问题如下图所示&#xff0c;高度明显不正确&#xff0c;请问问题出在哪&#xff0c;希望能给出详细解释。另外&#xff0c;希望能再具体解释下document.documentElement.clientHeight、window.innerHeight、document.documentElement.scrollHeight及document.body.clientHeight…

html5 scrollheight,JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记...

全文参考&#xff1a;https://github.com/iuap-design/blog/issues/38 、MDN clientHeight&#xff0c;只读 clientHeight可以用公式 CSS height CSS padding - 水平滚动条的高度 (如果存在) 来计算。 如图&#xff0c;这样一个div&#xff0c;它的clientHeight为95&#xff0…