Giới thiệu
Trong kỹ thuật phần mềm, việc thu hẹp khoảng cách giữa nhu cầu của các bên liên quan và việc triển khai kỹ thuật thường là giai đoạn khó khăn nhất của quá trình phát triển. Phương pháp Phương pháp Hướng dẫn bởi Use Case cung cấp một phương pháp luận có cấu trúc và lặp lại để giải quyết vấn đề này. Bằng cách tập trung vào cách người dùng tương tác với hệ thốngđể đạt được các mục tiêu cụ thể, phương pháp này đảm bảo rằng các yêu cầu rõ ràng, có thể kiểm thử và có thể truy xuất trực tiếp đến các tài liệu thiết kế.
Hướng dẫn này cung cấp một quy trình toàn diện về Phương pháp Hướng dẫn bởi Use Case, di chuyển từ các yêu cầu cấp cao đến thiết kế chi tiết. Chúng ta sẽ sử dụng một ví dụ duy nhất đang chạy—một Hệ thống Quản lý Đơn hàng Trực tuyến—để minh họa cho từng giai đoạn, đảm bảo tính nhất quán và rõ ràng trong suốt quá trình.
Tổng quan về Phương pháp luận
Phương pháp Hướng dẫn bởi Use Case tuân theo một quá trình tiến triển tự nhiên từ trên xuống dưới. Mỗi giai đoạn tinh chỉnh giai đoạn trước đó, tăng độ chính xác và giảm sự mơ hồ.

Tại sao thứ tự này lại quan trọng?
- Biểu đồ Use Case: Cung cấp một danh mục đầy đủ về các khả năng và phạm vi. Nó nhanh chóng để quét và lý tưởng cho sự đồng thuận của các bên liên quan về cái gì mà hệ thống làm.
- Mô tả Use Case: Loại bỏ sự mơ hồ bằng cách xác định rõ các điều kiện tiên quyết, điều kiện hậu quả, các vai trò và mức độ ưu tiên. Nó “đóng băng” hợp đồng hành vi.
- Luồng sự kiện: Biến hợp đồng thành các bước cụ thể và có thể kiểm thử. Điều này đóng vai trò là nguyên liệu thô cho cả các trường hợp kiểm thử và thiết kế kỹ thuật.
- Hoạt động/Biểu đồ Chuỗi: Đóng vai trò là cầu nối đến mã nguồn. Nó xác định các đối tượng tham gia, trách nhiệm của chúng, các trao đổi thông điệp và các quy tắc phân nhánh chính xác.
Giai đoạn 1: Biểu đồ Use Case (Yêu cầu)
Biểu đồ Use Case nắm bắtai tương tác với hệ thống (các tác nhân) vàcái gì họ có thể làm (các use case), cùng với các mối quan hệ giữa chúng.
Các khái niệm chính
- Tác nhân chính: Khởi tạo use case (được đặt ở bên trái).
- Tác nhân phụ: Hỗ trợ hệ thống hoặc nhận thông báo (được đặt ở bên phải).
- Biên giới hệ thống: Hình chữ nhật xác định phạm vi của hệ thống.
<<include>>: Đại diện cho hành vi chia sẻ bắt buộc. Nếu Use Case A bao gồm Use Case B, B phải xảy ra thì A mới hoàn thành.<<extend>>: Đại diện cho hành vi tùy chọn. Use Case B mở rộng Use Case A chỉ trong các điều kiện cụ thể.
Ví dụ: Hệ thống quản lý đơn hàng trực tuyến

