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

目录

    • 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

市场调研:智能音响市场分析与前景预测

信息技术的不断发展下我国智能音响产品逐渐出现在大众眼前&#xff0c;并且市场普及率也在不断提高。智能化成为各行业发展的新趋势&#xff0c;受到疫情的影响目前智能音响市场增速有所放缓。 智能音响又称为智能音箱是音箱升级的产物&#xff0c;是家庭消费者用语音进行上网的…

npm上传发布自定义组件超详细流程

前言 vue3&#xff0c;vite&#xff0c;基于element Plus 的el-table二次封装表格并且上传到npm上&#xff0c;让别人可以通过npm安装你的插件。 一、创建一个新的vue 项目 npm create vuelatest 自己取一个名字&#xff0c;然后一直回车 完成以后进入项目npm i,有用到eleme…

Android 10.0 Launcher3定制之首页时钟小部件字体大小的修改

1.前言 在10.0的产品开发中,在一些Launcher3的定制化开发中,在对于一些小屏幕的产品开发中,在首页添加时钟小部件会显得字体有点小, 所以为了整体布局美观就需要改动小部件的布局日期字体的大小来实现整体的布局美观效果,接下来来具体实现相关的功能 具体效果图: 2.Lau…

html-video:计算视频是否完整播放 / 计算视频完播率

一、video 播放视频 <video width"100%"id"myVideo"object-fit"fill":autoplay"true":loop"false":enable-auto-rotation"true":enable-play-gesture"true":src"videoInfo.videoUrl":pos…

Ubuntu 22.04 LTS 上 安装 Redis

Ubuntu 22.04 LTS 上的Redis安装指南 Redis是一种开源的内存数据存储&#xff0c;可以用作数据库、缓存和消息代理等。本文将会介绍两种不同的安装方式&#xff0c;包括从源代码编译安装以及通过apt包管理器安装。 一、从源代码编译安装Redis 首先&#xff0c;我们需要下载最…

MacOS 安装 Android Studio 通过 WIFI 无线真机调试

环境&#xff1a;Apple M1 MacOS Sonoma 14.1.1 软件&#xff1a;Android Studio Giraffe | 2022.3.1 Patch 3 设备&#xff1a;小米10 Android 13 一、创建测试项目 安卓 HelloWorld 项目: 安卓 HelloWorld 项目 二、Android Studio 与手机配对 1. 手机开启开发者模式 参考…

Python面试破解:return和yield的细腻差别

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是涛哥&#xff0c;今天为大家分享 Python面试破解&#xff1a;return和yield的细腻差别&#xff0c;全文3000字&#xff0c;阅读大约10钟。 在Python的函数编程中&#xff0c;return和yield是两个常用的关键词…

大数据Hadoop-HDFS_元数据持久化

大数据Hadoop-HDFS_元数据持久化 &#xff08;1&#xff09;在HDFS第一次格式化后&#xff0c;NameNode&#xff08;即图中的主NameNode&#xff09;就会生成fsimage和editslog两个文件&#xff1b; &#xff08;2&#xff09;备用NameNode&#xff08;即图中的备NameNode&…

多媒体信号处理复习笔记 --脑图版本

多媒体信号处理复习笔记 --脑图版本 依据 [2020多媒体信号处理复习笔记] 考前复习时使用Xmind制作 例图: PDF下载 BaiduYunPan 提取码&#xff1a;jbyw CSDN 下载

VMware虚拟机安装和使用教程(附最新安装包+以ubuntu为例子讲解)

目录 一、VMware Workstation 17 Pro 简介 二、新功能与改进 三、安装教程 3.1、下载安装包 3.2、运行安装包 四、创建虚拟机 五、启动虚拟机 六、总结与展望 一、VMware Workstation 17 Pro 简介 VMware Workstation 17 Pro是VMware公司为专业用户打造的一款虚拟化软件…

IDEA2022 Git 回滚及回滚内容恢复

IDEA2022 Git 回滚 ①选择要回滚的地方&#xff0c;右键选择 ②选择要回滚的模式 ③开始回滚 ④soft模式回滚的内容会保留在暂存区 ⑤输入git push -f &#xff0c;然后重新提交&#xff0c;即可同步远程 注意观察IDEA右下角分支的标记&#xff0c;蓝色代表远程内容未同步到本…

关于我司在上海物联网行业协会展厅展示项目案例

1 项目背景 上海市物联网行业协会&#xff08;SIOT&#xff09;是由本市物联网行业同业企业及其他相关经济组织自愿组成、实行行业服务和自律管理的非营利性社会团体法人&#xff0c;于2012年&#xff0c;经上海市经济和信息化委同意&#xff0c;在上海市社团局登记成立。 本…

redis的性能管理、主从复制和哨兵模式

一、redis的性能管理 redis的数据时缓存在内存中的 查看系统内存情况 info memory used_memory:853688 redis中数据占用的内存 used_memory_rss:10522624 redis向操作系统申请的内存 used_memory_peak:853688 redis使用内存的峰值 系统巡检&#xff1a;硬件巡检、数据库 n…

第二十章 多线程总结

继承Thread 类 Thread 类时 java.lang 包中的一个类&#xff0c;从类中实例化的对象代表线程&#xff0c;程序员启动一个新线程需要建立 Thread 实例。 Thread 对象需要一个任务来执行&#xff0c;任务是指线程在启动时执行的工作&#xff0c;start() 方法启动线程&…

从意义中恢复,而不是从数据包中恢复

从书报&#xff0c;录放机&#xff0c;电视机到智能手机&#xff0c;vr 眼镜&#xff0c;所有学习的&#xff0c;娱乐的工具或玩具&#xff0c;几乎都以光声诉诸视听&#xff0c;一块屏幕和一个喇叭。 视觉和听觉对任何动物都是收发信息的核心&#xff0c;诉诸视觉和听觉的光和…

防火墙 iptables的使用

目录 什么是防火墙 原理 代理 防火墙的工具 4表5列 五链&#xff1a;控制流量的时机 四个表&#xff1a;如何控制流量 ​编辑 iptables 软件 格式 选项 查iptables 的规则 添加规则 A I 删除规则 清空规则 替换规则 R 修改默认规则&#xff08;默认是允…

springboot启动开启热部署

springboot启动开启热部署 手动方式 或者点idea上面的build->build project 自动方式 勾上Build project automatically 然后ctrl alt shift / 选择Registr 勾上就好了 新版idea可以在这里选 热部署范围设置 这是spring-boot-devtools起的作用&#xff0c;所以还…

ESD静电试验方法及标准

文章目录 概述静电放电抗扰标准静电放电实验室的型式试验静电放电试验配置静电放电试验方法 静电放电等级 参考静电放电发生器&#xff08;ESD&#xff09;试验方法及标准 概述 在低湿度环境下通过摩擦使人体充电的人体在与设备接触时可能会放电&#xff0c;静电放电的后果是&…

优化机器学习:解析数据归一化的重要性与应用

在机器学习中&#xff0c;数据归一化是一种数据预处理的技术&#xff0c;旨在将数据转换为相似的范围或标准化的分布。这样做的主要目的是消除不同特征之间的量纲差异或数值范围差异&#xff0c;以确保模型在训练时更稳定、更有效地学习特征之间的关系。 通常&#xff0c;机器…

Nginx热部署

快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解&#xff08;如有不正确的地方欢迎各位小伙伴在评论区提意见&#xff0c;小编会及时修改&#xff09; Nginx热部署 首先来讲一下为什么要进行热部署 nginx 支持热加载 热部署 &#xff0c;在不打断用户请求的情…