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 关键字来改变箭头方向

@startumlusecase 增加用户 #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 cactor "研究生" as fc
}
rectangle 图书管理 {usecase "整理书籍" as UC1usecase "购买书籍" as UC2usecase "借阅书籍" 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 "注册" #blueusecase "登录"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.mzph.cn/news/192677.shtml

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

相关文章

AI创作ChatGPT源码+AI绘画(Midjourney绘画)+DALL-E3文生图+思维导图生成

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

C语言——指针(四)

&#x1f4dd;前言&#xff1a; 上篇文章C语言——指针&#xff08;三&#xff09;对指针和数组进行了讲解&#xff0c;今天主要更深入的讲解一下不同类型指针变量的特点&#xff1a; 1&#xff0c;字符指针变量 2&#xff0c;数组指针变量 3&#xff0c;函数指针变量 &#x1…

Spring boot命令执行 (CVE-2022-22947)漏洞复现和相关利用工具

Spring boot命令执行 (CVE-2022-22947)漏洞复现和相关利用工具 名称: spring 命令执行 (CVE-2022-22947) 描述: Spring Cloud Gateway是Spring中的一个API网关。其3.1.0及3.0.6版本&#xff08;包含&#xff09;以前存在一处SpEL表达式注入漏洞&#xff0c;当攻击者可以访问A…

2022年8月2日 Go生态洞察:Go 1.19版本发布深度解析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

6-63.圆类的定义与使用(拷贝构造函数)

本题要求完成一个圆类的定义&#xff0c;设计适当的函数&#xff1a;包括构造函数、拷贝构造函数以及析构函数&#xff0c;从而可以通过测试程序输出样例 在这里给出一组输入。例如&#xff1a; 5 输出样例&#xff1a; 在这里给出相应的输出。例如&#xff1a; Constructo…

本项目基于Spring boot的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ

在业务逻辑的异步处理&#xff0c;系统解耦&#xff0c;分布式通信以及控制高并发的场景下&#xff0c;消息队列有着广泛的应用。本项目基于Spring的AMQP模块&#xff0c;整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ添加和读取消息的功能。并比较了两种模式&…

osg LOD节点动态调度

1、LOD节点 LOD&#xff08;level of detail&#xff09;&#xff1a;是指根据物体模型的结点在显示环境中所处的位置和重要度&#xff0c;决定物体渲染的资源分配&#xff0c;降低非重要物体的面数和细节度&#xff0c;从而获得高效率的渲染运算。在OSG的场景结点组织结构中&…

mongoose学习记录

mongoose安装和连接数据库 npm i mongoose导入mongoose const mongoose require(mongoose) mongoose.set("strictQuery",true)连接数据库 mongoose.connect(mongodb:127.0.0.1:27017/test)设置回调 mongoose.connection.on(open,()>{console.log("连接成…

规则引擎专题---3、Drools组成和入门

Drools概述 drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎&#xff0c;可以将复杂且多变的业务规则从硬编码中解放出来&#xff0c;以规则脚本的形式存放在文件或特定的存储介质中(例如存放在数据库中)&#xff0c;使得业务规则的变更不需要修改项目代码、重启…

numpy实现神经网络

numpy实现神经网络 首先讲述的是神经网络的参数初始化与训练步骤 随机初始化 任何优化算法都需要一些初始的参数。到目前为止我们都是初始所有参数为0&#xff0c;这样的初始方法对于逻辑回归来说是可行的&#xff0c;但是对于神经网络来说是不可行的。如果我们令所有的初始…

手写VUE后台管理系统7 - 整合Less样式

整合LESS 安装使用 Less&#xff08;Leaner Style Sheets&#xff09;&#xff0c;是一门向后兼容的 CSS 扩展语言。 Less 官网&#xff1a;https://less.bootcss.com/ 安装 yarn add less安装完成就可以直接使用了 使用 以文件形式定义全局样式 在 assets 目录下创建 less …

基于卷积神经网络的肺炎影像分类分割智能诊断系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义&#xff1a; 肺炎是一种常见的呼吸系统感染疾病&#xff0c;其主要病因包括细菌、病毒和真菌等。肺炎的早期诊断对于患者的治疗和预后至关重要。传统的肺炎诊断方…

打造个性化github主页 一

文章目录 概述创建仓库静态美化GitHub 统计信息卡仓库 GitHub 额外图钉仓库 热门语言卡仓库 GitHub 资料奖杯仓库 GitHub 活动统计图仓库 打字特效添加中文网站统计仓库 总结 概述 github作为全球最大的代码托管平台&#xff0c;作为程序员都多多少少&#xff0c;都使用过他。…

【排序】直接插入排序和希尔排序

目录 一、排序思想 1、直接插入排序 2、希尔排序 二、代码实现 三、性能比较 四、排序总结 1、直接插入排序 2、希尔排序 一、排序思想 1、直接插入排序 基本思想&#xff1a;把待排序的序列选取一个整数逐个插入到已经排好的有序序列中&#xff0c;直到所有整数都插入…

智加科技获全国首张重卡无人驾驶开放道路测试牌照

2023年12月1日&#xff0c;智加科技获得苏州市智能网联汽车无人化测试牌照。该牌照也是江苏省及国内首张无人重卡开放高速公路全路段全场景全息路网&#xff08;S17苏台高速&#xff09;道路测试牌照。 该重卡无人驾驶开放道路测试牌照&#xff0c;经由苏州市智能网联汽车联席小…

图书整理II(两个栈实现队列)

目录 贼相似题目&#xff1a; 本题题目&#xff1a; 我们直接看题解吧&#xff1a; 审题目事例提示&#xff1a; 解题分析&#xff1a; 解题思路&#xff1a; 代码实现&#xff1a; 代码补充说明&#xff1a; 力扣题目地址&#xff1a; LCR 125. 图书整理 II - 力扣&#xff0…

基于深度学习面向中医诊断的舌象图像分割系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 中医舌诊是通过观察舌的各种特征来了解人体的健康状况&#xff0c;从而对各种疾病做出诊断及病情评估&#xff0c;是传统中国医学应用最广、最有价值的诊法之一。…

如何在没有备份的情况下从 Android 手机恢复已删除的数据

电话数据对我们至关重要。我们可以更换我们使用的设备&#xff0c;但不能更换我们的数据。我们以前一直使用CD、USB 和硬盘来保存数据。随着技术的出现&#xff0c;我们遇到了云存储。我们可以随时随地、任意次数地访问存储。所有操作系统都有数据云&#xff0c;可以用来保存图…

docker容器内部文件挂载主机

docker images执行该命令可以发现一个centos镜像 docker run --namemycentos -itd --privilegedtrue --restartalways -p 88:80 -v C:\Users\Administrator\Desktop\dockerTest:/bin/gh:ro centosdocker run 命令用于在 Docker 上创建和运行容器。 --namemycentos 指定容器…

【面试HOT200】回溯篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于【CodeTopHot300】进行的&#xff0c;每个知识点的修正和深入主要参…