PlantUML语法(全)及使用教程-用例图

news2024/11/26 11:35:17

目录

    • 1. 用例图
      • 1.1、什么是用例图
      • 1.2、用例图的构成
      • 1.3、参与者
      • 1.4、用例
        • 1.4.1、用例基本概念
        • 1.4.2、用例的识别
        • 1.4.3、用例的要点
        • 1.4.3、用例的命名
        • 1.4.4、用例的粒度
      • 1.5、应用示例
        • 1.5.1、用例
        • 1.5.2、角色
        • 1.5.3、改变角色的样式
        • 1.5.4、用例描述
        • 1.5.5、改变箭头方向
        • 1.5.6、使用注释
        • 1.5.7、使用包
      • 1.6、完整示例


1. 用例图

用例图是软件工程中的一种可视化表示方法,用于描述系统角色与系统本身之间的交互。它通过说明用例和与用例交互的角色来捕捉系统的动态行为。这些图表对于明确系统的功能要求和了解用户如何与系统交互至关重要。通过提供一个高层次的视图,用例图可以帮助利益相关者了解系统的功能及其潜在价值。PlantUML通过其基于文本的语言,为创建用例图提供了一种独特的方法。使用 PlantUML的主要优势之一就是简单高效。用户可以使用直观简洁的文字描述来定义图表,而不是手动绘制形状和连接。这不仅加快了图表创建过程,还确保了一致性和准确性。

1.1、什么是用例图

用例图(Use Case Diagram)是由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的视图,是被称为参与者的外部用户所能观察到的系统功能的模型图。

1.2、用例图的构成

用例图中主要的元素包括参与者用例以及各元素之间的关系。除此之外,用例图中还可以包含注解约束

1.3、参与者

参与者(Actor)是与主体系统交互的外部实体。参与者可以是系统外部的人、子系统、其它系统等。

1.4、用例

1.4.1、用例基本概念

用例是参与者可以感受到的系统服务或功能单元。它定义了系统要实现的一个目标。用例只定义系统的一个行为,而不显示系统的内部结构。
用例最大的优点是站在用户的角度描述系统功能。

1.4.2、用例的识别

  1. 参与者需要系统提供哪些功能,以支持他的工作?
  2. 参与者是否需要查询系统中的某些信息?
  3. 参与者是否需要改变系统中的某些信息,如创建、修改和删除操作?
  4. 系统发生的特定事件或状态的改变是否需要通知参与者?
  5. 系统哪些外部事件会促使系统执行相关功能以应对?
  6. 系统是否提供相关功能以帮助维护人员来维护系统?
1.4.3、用例的要点

  1. 识别出的用例应该反应出系统的目标,即“要做什么”,而非“怎么做”,就是说用例不是系统实现的细节;
  2. 从参与者(用户)的角度出发定义用例,而非系统的角度;
  3. 用例应为参与者提供有价值的结果,而非动作的集合;
  4. 避免陷入功能分解,步骤分解;
  5. 每个参与者都应该有可执行的用例,每个用例都应关联至少一个参与者。
1.4.3、用例的命名

用例的命名需要站在用户的角度描述参与者达到的目标

命名方式:(状语)动词+(定语)宾语
比如使用微信支付、订餐、选课、借书。

1.4.4、用例的粒度

用例粒度是指用例细化或综合系统功能的程度。也可以说用例所包含的系统服务或功能单元的多少。用例粒度过粗或过大,则用例包含的系统功能就越多,反之越少。

用例粒度过细
系统中很多业务都包含这种增、删、改、查的操作,这样做并不能为用户提供任何有意义的目标,反而会忽略了用户的真正目的

在这里插入图片描述


  • 修改如下:
    上面这种“增删改查”无非就是用户管理,这才是参与者的真实目的。
    在这里插入图片描述

把步骤当用例


  • 修改如下:
    在这里插入图片描述

1.5、应用示例

1.5.1、用例

