Sơ đồ trường hợp sử dụng là gì?
Một Sơ đồ trường hợp sử dụnglà một bản thiết kế hành vi được sử dụng để trực quan hóa các mối quan hệ giữa người dùng của hệ thống (được gọi là tác nhân) và các hành động hoặc mục tiêu cụ thể mà họ muốn đạt được (được gọi là các trường hợp sử dụng). Thay vì hiển thị các vòng lặp logic từng bước, sơ đồ trường hợp sử dụng cung cấp cái nhìn tổng quan ở cấp độ cao về phạm vi chức năng của hệ thống, làm cho nó trở thành một công cụ tuyệt vời để xác định yêu cầu dự án, ranh giới hệ thống và luồng công việc của các bên liên quan.
Với VPasCode, bạn có thể lập tức tạo ra các sơ đồ trường hợp sử dụng rõ ràng, chuyên nghiệp mà không cần lo lắng về việc căn chỉnh bản đồ trực quan. Hướng dẫn này bỏ qua các ký hiệu cũ kỹ, khó hiểu và tập trung hoàn toàn vào các yếu tố cú pháp thực tế mà bạn cần cho tài liệu phần mềm hàng ngày.
Hướng dẫn cú pháp cốt lõi: Các thành phần và cấu trúc
Việc xây dựng sơ đồ trường hợp sử dụng trong PlantUML dựa trên một vài thành phần cấu trúc đơn giản được bao quanh bởi các thẻ tiêu chuẩn @startuml và @enduml thẻ.
1. Khai báo tác nhân
Một tác nhân đại diện cho một thực thể bên ngoài tương tác với ứng dụng của bạn (ví dụ như người dùng con người, dịch vụ nền tảng hoặc API phần cứng bên ngoài). Bạn khai báo một tác nhân bằng cách sử dụng từ khóa actortheo sau là một ID viết tắt nội bộ:
actor customer
actor admin as "Quản trị viên Hệ thống" 
Mẹo chuyên gia: Sử dụng từ khóa asđể gán một chuỗi hiển thị sạch sẽ, dễ đọc cho các ID tác nhân phức tạp.
2. Xác định các trường hợp sử dụng
Một trường hợp sử dụng đại diện cho một mục tiêu chức năng hoặc quy trình kinh doanh. Bạn có thể xác định một trường hợp sử dụng theo hai cách: bằng cách bao quanh văn bản trong dấu ngoặc đơn (Trường hợp sử dụng của bạn), hoặc bằng cách sử dụng rõ ràng từ khóa usecasetừ khóa cho định dạng phức tạp:
(Đăng nhập vào Bảng điều khiển)
usecase checkout as "Xử lý thanh toán bằng thẻ tín dụng" 
3. Bản đồ các tương tác cơ bản
Để kết nối các tác nhân của bạn với các use case tương ứng, hãy sử dụng các đường quan hệ hướng hoặc không hướng cơ bản. Bạn cũng có thể thêm nhãn văn bản để bổ sung bối cảnh quan trọng cho một tương tác:
customer --> (Đăng nhập vào Bảng điều khiển)
admin --> checkout : "Duyệt hoàn tiền" 
4. Mối quan hệ nâng cao: Include và Extend
Khi mô hình hóa các hành vi hệ thống phức tạp, bạn thường cần thể hiện các mối phụ thuộc giữa các use case khác nhau bằng cách sử dụng các kiểu định danh UML chuẩn:
- Include (Mối phụ thuộc bắt buộc):Chỉ ra rằng một use case cơ bản phụ thuộc vào một use case hỗ trợ khác để hoàn thành thực thi thành công. Sử dụng đường nối điểm (
..>) được nối thêm nhãn văn bản:Plantuml Edit Plantuml in VPasCode(Xử lý thanh toán) ..> (Xác minh số dư) : <<include>>
- Extend (Hành vi tùy chọn/điều kiện):Chỉ ra rằng một luồng công việc tùy chọn có thể tách ra từ một use case cơ bản dưới các điều kiện cụ thể. Lưu ý rằng mũi tên chỉ từ use case *mở rộng* trở lại use case *cơ bản*:
Plantuml Edit Plantuml in VPasCode
(Áp dụng mã khuyến mãi) ..> (Xử lý thanh toán) : <<extend>>
5. Thiết lập ranh giới hệ thống
Để phân biệt rõ ràng những gì xảy ra bên trong ứng dụng phần mềm của bạn so với những gì xảy ra bên ngoài, hãy sử dụng “hình chữ nhậttừ khóa để bao bọc các trường hợp sử dụng nội bộ của bạn. Điều quan trọng là các tác nhân nên ở bên ngoài khối chứa này để phản ánh vị trí của họ là các bên tham gia bên ngoài:
actor customer
rectangle "Nền tảng Thương mại điện tử" {
(Duyệt danh mục)
(Thêm vào giỏ hàng)
}
customer --> (Duyệt danh mục)
customer --> (Thêm vào giỏ hàng) 
Các thực hành tốt nhất cho bố cục sạch sẽ
- Giữ văn bản ngắn gọn:Các trường hợp sử dụng luôn phải bắt đầu bằng một động từ rõ ràng, mang tính hành động (ví dụ như “Tạo báo cáo”, “Cập nhật hồ sơ”) thay vì một câu dài.
- Sử dụng các điểm neo định hướng:Nếu các tác nhân và trường hợp sử dụng của bạn bị chồng chéo thành một chồng lộn xộn, hãy sử dụng các mũi tên định hướng không gian như
-phải->hoặc-xuống->để nhẹ nhàng điều chỉnh bộ động lực bố cục thành một cấu trúc sạch sẽ, dễ đọc. - Tách biệt ranh giới hệ thống: Luôn sử dụng hình chữ nhật ranh giới khi tài liệu hóa các ứng dụng tương tác với nhiều dịch vụ vi mô bên thứ ba. Điều này giúp ngay lập tức làm rõ ai sở hữu quy trình nào.
Các ví dụ về sơ đồ trường hợp sử dụng PlantUML trong thế giới thực
Sao chép và dán các bản thiết kế thực tế sau đây trực tiếp vào bảng điều khiển biên tập thời gian thực của VPasCode để xem cách chúng được hiển thị động.
Ví dụ 1: Xác thực người dùng cốt lõi và Quản lý tài khoản
Bản thiết kế này mô hình hóa một hệ sinh thái ứng dụng tiêu chuẩn bao gồm một người dùng chính, một người vận hành quản trị và một hộp ranh giới chứa các cơ chế bảo mật cốt lõi.
@startuml
' Đặt hướng bố cục từ trái sang phải
trái sang phải direction
actor "Người dùng cuối" as user
actor "Quản trị viên Bảo mật" as admin
rectangle "Dịch vụ Cung cấp Nhận dạng" {
(Đăng nhập)
(Đặt lại mật khẩu)
(Cập nhật Dữ liệu Hồ sơ)
(Xem Nhật ký Bảo mật)
(Vô hiệu hóa Tài khoản)
}
user --> (Đăng nhập)
user --> (Đặt lại mật khẩu)
user --> (Cập nhật Dữ liệu Hồ sơ)
(Xem Nhật ký Bảo mật) <-- admin
(Vô hiệu hóa Tài khoản) <-- admin
@enduml 
Phân tích cú pháp: Chỉ thị hướng từ trái sang phải buộc bộ động lực bố cục đặt các tác nhân ở hai bên ngoài và mở rộng các trường hợp sử dụng theo chiều ngang thay vì chiều dọc. Lưu ý cách đặt khai báo tác nhân một cách rõ ràng bên ngoài hình chữ nhậtbao bọc giúp chúng được sắp xếp gọn gàng, trong khi đảo ngược hướng dấu ngoặc mũi tên cho người dùng quản trị (<-- quản trị viên) giúp chúng được cố định rõ ràng ở phía bên phải ma trận biểu đồ.
Ví dụ 2: Thanh toán thương mại điện tử nâng cao với các phụ thuộc bên ngoài
Bố cục hệ thống thực tế này mô tả một quy trình thanh toán phức tạp phụ thuộc vào các API ngân hàng bên ngoài, các cấu trúc bao gồm và các cờ mở rộng tùy chọn.
@startuml
hướng từ trái sang phải
tác nhân "Khách hàng" là customer
tác nhân "Nhân viên Kho" là staff
tác nhân "Cổng Stripe" là stripe
hình chữ nhật "Hệ thống Thực hiện Cửa hàng Trực tuyến" {
(Đặt hàng)
(Áp dụng Mã Giảm Giá)
(Tạo Hóa đơn)
(Lấy Gói Hàng)
(Cập nhật Trạng thái Giao hàng)
}
' Tương tác bên ngoài với biên giới hệ thống
customer --> (Đặt hàng)
(Đặt hàng) --> stripe : "Xác nhận Tài khoản"
' Cấu trúc Bao gồm và Mở rộng
(Đặt hàng) ..> (Tạo Hóa đơn) : <<bao gồm>>
(Áp dụng Mã Giảm Giá) ..> (Đặt hàng) : <<mở rộng>>
' Các đường dẫn thực hiện
(Lấy Gói Hàng) <-- staff
(Cập nhật Trạng thái Giao hàng) <-- staff
(Tạo Hóa đơn) --> staff : "Gửi Bản Sao Email"
@enduml 
Phân tích cú pháp: Mẫu này nhấn mạnh cách một trường hợp sử dụng duy nhất (Đặt hàng) buộc phải gọi đến (Tạo Hóa đơn) bằng cách sử dụng thẻ <<bao gồm>> trên một đường chấm chấm. Trong khi đó, việc áp dụng mã giảm giá được mô hình hóa đúng cách như một nhánh tùy chọn thông qua <<mở rộng>> chỉ về phía sau hướng đến thực thi cơ bản. Tất cả các tác nhân bên ngoài vẫn được tách biệt rõ ràng bên ngoài bao bọc hệ thống.