用例图是软件工程中的一种可视化表示方法,用于描述系统角色与系统本身之间的交互。它通过说明用例和与用例交互的角色来捕捉系统的动态行为。这些图表对于明确系统的功能要求和了解用户如何与系统交互至关重要。通过提供一个高层次的视图,用例图可以帮助利益相关者了解系统的功能及其潜在价值。PlantUML通过其基于文本的语言,为创建用例图提供了一种独特的方法。使用 PlantUML的主要优势之一就是简单高效。用户可以使用直观简洁的文字描述来定义图表,而不是手动绘制形状和连接。这不仅加快了图表创建过程,还确保了一致性和准确性。
用例图(Use Case Diagram)是由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的视图,是被称为参与者的外部用户所能观察到的系统功能的模型图。
用例图中主要的元素包括参与者、用例以及各元素之间的关系。除此之外,用例图中还可以包含注解和约束。
参与者(Actor)是与主体系统交互的外部实体。参与者可以是系统外部的人、子系统、其它系统等。
用例是参与者可以感受到的系统服务或功能单元。它定义了系统要实现的一个目标。用例只定义系统的一个行为,而不显示系统的内部结构。
用例最大的优点是站在用户的角度描述系统功能。
用例的命名需要站在用户的角度描述参与者达到的目标
命名方式:(状语)动词+(定语)宾语
比如使用微信支付、订餐、选课、借书。
用例粒度是指用例细化或综合系统功能的程度。也可以说用例所包含的系统服务或功能单元的多少。用例粒度过粗或过大,则用例包含的系统功能就越多,反之越少。
用例粒度过细
系统中很多业务都包含这种增、删、改、查的操作,这样做并不能为用户提供任何有意义的目标,反而会忽略了用户的真正目的
把步骤当用例
用例用圆括号括起来(两个圆括号看起来就像椭圆)。 也可以用关键字usecase来定义用例。
还可以用关键字as定义一个别名,这个别名可以在以后定义关系的时候使用。
@startuml
(用例1)
usecase 用例2
(用例3) as (YL3)
usecase (用例4\n测试)
@enduml
角色用两个冒号包裹起来。 也可以用actor关键字来定义角色。 还可以用关键字as来定义一个别名,这个别名可以在以后定义关系的时候使用。
@startuml
:角色1:
:角色2\n测试: as JS2
actor 角色3
actor :角色4: as JS4
@enduml
用户头像样式:skinparam actorStyle awesome
透明人样式:skinparam actorStyle hollow
如果想定义跨越多行的用例描述,可以用双引号将其裹起来。 还可以使用这些分隔符:
默认情况下,类之间的链接有两个破折号-- ,并且是垂直方向的。 可以通过像这样放一个破折号(或点)来使用水平链接
也可以通过反转链接来改变方向
@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
用note left of , note right of , note top of , note bottom of等关键字给一个对象添加注释。
使用包来对角色或用例进行分组,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
@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