用例用圆括号括起来(两个圆括号看起来就像椭圆)。 也可以用关键字usecase来定义用例。
还可以用关键字as定义一个别名,这个别名可以在以后定义关系的时候使用。

@startuml

(用例1)
usecase 用例2
(用例3) as (YL3)
usecase (用例4\n测试)
@enduml

在这里插入图片描述

1.5.2、角色

角色用两个冒号包裹起来。 也可以用actor关键字来定义角色。 还可以用关键字as来定义一个别名,这个别名可以在以后定义关系的时候使用。

@startuml

:角色1:
:角色2\n测试: as JS2
actor 角色3
actor :角色4: as JS4

@enduml

在这里插入图片描述

1.5.3、改变角色的样式

用户头像样式:skinparam actorStyle awesome
透明人样式:skinparam actorStyle hollow

在这里插入图片描述
在这里插入图片描述

1.5.4、用例描述

如果想定义跨越多行的用例描述,可以用双引号将其裹起来。 还可以使用这些分隔符:

  • –(横线)
  • …(虚线)
  • ==(双横线)
  • __(下划线)

在这里插入图片描述

1.5.5、改变箭头方向

默认情况下,类之间的链接有两个破折号-- ,并且是垂直方向的。 可以通过像这样放一个破折号(或点)来使用水平链接
也可以通过反转链接来改变方向

@startuml

:user: -> (用例1)
:user: --> (用例2)

newpage
(用例3) <.. :user:
(用例4) <- :user:

@enduml

在这里插入图片描述

通过在箭头内添加left,right,up 或down 关键字来改变箭头方向

@startuml

usecase 增加用户 #red
usecase 删除用户 #yellow
usecase 修改用户 #pink
usecase 查询用户 #blue
usecase 管理用户

管理用户 -left->  增加用户
管理用户 -right-> 删除用户
管理用户 .down.> 修改用户
管理用户 -up-> 查询用户
@enduml

在这里插入图片描述

1.5.6、使用注释

用note left of , note right of , note top of , note bottom of等关键字给一个对象添加注释。

在这里插入图片描述

1.5.7、使用包

使用包来对角色或用例进行分组,rectangle来改变包的外观

@startuml
left to right direction
actor 图书管理员 as g
package 学生 {
  actor 大学生 as c
  actor "研究生" as fc
}
rectangle 图书管理 {
  usecase "整理书籍" as UC1
  usecase "购买书籍" as UC2
  usecase "借阅书籍" as UC4
}
fc --> UC4
g --> UC1
g --> UC2
c->UC4
@enduml

在这里插入图片描述

1.6、完整示例

@startuml
left to right direction
actor 用户
skinparam actorStyle awesome
actor 管理员

rectangle 操作 {
  usecase "注册" #blue
  usecase "登录"
  usecase "进入游戏"
  usecase "查看历史比赛"
  usecase "查看排行榜"
  usecase "修改密码"
  usecase "注销账号"
  usecase "删除用户"
  usecase "重置密码"
  usecase "删除记录"
  usecase "查看记录"
}
note right of 用户:用户管理note
note "用户管理note2" as N2
用户 .. N2

用户 --> 注册
用户 --> 登录
注册 -> 登录
登录 --> 进入游戏
进入游戏 --> 查看历史比赛
进入游戏 --> 查看排行榜
登录 --> 修改密码
登录 --> 注销账号
管理员-->删除用户 #red  :删除用户
管理员-->重置密码 #blue;line.dotted;text:blue : 重置密码
管理员-->删除记录 #green;line.dashed;text:green : 删除\n记录
管理员-->查看记录 #line:red;line.bold;text:red  : 查看记录

skinparam actorStyle hollow
:用户三:-->(用例)


@enduml

在这里插入图片描述

参考:
https://plantuml.com/zh/use-case-diagram
https://baijiahao.baidu.com/s?id=1711675795326766131

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1267431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“通识+产业”大模型,“Alaya元识”的赋能路径

