第一部分:优秀的图形绘制工具PlantUML
PlantUML 是基于 Java 语言的开源UML图形绘制工具,它是创建UML图形的组件。它能够使用简单脚本来定义和创建UML图形。它不像ROSE那样,ROSE拥有图形化的操作,直接用鼠标点点点或是用鼠标拖,UML图就出来了。PlantUML的使用者必须要知道它专门的语法才可以准确的使用它,从而画出想要的UML图。
那么为什么要这么麻烦的使用需要学习语法的PlantUML呢?
我打开了PlantUML的网址,我一眼就发现了它的一个优点——它提供了在线版。作为一个软件工程专业的学生,每次接触到一个新的课程,都会被各种软件弄得苦不堪言PlantUML提供在线版,我就很开心d(`・∀・)bPlantUML的嵌套能力强,他可以嵌套到各种编辑器中,也可以嵌套到IDE工具。
总的来说,PlantUML能够提高效率,也更为专业。
第二部分:PlantUML用例图语法
用例图是系统功能的模型图,由参与者、用例、系统边界和箭头组成。
- 参与者:系统以外,在使用系统或与之交互中的人或事物所代表的角色。不是指人或事物本身,而是人或事物所代表的那个角色。
- 用例:就是use case,使用案例,简单来说就是参与者希望系统能够做的事情,由参与者来启动。
- 系统边界:建模的边界,边界外就是系统外部。
- 箭头:表示参与者和系统通过相互发送信号或消息进行交互的关联关系。
根据PlantUML官方手册:
参与者Actor
用两个冒号包裹起来,可以用关键字actor来定义角色,as来定义一个别名,该别名可以在以后定义关系的时候使用。角色的定义是可选的。
语法:
@startuml
:First Actor:
:Another\nactor: as Men2
actor Men3
actor :Last actor: as Men4
@enduml
用例use case
可以用关键字use case来定义用例。还可以使用关键字as定义一个别名,该别名可以在定义关系的时候使用。
@startuml
(First usecase)
(Another usecase) as (UC2)
usecase UC3
usecase (Last\nusecase) as UC4
@enduml
若是想定义跨越多行的用例描述,可以用双引号将其裹起来。还可以使用分隔符:--..==__分隔符中间也可以放置标题。
@startuml usecase UC1 as "You can use several lines to define your usecase. You can also use separators. -- Several separators are possible. == And you can add titles: ..Conclusion.. This allows large description." @enduml
用箭头-->
连接角色和用例。
横杠-
越多,箭头越长。 通过在箭头定义的后面加一个冒号及文字的方式来添加标签。
@startuml User -> (Start) User --> (Use the application) : A small label :Main Admin: ---> (Use the application) : This is\nyet another\nlabel @enduml
如果一个角色或者用例继承于另一个,那么可以用<|--
符号表示。
@startuml :Main Admin: as Admin (Use the application) as (Use) User <|-- Admin (Start) <|-- (Use) @enduml
可以用note left of
, note right of
, note top of
, note bottom of
等关键字给一个对象添加注释。注释还可以通过note
关键字来定义,然后用..
连接其他对象。
@startuml :Main Admin: as Admin (Use the application) as (Use) User -> (Start) User --> (Use) Admin ---> (Use) note right of Admin : This is an example. note right of (Use) A note can also be on several lines end note note "This note is connected\nto several objects." as N2 (Start) .. N2 N2 .. (Use) @enduml
用 <<
和 >>
来定义角色或者用例的构造类型。
@startuml User << Human >> :Main Database: as MySql << Application >> (Start) << One Shot >> (Use the application) as (Use) << Main >> User -> (Start) User --> (Use) MySql --> (Use) @enduml
完整的例子:
@startuml left to right direction skinparam packageStyle rectangle actor customer actor clerk rectangle checkout { customer -- (checkout) (checkout) .> (payment) : include (help) .> (checkout) : extends (checkout) -- clerk } @enduml
第三部分:创建南通大学-杏林校区图书管理系统的用例
图书馆管理系统主要由:图书信息管理、借书证管理和图书借阅管理三个方面组成。
- 图书信息管理包括图书信息的增、删、改、查。
- 借书证管理包括借书证制作、注销、补办、借书证信息查询。
- 图书借阅管理包括书目查询、借书、还书、过期催还、丢失。
图书信息管理用例图 :
参与者:图书管理员
@startuml
left to right direction
skinparam packageStyle rectangle
actor 图书管理员
rectangle 图书信息管理 {
:图书管理员: -- (添加图书)
:图书管理员: -- (图书编目)
:图书管理员: -- (修改图书信息)
:图书管理员: -- (图书报废)
:图书管理员: -- (查询图书信息)
}
@enduml
借书证管理用例图:
参与者:图书管理员
@startuml left to right direction skinparam packageStyle rectangle actor 图书管理员 rectangle 借书证管理 { :图书管理员: -- (办证) :图书管理员: -- (补证) (办证) .> (打印借书证) : <> (补证) .> (打印借书证) : < > :图书管理员: -- (注销) :图书管理员: -- (证件查询) } @enduml
图书借阅管理:
参与者:图书管理员,借阅者
@startuml left to right direction skinparam packageStyle rectangle actor 图书管理员 actor 借阅者 rectangle 图书借阅管理 { :图书管理员: -- (书目查询) :图书管理员: -- (图书借阅信息查询) :图书管理员: -- (借书) :图书管理员: -- (还书) :图书管理员: -- (过期催还) (过期催还) .> (打印催还单) : <> :图书管理员: -- (丢失处理) (书目查询) -- :借阅者: (图书借阅信息查询) -- :借阅者: } @enduml
第四部分:总结
PlantUML用例图部分的语法并不复杂,甚至只需要熟练使用手册上的一些语法即可。
由此看来,掌握PlantUML使用方法是必要的,它提供在线平台绘制,只需代码就可以画图,大大提高效率。