Dùng PlantUML để vẽ sơ đồ Use Case
Mở đầu
Ở giai đoạn thiết kế phần mềm, việc sử dụng UML (Unified Modeling Language) để vẽ các sơ đồ như Use Case Diagram, Sequence Diagram, Class Diagram,.. nhằm mô tả hoạt động hay kiến trúc của hệ thống là một phần không thể thiếu. Có rất nhiều công cụ đồ hoạ để hỗ trợ việc vẽ các sơ đồ UML nhưng hôm nay mình xin giới thiệu một công cụ để vẽ các sơ đồ UML bằng text mà theo cảm nhận của mình có khá nhiều ưu điểm so với vẽ bằng các tool đồ hoạ, đó là PlantUML.
PlantUML là gì?
PlantUML là công cụ open-source hoàn toàn free cho phép người dùng vẽ các sơ đồ UML bằng plain text. PlantUML có thể vẽ được hầu hết các sơ đồ UML (Use Case diagram, Sequence diagram, Class diagram, Object diagram,… ) trong khuôn khổ bài viết mình sẽ giới thiệu cách vẽ Use Case diagram bằng PlantUML
Ưu nhược điểm khi dùng PlantUML
Ưu điểm
- Kích thước file text nhẹ nên dễ dàng share cho người khác
- Hoàn toàn free. Với các tool vẽ sơ đồ bằng đồ hoạ đa số cần bản quyền hoặc các tool free thì khả năng sẽ bị hạn chế một số tính năng
- Vì là text nên có thể so sánh thay đổi, review và merge khi dùng git
- Không cần cài đặt tool vẫn có thể nhanh chóng copy, chỉnh sửa
- Dễ dàng export thành file ảnh khi cần
- Tốc độ vẽ sẽ nhanh hơn do không cần quan tâm quá nhiều đến canh chỉnh vị trí các component trên sơ đồ đang vẽ . Đặc biệt khi số lượng component trên sơ đồ quá nhiều thì việc canh chỉnh vị trí, kích thước các compent sẽ ngốn rất nhiều thời gian
Nhược điểm
- Cần nhớ syntax nên khi mới sử dụng có thể sẽ mất thời gian khi vẽ nếu chưa nắm vững được syntax
- Việc canh chỉnh đa phần là do tool tự động quyết định nên không thể canh chỉnh theo ý muốn một cách chi tiết
Sử dụng PlantUML để vẽ sơ đồ Use Case
Các bạn có thể sử dụng trực tiếp trang web http://plantuml.com hoặc https://www.planttext.com/ để vẽ UML mà không cần cài đặt bất cứ phần mềm nào. Ngoài ra với các bạn thể cài thêm PlantUML plugin cho các Editor mà các bạn đang sử dụng để có thể tạo và render từ text sang ảnh
Các syntax cơ bản để vẽ sơ đồ Use Case
keyword | usage | image |
---|---|---|
( ) |
Use Case | |
:actor_name: |
Actor | |
-> |
Association | |
.> |
Extend, Include | |
-|> |
Generalization |
Chỉ với các syntax cơ bản như bên trên chúng ta đã có thể vẽ được một sơ đồ Use Case hoàn chỉnh.
Ví dụ vẽ actor
Ngoài cách dùng :actor_name:
để vẽ actor các bạn cũng có thể dùng keyword actor
để định nghĩa actor
Đối với các actor tên dài để tiện sử dụng sau khi định nghĩa có thể đặt alias cho actor bằng keyword as
1
2
3
4
5
6
7
8
|
@startuml
:First Actor:
:Another\nactor: as Men2
actor Men3
actor :Last actor: as Men4
@enduml
|
Ví dụ use case
Có thể sử dụng --
..
==
__
để format nội dụng của use case
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@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
|
Ví dụ Association
1
2
3
4
5
|
@startuml
customer -> (checkout)
@enduml
|
Ví dụ extend/include
1
2
3
4
5
6
7
|
@startuml
(checkout) .> (payment) : include
(help) .> (checkout) : extends
customer -down-> (checkout)
@enduml
|
Ví dụ Generalization
1
2
3
4
5
|
@startuml
:Main Admin: as Admin (Use the application) as (Use)
User <|- Admin
(Start) <|- (Use)
@enduml
|
Ví dụ một sơ đồ Use Case hoàn chỉnh
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
28
29
30
31
|
@startuml
left to right direction
rectangle EShoping {
(Xem danh sach san pham)
(Dua san pham vao gio hang)
(Cap nhat gio hang)
(Dang Nhap)
(Tinh tien)
(Dang ky khach hang)
(Nhap thong tin thanh toan)
(Nhap thong tin nguoi nhan)
(Xem chi tiet san pham)
(Chon loai phieu dat hang)
}
:He thong thanh toan truc tuyen: as HTTT<< System >>
:Khach hang:-->(Xem danh sach san pham)
:Khach hang:->(Xem chi tiet san pham)
:Khach hang:->(Dua san pham vao gio hang)
:Khach hang:->(Cap nhat gio hang)
:Khach hang:->(Dang Nhap)
:Khach hang:->(Tinh tien)
:Khach hang:->(Dang ky khach hang)
(Tinh tien)..>(Nhap thong tin thanh toan):include
(Tinh tien)..>(Chon loai phieu dat hang):include
:Khach hang:-->(Nhap thong tin nguoi nhan)
(Nhap thong tin thanh toan)-->HTTT
(Xem chi tiet san pham)..>(Xem danh sach san pham):<<extend>>
(Dua san pham vao gio hang)..>(Xem danh sach san pham):extend
@enduml
|
Tham khảo
https://www.planttext.com/
http://plantuml.com/ja/use-case-diagram
http://yohshiy.blog.fc2.com/blog-entry-152.html#abstruct