2023年11月&#xff0c;国家工业信息安全发展研究中心、工信部电子知识产权中心发布的《中国AI大模型创新和专利技术分析报告》显示&#xff0c;我国大模型专利申请总数已突破4万余件&#xff0c;大模型相关领域的创新日益活跃。 相对于“能做诗会画画”的针对to C市场的大模型…

东南大学与OpenHarmony携手共建开源生态,技术俱乐部揭牌成立并迎来TSC专家进校园

11月25日,OpenAtom OpenHarmony(以下简称“OpenHarmony”)项目群技术指导委员会(以下简称“TSC”)与东南大学携手,于东南大学九龙湖校区金智楼一楼报告厅举办了“东南大学OpenHarmony技术俱乐部成立仪式暨OpenHarmony TSC专家进校园”活动。此次盛会标志着OpenHarmony开源社区和…

TCP 基本认识

1&#xff1a;TCP 头格式有哪些&#xff1f; 序列号&#xff1a;用来解决网络包乱序问题。 确认应答号&#xff1a;用来解决丢包的问题。 2&#xff1a;为什么需要 TCP 协议&#xff1f; TCP 工作在哪一层&#xff1f; IP 层是「不可靠」的&#xff0c;它不保证网络包的交付…

Alivia 1.0 正式版来了,打造更懂企业的营销「工具箱」

上周&#xff0c;「Whale 帷幄」2023 秋季发布会圆满落下帷幕。发布会上&#xff0c;帷幄创始人 & CEO 叶生晅重磅发布了专为营销和销售设计的企业级 AGI 工具——Alivia 1.0 正式版&#xff0c;获得了广泛的反响和好评。 在这一年里&#xff0c;帷幄在 AGI 产品创新及落地…

力扣刷题篇之分治

系列文章目录 目录 系列文章目录 前言 一、分解问题 二、解决子问题 三、合并结果 总结 前言 刷题按照&#xff1a; [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 - 力扣&#xff08;LeetCode&#xff09; 参考&#xff1a; 「五大常用算法」一文搞懂分治算法…

欧拉LINUX 23.09版本上安装ORACLE 19c

前面解决了在RHEL9上安装ORACLE 19C的问题后&#xff0c;发现龙蜥 LINUX23 上可以安装ORACLE19C,网上搜了一下&#xff0c;欧拉 linux 22.03 上&#xff0c;没有成功安装ORACLE 19c 的先例&#xff0c;23.09就更不用说了&#xff0c;但看到的错误&#xff0c;不外服都是缺 libp…

泛微OA对接金蝶云星空方案分享(对接场景解析)

分享金蝶云星空跟泛微OA系统集成对接的方案分享&#xff0c;主讲审批流程对接&#xff0c;表单对接的两类场景。分别是金蝶云星空发起申请和泛微发起流程审批&#xff0c;最终实现统一管理。 数据集成主要有以下好处&#xff1a; &#xff08;1&#xff09;数据一致性&#xf…

直播团队职责

一、直播策划 1.根据公司战略&#xff0c;制定直播计划和方案&#xff0c;包括直播频率、时间、主题等。 2.负责直播内容策划&#xff0c;包括商品选择、优惠策略、互动环节等。 3.分析市场竞争情况&#xff0c;调整和优化直播方案。 4.与团队协作&#xff0c;确保直播计划…

GANVAEDiffusion

数学基础 KL散度 描绘一个分布p和另一个分布q之间的偏离程度 当 p ( x ) q ( x ) p(x)q(x) p(x)q(x)时散度取得最小值 JS散度 另一种衡量两个概率分布相似性的方法 GAN 需要训练两个网络&#xff1b;损失来回波动&#xff0c;不好分辨&#xff0c;不容易收敛&#xff…

day32_Git

今日内容 零、 复习昨日 零、 复习昨日 一、引言 在单人开发过程中&#xff0c;需要进行版本管理&#xff0c;以利于开发进度的控制。 在多人开发过程中&#xff0c;不仅需要版本管理&#xff0c;还需要进行多人协同控制。 版本控制(VS) SVN GIT 二、介绍 Git是一个开源的…