@startuml
skinparam linetype ortho
skinparam defaultFontSize 14
skinparam defaultFontColor #333333
skinparam vpDiagramType UseCaseDiagram
skinparam actor {
BackgroundColor #E8F5E9
}
skinparam usecase {
BackgroundColor #BBDEFB
BorderColor #1976D2
ArrowColor #1976D2
}
left to right direction
actor "Customern(Primary)" as cust
actor "Warehousen(Secondary)" as wh
rectangle "Order Management System" {
usecase "Place Order" as UC1
usecase "Cancel Order" as UC2
usecase "Track Order" as UC3
usecase "Login" as UC4
usecase "Print Invoice" as UC5
}
cust -[#black]- UC1
cust -[#black]- UC2
cust -[#black]- UC3
UC1 -[#crimson]- wh
UC2 -[#crimson]- wh
UC1 ...> UC4 : <<include>>
UC2 ...> UC4 : <<include>>
UC3 ...> UC4 : <<include>>
UC1 <... UC5 : <<extend>>
@enduml
Phân tích biểu đồ:
- Biểu đồKhách hàng khởi tạo việc đặt hàng, hủy đơn và theo dõi đơn hàng.
- Kho hàngKho hàng tham gia vào việc đặt và hủy đơn hàng (có thể để cập nhật tồn kho).
- Đăng nhập được bao gồm trong các chức năng Đặt hàng, Hủy đơn và Theo dõi đơn hàng, có nghĩa là xác thực là bắt buộc đối với các hành động này.
- In hóa đơn mở rộng chức năng Đặt hàng, có nghĩa đây là bước tùy chọn có thể xảy ra sau khi đơn hàng được đặt.
Giai đoạn 2: Mô tả trường hợp sử dụng (Quy cách)
Biểu đồ chỉ nêu tên các trường hợp sử dụng nhưng thiếu chi tiết. Bảng Mô tả trường hợp sử dụngquy định hợp đồng chính xác cho từng trường hợp sử dụng.
Ví dụ: UC-01 Đặt hàng
| Trường | Giá trị |
|---|---|
| ID trường hợp sử dụng | UC-01 |
| Tên | Đặt hàng |
| Diễn viên chính | Khách hàng |
| Diễn viên phụ | Kho hàng |
| Điều kiện tiên quyết | Khách hàng đã đăng nhập; giỏ hàng chứa ít nhất một mặt hàng; hàng hóa còn trong kho |
| Hậu điều kiện (Thành công) | Đơn hàng được lưu trữ với trạng thái đã xác nhận; thanh toán đã được ghi nhận; số theo dõi đã được cấp |
| Hậu điều kiện (Lỗi) | Không tạo đơn hàng; giỏ hàng không thay đổi; người dùng được thông báo lý do |
| Luồng chính | → Xem Giai đoạn 3 |
| Luồng thay thế / Luồng ngoại lệ | Hàng tồn kho không đủ; thanh toán bị từ chối |
| Mức độ ưu tiên | Cao |
Mục đích: Giai đoạn này xác định những gì phải đúng trước khi kịch bản sử dụng được thực thi (tiền điều kiện) và những gì phải được đảm bảo sau (hậu điều kiện), thiết lập các tiêu chí thành công/lỗi rõ ràng.
Giai đoạn 3: Luồng sự kiện (Các kịch bản)
Đây là trái tim hành vi của phương pháp tiếp cận. Kịch bản sử dụng “Đặt hàng” được mở rộng thành một kịch bản kịch bản—một chuỗi các bước được đánh số được viết trước khi bất kỳ sơ đồ thiết kế chi tiết nào được tạo ra.
Kịch bản thành công chính (Luồng cơ bản)
- Khách hàng đăng nhập.
- Khách hàng gửi giỏ hàng với các mặt hàng đã chọn.
- Hệ thống xác thực nội dung giỏ hàng và tình trạng sẵn có của hàng tồn kho.
- Hệ thống tính phí tổng số tiền thông qua cổng thanh toán.
- Hệ thống lưu đơn hàng với trạng thái
đã xác nhận. - Hệ thống trả về xác nhận đơn hàng kèm theo mã đơn hàng.
- Hệ thống thông báo cho Kho hàng để lấy hàng, đóng gói và vận chuyển.
Các kịch bản thay thế
- 3a. Hàng tồn kho không đủ: Hệ thống báo cáo các mặt hàng không khả dụng và quay lại giỏ hàng.
- 4a. Thanh toán bị từ chối: Hệ thống thông báo cho khách hàng và không tạo đơn hàng.
Quy ước chính: Mỗi kịch bản ánh xạ trực tiếp đến một bước trong mô tả. Các luồng này trở thành cơ sở cho các biểu đồ Hoạt động và Chuỗi trong giai đoạn tiếp theo.
Giai đoạn 4: Thiết kế chi tiết (Biểu đồ Chuỗi & Biểu đồ Hoạt động)
Ở giai đoạn này, bạn chọn ký hiệu dựa trên khía cạnh nào của hệ thống mà bạn muốn nhấn mạnh.
- Biểu đồ Chuỗi: Nhấn mạnhđường đời, thứ tự tin nhắn và trách nhiệm giữa các đối tượng. Lý tưởng để khám phá các lớp và phương thức.
- Biểu đồ Hoạt động: Nhấn mạnhluồng điều khiển và các quyết định thông qua các làn/phân công. Lý tưởng để tài liệu hóa các quy trình và trách nhiệm vai trò.
4A. Biểu đồ Chuỗi (Góc độ Tương tác)

@startuml
title Place Order Sequence Diagram
skinparam linetype ortho
skinparam defaultFontSize 14
skinparam defaultFontColor #333333
skinparam sequenceParticipant underline
skinparam vpDiagramType InteractionDiagram
skinparam {
FontSize 14
ArrowColor #4A4A4A
ArrowFontColor #4A4A4A
BackgroundColor #FFFFFF
BorderColor #DEDEDE
FontColor #333333
Participant {
BorderColor #0077B6
BackgroundColor #F0F8FF
FontColor #005691
}
Actor {
BorderColor #6A057F
BackgroundColor #F5EEF8
FontColor #510363
}
Sequence {
ArrowThickness 2
LifeLineBorderColor #444444
LifeLineBackgroundColor #F7F7F7
BoxBorderColor #AAAAAA
BoxBackgroundColor #FFFFFF
BoxFontColor #333333
}
}
actor "Customer" as USR
participant "Order Service" as OS
participant "Payment Gateway" as PG
database "Order DB" as DB
activate USR
USR -> OS : submitOrder(items)
activate OS
alt Validation & Payment
OS -> OS : validateCart(items)
OS -> PG : charge(total)
activate PG
PG --> OS : paymentOk
deactivate PG
OS -> DB : saveOrder(status=confirmed)
activate DB
DB --> OS : orderId
deactivate DB
OS --> USR : orderConfirmation(orderId)
else Insufficient Stock
OS -> DB : checkStock(items)
activate DB
DB --> OS : stockUnavailable
deactivate DB
OS --> USR : error("Out of stock")
else Payment Failed
PG --> OS : paymentFailed
OS --> USR : error("Payment declined")
end
deactivate OS
@enduml
Các khái niệm chính:
- Lời gọi đồng bộ: Mũi tên liền (
->). - Phản hồi: Mũi tên đứt đoạn (
-->). - Thanh kích hoạt: Hiển thị vòng đời xử lý của một đối tượng.
altPhân đoạn kết hợp: Bao bọc ba kịch bản (Thành công, Thiếu hàng, Thanh toán thất bại), trực tiếp phản ánh Dòng sự kiện từ Giai đoạn 3.
4B. Sơ đồ hoạt động (Góc độ quy trình)

@startuml
<style>
element { MaximumWidth 150 }
start { Backgroundcolor #00695C }
stop { Backgroundcolor #C2185B }
activity{ Backgroundcolor #81D4FA; MaximumWidth 150 }
diamond { Backgroundcolor #FFB74D; MaximumWidth 80 }
arrow { LineColor #424242; Fontcolor #000000 }
swimlane{ Fontcolor #000000; FontSize 14 }
</style>
title Sơ đồ hoạt động Đặt hàng
|#F0F8FF|Khách hàng|
start
:Đăng nhập;
:Duyệt qua danh mục;
:Thêm mục vào giỏ hàng;
if (Sẵn sàng thanh toán?) then (có)
:Tiến hành thanh toán;
else (không)
:Quay lại duyệt mục;
stop
endif
|#E8F5E9|Hệ thống|
:Xác thực giỏ hàng;
:Xử lý thanh toán;
if (Thanh toán được phê duyệt?) then (có)
:Tạo đơn hàng (trạng thái=đã xác nhận);
else (không)
:Thông báo thanh toán thất bại;
endif
|#F5EEF8|Kho hàng|
if (Thanh toán được phê duyệt?) then (có)
:Chọn và đóng gói mục hàng;
:Giao hàng;
:Gửi số theo dõi;
stop
else (không)
stop
endif
@enduml
Khái niệm chính:
- Kênh bơi: Gán mỗi hành động cho bên chịu trách nhiệm (Khách hàng, Hệ thống, Kho hàng).
- Nút quyết định:
if/then/else/endifcấu trúc mã hóa các kịch bản phân nhánh. - Đánh dấu bắt đầu/kết thúc: Xác định ranh giới đầu và cuối của quy trình.
Những điểm chính về PlantUML
Để mô hình hóa hiệu quả phương pháp này bằng PlantUML, hãy nhớ các nguyên tắc cú pháp sau:
- Sơ đồ trường hợp sử dụng:
- Sử dụng
usecasecho các chức năng. - Sử dụng
...>cho<<include>>các mối quan hệ. - Sử dụng
<...cho<<mở rộng>>các mối quan hệ. - Sử dụng
hình chữ nhật "Tên hệ thống" {}để xác định ranh giới hệ thống.
- Sử dụng
- Biểu đồ trình tự:
- Xác định người tham gia bằng cách sử dụng
actor,participant, hoặcdatabase. - Sử dụng
->cho các lời gọi đồng bộ và-->cho các phản hồi. - Sử dụng
activatevàdeactivateđể hiển thị vòng đời đối tượng. - Sử dụng
alt,else, vàkết thúccho các đoạn kết hợp biểu diễn các luồng thay thế.
- Xác định người tham gia bằng cách sử dụng
- Sơ đồ hoạt động:
- Sử dụng
|#color|LaneName|để định nghĩa các làn. - Sử dụng
:action;cho các hoạt động. - Sử dụng
if/else/endifcho các nút quyết định. - Sử dụng
startvàstopđể đánh dấu ranh giới quy trình.
- Sử dụng
Kết luận
Phương pháp lấy trường hợp sử dụng làm trung tâm không chỉ là một kỹ thuật tài liệu; đó là một khung cho sự tinh tiến dần dần. Bằng cách bắt đầu với bức tranh tổng thể (Sơ đồ trường hợp sử dụng) và đi sâu vào các hành vi cụ thể (Luồng sự kiện) và các tương tác kỹ thuật (Sơ đồ tuần tự/Sơ đồ hoạt động), các nhóm có thể đảm bảo rằng mọi dòng mã đều có thể truy ngược lại một nhu cầu người dùng đã được xác minh.
Phương pháp này giảm thiểu rủi ro hiểu lầm giữa các bên liên quan và nhà phát triển, tạo điều kiện thuận lợi cho việc kiểm tra dễ dàng hơn thông qua các kịch bản rõ ràng, và dẫn đến thiết kế hệ thống mạnh mẽ, lấy người dùng làm trung tâm. Dù bạn đang xây dựng một nền tảng thương mại điện tử đơn giản hay một hệ thống doanh nghiệp phức tạp, việc tuân thủ quá trình có cấu trúc này sẽ dẫn đến các yêu cầu rõ ràng hơn và phần mềm chất lượng cao hơn.
This post is also available in Deutsch, English, Español, فارسی, Français, English, Bahasa Indonesia, Polski, Portuguese, Ру́сский, 简体中文 and 繁體中文.












