用例图

  • 基于PlantUML
  • 用例图
PlantUML制图-概述

用例图

角色与用例

  • :XXX: 表示角色, 或者使用actor表示
  • usecase 表示用例, 或者使用 (XXX)
  • << YYY >> 后面接表示构造器
  • as 用来设置别名

usecase-1.png

1
2
3
4
5
6
7
8
9
10
11
@startuml usecase-1
(用例A) << 构造器 >>
(用例B) as (CB) << 构造器 >>
usecase 用例C
usecase (用\n例\nD) as D

:角色1: << 构造器 >>
:角\n色\n2: as 2
actor 角色3
actor :角色4: as 4 << 构造器 >>
@enduml

用例样式

  • -- 横线
  • == 双横线
  • ..XXX.. 虚线并显示中央文字

usecase-2.png

1
2
3
4
5
6
7
8
9
@startuml usecase-2
usecase 用例A as "这是用例的描述
--
横线
==
双横线
..虚线..
描述文字"
@enduml

关系

  • -> 一般表示有关
  • <|-- 表示继承关系

usecase-3.png

1
2
3
4
5
6
7
8
9
@startuml usecase-3
普通用户 -> (普通功能)
普通用户 --> (高级功能) : 操作

:管理员: ---> (高级功能) : 管理

普通用户 <|-- 管理员 : 继承
普通功能 <|-- 高级功能 : 继承
@enduml

注释

  • note 行注释, 块注释
  • 注释可连线

usecase-4.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@startuml usecase-4
普通用户 -> (普通功能)
普通用户 --> (高级功能) : 操作

:管理员: ---> (高级功能) : 管理

note left of 普通用户 : 普通注释

note right of 管理员
注释内容
end note

note "注释内容\n换行" as Note

普通用户 .. Note
Note .. 管理员
@enduml

箭头方向与长度

  • -[left|right|up|down]-> 可以控制方向
  • 箭头线长度可以由-的个数来决定

usecase-5.png

1
2
3
4
5
6
7
8
9
10
11
@startuml usecase-5
:user: -left-> (左边)
:user: -right-> (右边)
:user: -up-> (上边)
:user: -down-> (下边)

右边 -> (1)
右边 --> (2)
右边 ---> (3)
右边 ----> (4)
@enduml

排列方向

  • top to bottom direction 上下结构
  • left to right direction 左右结构
1
2
3
4
5
6
7
8
9
10
11
@startuml usecase-6-1
top to bottom direction
user1 --> (Usecase 1)
user2 --> (Usecase 2)
@enduml

@startuml usecase-6-2
left to right direction
user1 --> (Usecase 1)
user2 --> (Usecase 2)
@enduml

自定义样式

  • skinparam 可以自定义, 直接影响样式

usecase-7.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@startuml usecase-7
skinparam handwritten true

skinparam usecase {
BackgroundColor DarkSeaGreen
BorderColor DarkSlateGray

BackgroundColor<< Main >> YellowGreen
BorderColor<< Main >> YellowGreen

ArrowColor Olive
ActorBorderColor black
ActorFontName Courier

ActorBackgroundColor<< Human >> Gold
}

User << Human >>
:Main Database: as MySql << Application >>
(Start) << One Shot >>
(Use the application) as (Use) << Main >>

User -> (Start)
User --> (Use)

MySql --> (Use)
@enduml

框框

  • rectangle XXX { } 可以框选里面的用例或者角色

usecase-8.png

1
2
3
4
5
6
7
8
9
10
11
12
@startuml usecase-8
left to right direction
skinparam packageStyle rectangle
actor customer
actor clerk
rectangle checkout {
customer -- (checkout)
(checkout) .> (payment) : include
(help) .> (checkout) : extends
(checkout) -- clerk
}
@enduml