Các biểu đồ UML thường được nhóm thành cấu trúc biểu đồ, mô tả hệ thống được cấu tạo từ những gì, và hành vi biểu đồ, mô tả hệ thống hoạt động như thế nào. Các ví dụ dưới đây sử dụng một kịch bản cửa hàng trực tuyến duy nhất để có thể so sánh và điều chỉnh. UML 2.5.1 là bản quy phạm chính thức được tham chiếu ở đây.
PlantUML hiển thị trực tiếp nhiều ký hiệu UML. Một số loại biểu đồ chuyên biệt—đặc biệt là profile, cấu trúc tổng hợp, truyền thông và tổng quan tương tác—có thể được biểu đạt bằng cách xấp xỉ thực tế trong PlantUML thay vì sử dụng trình hiển thị biểu đồ chuyên dụng. Các chú thích sẽ chỉ ra những trường hợp đó.

Biểu đồ cấu trúc
1. Biểu đồ lớp
Hiển thị các lớp của hệ thống, dữ liệu và các thao tác của chúng, cũng như các mối quan hệ như liên kết, thừa kế và tổng hợp. Sử dụng nó để thảo luận về mô hình miền hoặc thiết kế hướng đối tượng.

@startuml
class Customer {
+id: String
+email: String
+placeOrder(): Order
}
class Order {
+number: String
+status: OrderStatus
+total(): Money
}
class OrderLine {
+quantity: int
+unitPrice: Money
}
class Product {
+sku: String
+name: String
}
Customer "1" -- "0..*" Order : places
Order "1" *-- "1..*" OrderLine : contains
OrderLine "*" --> "1" Product : refers to
@enduml
Đọc nó:một khách hàng có thể đặt nhiều đơn hàng; một đơn hàng chứa một hoặc nhiều dòng; mỗi dòng tham chiếu đến một sản phẩm. Hình thoi đầy màu biểu thị sự tổng hợp: đơn hàng sở hữu các dòng của nó.
2. Biểu đồ đối tượng
Hiển thị các thể hiện cụ thể và các liên kết tại một thời điểm. Nó hữu ích để minh họa dữ liệu mẫu hoặc giải thích mô hình lớp với một kịch bản cụ thể. Trong PlantUML, hãy sử dụng ký hiệu đối tượng.

@startuml
object "alice:Customer" as alice {
id = C104
email = [email protected]
}
object "order:Order" as order {
number = O9001
status = PAID
}
object "line:OrderLine" as line {
quantity = 2
unitPrice = 19.99
}
object "mug:Product" as mug {
sku = MUG-01
name = Travel mug
}
alice -- order
order *-- line
line --> mug
@enduml
3. Biểu đồ thành phần
Hiển thị các phần mềm có thể triển khai hoặc thay thế và các phụ thuộc của chúng. Sử dụng nó để truyền đạt kiến trúc ứng dụng và các ranh giới tích hợp.

@startuml
component "Web Store" as web
component "Order Service" as orders
component "Payment Adapter" as payments
database "Order DB" as db
cloud "Payment Provider" as provider
web --> orders : REST
orders --> db : SQL
orders --> payments : authorize
payments --> provider : HTTPS
@enduml
4. Biểu đồ cấu trúc tổng hợp
Hiển thị các phần bên trong của một phân loại—như một thành phần hoặc lớp—và cách các phần đó kết nối thông qua các cổng. Nó hữu ích khi sự cộng tác nội bộ quan trọng hơn kiến trúc hệ thống xung quanh.
PlantUML không cung cấp cú pháp cấu trúc tổng hợp chuyên biệt được hỗ trợ phổ biến. Bản phác thảo theo phong cách biểu đồ lớp này truyền đạt các thành phần và kết nối:

@startuml
allowmixing
skinparam componentStyle rectangle
class Car {
}
package "Car" {
component "engine : Engine" as engine {
portout p1
}
component "transmission : Transmission" as trans {
portin p2
portout p3
}
component "wheel : Wheel [4]" as wheels {
portin p4
}
p1 -- p2 : drives
p3 -- p4 : power
}
@enduml Hãy xem đây là một bản phác thảo cấu trúc; nó không hiển thị các cổng hoặc ngữ nghĩa kết nối UML chính thức.
5. Biểu đồ triển khai
Ánh xạ các sản phẩm phần mềm hoặc dịch vụ lên các nút phần cứng và môi trường thực thi. Sử dụng nó để giải thích nơi phần mềm chạy và các nút thời gian chạy giao tiếp với nhau như thế nào.