WMS系统

什么是WMS系统&#xff1f; WMS&#xff08;Warehouse Management System&#xff0c;仓库管理系统&#xff09;是一种软件解决方案&#xff0c;旨在帮助用户优化仓库管理流程、管理和控制日常仓库运营。 WMS系统的主要功能有那些&#xff1f; 主要功能主要包括以下几点&…

AI伪原创软件-AI伪原创工具下载

在当今数字化时代&#xff0c;创作者们在追求独特创意的同时&#xff0c;也面临着时间和灵感的双重挑战。AI伪原创技术应运而生&#xff0c;为创作者提供了一种快捷而便利的解决方案。本文将专心分享两款备受瞩目的AI伪原创工具&#xff0c;147SEO伪原创、百度文心一言伪原创&a…

网站域名那些事儿

互联网用户对于在线数据安全的意识逐渐增强&#xff0c;因此拥有一个可靠的网络安全系统是至关重要的。而其中一个最重要的元素就是网站域名SSL证书。 SSL&#xff08;Secure Socket Layer&#xff09;是一种用于确保网站与访客之间通信安全的技术。通过使用SSL证书&#xff0c…

echarts案例网站

一、ppchart 网站&#xff1a;https://ppchart.com/#/ 二、echarts官网示例 网站&#xff1a;https://echarts.apache.org/examples/zh/index.html

[VNCTF 2023] web刷题记录

文章目录 象棋王子电子木鱼BabyGo 象棋王子 考点&#xff1a;前端js代码审计 直接查看js源码&#xff0c;搜一下alert 丢到控制台即可 电子木鱼 考点&#xff1a;整数溢出 main.rs我们分段分析 首先这段代码是一个基于Rust的web应用程序中的路由处理函数。它使用了Rust的异步…

龙迅LT8668SXC适用于TPYE-C/DP/HDMI转EDP/VBO同时环出一路HDMI/DP,支持分辨率缩放功能。

1.描述 应用功能&#xff1a;LT8668SXC适用于TYPE-C/DP1.4/HDMI2.1转EDP/VBO同时环出一路HDMI/DP应用方案 分辨率&#xff1a;高达8K30HZ&#xff0c; 工作温度范围&#xff1a;−40C to 85C 产品封装&#xff1a;QFN88 (10*10)最小包装数&#xff1a;1680pcs 2.产品应用 •视频…

BLIoTLink软网关,一键解决OT层与IT层的通信

在工业自动化领域&#xff0c;协议转换一直是一个重要的问题。不同的设备、系统往往使用不同的通信协议&#xff0c;这给数据采集、设备接入等带来很大的困扰。为了解决这个问题&#xff0c;各种协议转换软件应运而生。其中&#xff0c;BLIoTLink作为一款功能强大的嵌入式工业协…

设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。

使用C语言编写的算法,将原单链表根据字符类型拆分为三个单链表。其中,大写字母链表(upperList)、数字链表(digitList)和其他字符链表(otherList)分别用于存储相应类型的字符。 `Upper Case List`存储了大写字母A、C, `Digit List`存储了数字1、2、3, `Other List`存…

ESXi vSAN 整合多主机磁盘

VSAN 与 RAID区别&#xff1a; vSAN 可以管理 ESXi 主机&#xff0c;且只能与 ESXi 主机配合使用。一个 vSAN 实例仅支持一个群集。vSAN 不需要外部网络存储来远程存储虚拟机文件&#xff0c;例如光纤通道 (FC) 或存储区域网络 (SAN) 使用传统存储&#xff0c;存储管理员可以…

大数据之HBase

HBase介绍 Apache的三篇论文&#xff0c;GFS谷歌文件系统->HDFS&#xff1b;MR -> MR ; BigTable ->HBase;HBase是hadoop数据库&#xff0c;一种分布式、可扩展的大数据NoSQL数据库之一。适合对于大量数据进行随机、实时的读写操作 HBase数据模型 Bigtable是一个稀…