@startuml
node "Thiết bị khách hàng" as client {
artifact "Trình duyệt"
}
node "Đám mây" {
node "Máy chủ ứng dụng" as appHost {
artifact "Store API"
}
database "Cơ sở dữ liệu đơn hàng" as db
}
cloud "Nhà cung cấp thanh toán bên ngoài" as pay
client --> appHost : HTTPS
appHost --> db : SQL
appHost --> pay : HTTPS
@enduml
6. Biểu đồ gói
Nhóm các phần tử mô hình vào các không gian tên hoặc lớp và hiển thị các phụ thuộc giữa các nhóm đó. Sử dụng nó để giải thích tổ chức mã và định hướng kiến trúc.

@startuml
package "store.web" {
class CheckoutController
}
package "store.application" {
class PlaceOrder
}
package "store.domain" {
class Order
class Product
}
package "store.persistence" {
class OrderRepository
}
CheckoutController ..> PlaceOrder
PlaceOrder ..> Order
PlaceOrder ..> OrderRepository
@enduml
7. Biểu hồ sơ
Định nghĩa một phần mở rộng chuyên biệt cho miền sử dụng các biệt danh, giá trị gắn thẻ và các ràng buộc. Sử dụng nó khi một dự án cần một từ vựng mô hình hóa nhất quán vượt ra ngoài UML tiêu chuẩn.
PlantUML có thể hiển thị các khái niệm hồ sơ dưới dạng bản phác thảo theo phong cách UML, nhưng đây không phải là trình hiển thị biểu đồ hồ sơ chuyên biệt.

@startuml
class "«profile» StoreProfile" as Profile
class "«stereotype» «Service»" as Service
class "«stereotype» «Repository»" as Repository
class "«metaclass» Component" as Component
Profile ..> Service : defines
Profile ..> Repository : defines
Service ..> Component : extends
Repository ..> Component : extends
note right of Service
tagged value:
owner: String
end note
@enduml
Biểu đồ hành vi
8. Biểu đồ trường hợp sử dụng
Hiển thị các tác nhân bên ngoài và các mục tiêu hệ thống mà họ tương tác. Sử dụng nó để xác định phạm vi và nắm bắt các yêu cầu chức năng ở mức độ cao.

@startuml
hướng từ trái sang phải
actor Khách hàng
actor "Nhà cung cấp thanh toán" as Provider
rectangle "Cửa hàng trực tuyến" {
usecase "Duyệt sản phẩm" as Browse
usecase "Đặt hàng" as Place
usecase "Thanh toán cho đơn hàng" as Pay
usecase "Theo dõi đơn hàng" as Track
}
Customer --> Browse
Customer --> Place
Customer --> Track
Provider --> Pay
Place ..> Pay : <<include>>
@enduml
9. Biểu đồ hoạt động
Mô hình hóa quy trình làm việc: các hành động, quyết định, đường song song và việc chuyển giao. Sử dụng nó cho các quy trình kinh doanh, thủ tục vận hành hoặc luồng điều khiển của thuật toán.

@startuml
start
:Chọn sản phẩm;
:Nhập thông tin giao hàng;
:Tính tổng;
if (Sản phẩm có sẵn?) then (có)
:Xác thực thanh toán;
if (Thanh toán được phê duyệt?) then (có)
:Tạo đơn hàng;
:Gửi xác nhận;
else (không)
:Hiển thị lỗi thanh toán;
endif
else (không)
:Hiển thị sản phẩm không có sẵn;
endif
stop
@enduml
10. Biểu đồ máy trạng thái
Mô tả các trạng thái mà một thực thể có thể chiếm giữ và các sự kiện hoặc điều kiện gây ra chuyển đổi. Sử dụng nó khi hành vi của một đối tượng phụ thuộc vào trạng thái hiện tại của nó.

@startuml
[*] --> Dự thảo
Dự thảo --> Chờ thanh toán : submit
Chờ thanh toán --> Đã thanh toán : payment approved
Chờ thanh toán --> Đã hủy : payment declined
Chờ thanh toán --> Đã hủy : customer cancels
Đã thanh toán --> Đã giao hàng : dispatch
Đã giao hàng --> Đã giao : delivery confirmed
Đã hủy --> [*]
Đã giao --> [*]
@enduml
11. Biểu đồ trình tự
Hiển thị các tin nhắn được trao đổi giữa các thành tham gia theo thứ tự thời gian. Sử dụng nó để mô tả một kịch bản, luồng gọi API hoặc tương tác giữa các dịch vụ.

@startuml
actor Khách hàng
participant "Cửa hàng Web" as Web
participant "Dịch vụ đơn hàng" as Orders
participant "Dịch vụ thanh toán" as Payments
Customer -> Web : submit checkout
Web -> Orders : create order
Orders -> Payments : authorize payment
Payments --> Orders : approved
Orders --> Web : order confirmation
Web --> Customer : show confirmation
@enduml
12. Biểu đồ truyền thông
Nhấn mạnh vào các đối tượng cộng tác và các liên kết giữa chúng; việc đánh số tin nhắn cho thấy thứ tự của các tương tác. Sử dụng nó khi mạng lưới các thành tham gia cộng tác quan trọng hơn so với một dòng thời gian.
PlantUML không có trình hiển thị biểu đồ truyền thông chuyên dụng trong bộ UML tiêu chuẩn của nó. Bản phác thảo liên kết đối tượng này gán nhãn cho các tin nhắn bằng số thứ tự:

@startuml
object Khách hàng
object WebStore
object OrderService
object PaymentService
Customer --> WebStore : 1: checkout()
WebStore --> OrderService : 1.1: createOrder()
OrderService --> PaymentService : 1.2: authorize()
PaymentService --> OrderService : 1.3: approved
OrderService --> WebStore : 1.4: confirmation
@enduml
13. Biểu đồ tổng quan tương tác
Cung cấp cái nhìn tổng quan về luồng điều khiển ở mức cao của các tương tác, kết hợp luồng kiểu hoạt động với các tham chiếu đến các kịch bản tương tác. Sử dụng nó để hiển thị cách nhiều kịch bản ở mức trình tự được tích hợp vào một quy trình lớn hơn.
Ví dụ PlantUML này sử dụng biểu đồ hoạt động làm tổng quan, với tên kịch bản thay thế cho các tương tác được tham chiếu:

@startuml
skinparam conditionStyle InsideDiamond
title Sơ đồ tổng quan tương tác: Hệ thống xử lý đơn hàng
start
:Khách hàng đặt hàng;
if (Hàng có sẵn không?) then (có)
partition "sd Chuỗi quy trình thanh toán" {
:Xác thực thanh toán;
:Trừ tồn kho;
}
else (không)
partition "sd Quy trình đặt hàng sau" {
:Thông báo cho khách hàng;
:Tạo yêu cầu nhà cung cấp;
}
endif
fork
partition "sd Chuỗi quy trình giao hàng" {
:Đóng gói đơn hàng;
:Giao đến địa chỉ;
}
fork again
partition "sd Chuỗi quy trình tính tiền" {
:Tạo hóa đơn;
:Gửi email xác nhận;
}
end fork
:Đóng đơn hàng;
stop
@enduml Để mô tả chi tiết các trao đổi thông tin bên trong mỗi kịch bản, hãy tạo một sơ đồ chuỗi riêng biệt.
14. Sơ đồ thời gian
Hiển thị sự thay đổi trạng thái hoặc giá trị theo trục thời gian. Sử dụng nó cho các hành vi nhạy cảm về thời gian, giao thức, tương tác phần cứng, hoặc các yêu cầu liên quan đến thời lượng và thời hạn.

@startuml
robust "Đơn hàng" as Order
concise "Thanh toán" as Payment
@0
Đơn hàng ở trạng thái Dự thảo
Thanh toán ở trạng thái Chờ
@5
Đơn hàng ở trạng thái Chờ xử lý
Thanh toán ở trạng thái Đang xử lý
@10
Thanh toán được phê duyệt
@12
Đơn hàng được xác nhận
@enduml
Chọn sơ đồ
Bắt đầu bằng câu hỏi mà sơ đồ cần trả lời:
-
Hệ thống bao gồm những gì?Lớp, đối tượng, thành phần, cấu trúc tổng hợp, gói, hồ sơ, hoặc triển khai.
-
Hệ thống làm gì?Trường hợp sử dụng, hoạt động, hoặc máy trạng thái.
-
Các thành viên hợp tác với nhau như thế nào?Chuỗi, truyền thông, tổng quan tương tác, hoặc thời gian.
Giữ mỗi sơ đồ tập trung vào một mục đích duy nhất, sử dụng tên thống nhất trên tất cả các sơ đồ, và chỉ bao gồm đủ chi tiết cho đối tượng và quyết định hiện tại. Các đoạn mã PlantUML là điểm khởi đầu: hãy kiểm tra cú pháp được hỗ trợ bởi bộ render của bạn, đặc biệt là đối với các loại sơ đồ chuyên biệt.
This post is also available in Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, 简体中文 and 繁體中文.












