Một sơ đồ trường hợp sử dụng là một công cụ mô hình hóa cơ bản trong kỹ thuật yêu cầu được sử dụng để trực quan hóa các tương tác giữa các tác nhân (người dùng hoặc hệ thống bên ngoài) và hệ thống (hoặc các chức năng của nó). Nó giúp các bên liên quan hiểu được hệ thống phải làm gì từ góc độ chức năng và đóng vai trò như một cầu nối giao tiếp giữa các đội kỹ thuật và người dùng kinh doanh.
Mặc dù đơn giản, sơ đồ trường hợp sử dụng thường bị sử dụng sai do việc xác định tác nhân kém, các trường hợp sử dụng mơ hồ hoặc các mối quan hệ sai. Hướng dẫn này nhằm làm rõ các khái niệm chính, cung cấp một phương pháp từng bước, và làm nổi bật các lỗi phổ biến để tránh.
| Khái niệm | Giải thích |
|---|---|
| Tác nhân | Một người dùng, tổ chức hoặc hệ thống bên ngoài tương tác với hệ thống. Đóng vai trò là “người dùng” trong bối cảnh hệ thống. Ví dụ: sinh viên, giáo viên, quản trị viên, cổng thanh toán. |
| Trường hợp sử dụng | Một mô tả về một mục tiêu hoặc chức năng cụ thể mà hệ thống thực hiện cho một tác nhân. Xác định điều gì hệ thống làm, chứ không phải cách thức. Ví dụ: “Đăng ký một khóa học”, “Nộp điểm”, “Tạo báo cáo”. |
| Biên giới hệ thống | Biên giới tách biệt hệ thống khỏi các tác nhân và hệ thống bên ngoài. Mọi thứ bên trong biên giới đều là một phần của hệ thống. |
| Liên kết | Một đường nối kết nối một tác nhân với một trường hợp sử dụng, cho thấy tác nhân có thể thực hiện trường hợp sử dụng đó. |
| Tổng quát hóa | Một mối quan hệ trong đó một tác nhân kế thừa hành vi từ tác nhân khác (ví dụ: “Sinh viên” là một loại của “Người dùng”). |
| Phụ thuộc | Một mối quan hệ cho thấy một trường hợp sử dụng phụ thuộc vào trường hợp sử dụng khác (e |
| .v.d., “Tạo báo cáo” phụ thuộc vào “Lấy dữ liệu sinh viên”). | |
| Bao gồm | Một trường hợp sử dụng màbắt buộcđể thực hiện một trường hợp khác (ví dụ: “Nộp điểm” bao gồm “Xác minh mã sinh viên”). |
| Mở rộng | Một trường hợp sử dụng màcó điều kiệnthêm chức năng (ví dụ: “Gửi thông báo” mở rộng “Nộp điểm” khi điểm số thấp hơn ngưỡng). |
⚠️ Lưu ý quan trọng: Các trường hợp sử dụng không liên quan đếntính năng— chúng liên quan đếnmục tiêu chức năngđáp ứng nhu cầu người dùng.
Hãy tự đặt những câu hỏi cốt lõi này để xác định tất cả các tác nhân liên quan:
| Câu hỏi | Tại sao điều đó quan trọng |
|---|---|
| Ai sử dụng các trường hợp sử dụng chính? | Xác định người dùng chính (ví dụ: sinh viên, giảng viên). |
| Ai cần hỗ trợ cho công việc hàng ngày? | Tìm ra các vai trò hỗ trợ (ví dụ: nhân viên nhân sự, hỗ trợ CNTT). |
| Ai chịu trách nhiệm quản trị hệ thống? | Xác định các vai trò quản trị (ví dụ: quản trị viên hệ thống, quản trị viên cơ sở dữ liệu). |
| Hệ thống tương tác với những thiết bị/phần mềm bên ngoài nào? | Xác định các hệ thống bên ngoài (ví dụ: email, cổng thanh toán, ERP). |
| Ai quan tâm đến kết quả của hệ thống? | Xác định các bên liên quan (ví dụ: phụ huynh, thành viên hội đồng). |
📌 Mẹo: Bắt đầu với người dùng quan trọng nhất và mở rộng ra ngoài. Sử dụng các tình huống thực tế hoặc phỏng vấn để xác minh việc xác định người dùng.
💡 Ví dụ: Trong một hệ thống hệ thống quản lý sinh viên trường đại học, các người dùng có thể bao gồm:
Sinh viên
Giảng viên
Cố vấn học thuật
Cán bộ hành chính
Cổng thanh toán
Hệ thống ERP
Sau khi xác định được người dùng, hãy đặt các câu hỏi sau về mỗi người dùng:
| Câu hỏi | Mục đích |
|---|---|
| Những nhiệm vụ chính mà người dùng phải thực hiện là gì? | Xác định các mục tiêu chức năng (ví dụ: đăng ký, đăng ký học, xem điểm). |
| Người dùng có muốn truy vấn hoặc sửa đổi dữ liệu trong hệ thống không? | Chỉ ra các thao tác đọc/viết (ví dụ: xem hồ sơ, chỉnh sửa hồ sơ cá nhân). |
| Người dùng có muốn thông báo cho hệ thống về các thay đổi trong các hệ thống khác không? | Gợi ý các sự kiện kích hoạt dựa trên sự kiện (ví dụ: thông báo cho hệ thống khi một khóa học được thêm). |
| Người dùng có nên được thông báo về các sự kiện bất ngờ không? | Chỉ ra các trường hợp sử dụng thông báo (ví dụ: “Cảnh báo: Phát hiện quá tải khóa học”). |
📌 Sử dụng ngôn ngữ đơn giản, tập trung vào mục tiêu. Tránh dùng các thuật ngữ kỹ thuật.
✅ Trường hợp sử dụng tốt: “Đăng ký một khóa học”
❌ Trường hợp sử dụng xấu: “Gửi biểu mẫu đăng ký với xác thực” → trở nên quá kỹ thuật.
Các trường hợp sử dụng có thể được mô hình hóa ở các mức độ khác nhau:
| Mức độ | Mô tả |
|---|---|
| Các trường hợp sử dụng cấp cao | Các mục tiêu chức năng rộng lớn phản ánh mục tiêu kinh doanh (ví dụ: “Quản lý hồ sơ sinh viên”). |
| Các trường hợp sử dụng được tinh chỉnh | Các hành động chi tiết được suy ra từ các mục tiêu cấp cao. |
🔁 Phương pháp phát triển lặp lại:
Bắt đầu từ các mục tiêu kinh doanh cấp cao.
Chia nhỏ chúng thành các mục tiêu phụ.
Tinh chỉnh từng trường hợp sử dụng cho đến khi cụ thể và có thể thực hiện được.
📌 Ví dụ phân tích:
Cấp cao: “Hỗ trợ quản lý sinh viên”
Tinh chỉnh:
Sinh viên có thể đăng ký
Sinh viên có thể đăng ký các khóa học
Hệ thống lưu trữ điểm số
Hệ thống gửi xác nhận đăng ký
Điều này đảm bảo hệ thống đáp ứngmục tiêu kinh doanhtrong khi vẫn giữthực tế và có thể kiểm thử.
Bây giờ, đặt các tác nhân và các trường hợp sử dụng trên sơ đồ và kết nối chúng một cách phù hợp.
[Tác nhân] --> [Trường hợp sử dụng]
↑
[Chèn] [Mở rộng]
↓
[Phụ thuộc]
Đặt các tác nhân bên ngoài ranh giới hệ thống (thường ở bên trái, phải hoặc trên).
Đặt các trường hợp sử dụng bên trong ranh giới hệ thống (ở trung tâm hoặc phía dưới).
Sử dụngđường liềnđể biểu diễn các mối quan hệ liên kết.
Sử dụngđường gạch đứtđể biểu diễn các mối quan hệ phụ thuộc.
Sử dụngmũi tên bao gồm (→)để biểu diễn mối quan hệbao gồmliên kết.
Sử dụngmũi tên mở rộng (→)để biểu diễn mối quan hệmở rộng quan hệ.
Tránh các trường hợp sử dụng chồng chéo; giữ sơ đồ sạch sẽ và dễ đọc.
📌 Ví dụ trực quan (dựa trên văn bản):
+------------------+
| Sinh viên | --> Đăng ký khóa học
+------------------+
|
v
+------------------+
| Hệ thống | --> Lưu thông tin đăng ký khóa học
| (Biên giới) |
+------------------+
^
|
+------------------+
| Cổng thanh toán| --> Xử lý thanh toán phí
+------------------+
🚨 Sai lầm phổ biến: Vẽ các tác nhân bên trong biên giới hệ thống — điều này ngụ ý rằng chúng là một phần của hệ thống, nhưng thực tế chúng không phải.

Sơ đồ này được tạo bởi trợ lý AI của Visual Paradigm:

| Sai lầm | Tại sao lại sai | Cách khắc phục |
|---|---|---|
| 🚫 Làm phức tạp hóa các tác nhân | Tạo quá nhiều tác nhân (ví dụ: “John Doe”, “Sarah Smith”) thay vì nhóm các vai trò | Nhóm các vai trò tương tự (ví dụ: “Sinh viên”, “Giảng viên”) |
| 🚫 Sử dụng các trường hợp sử dụng mơ hồ | Những cụm từ như “quản lý dữ liệu”, “làm điều gì đó” | Thay thế bằng các cụm từ cụ thể, hướng đến mục tiêu (ví dụ: “Nộp đăng ký khóa học”) |
| 🚫 Thiếu các mối phụ thuộc | Không hiển thị cách một trường hợp sử dụng phụ thuộc vào trường hợp khác | Thêm bao gồm hoặc mở rộng quan hệ khi cần thiết |
| 🚫 Sử dụng sai ‘mở rộng’ | Sử dụng mở rộngcho các quy trình thông thường |
Sử dụng bao gồmcho các bước bắt buộc; sử dụng mở rộngchỉ dành cho các bước tùy chọn, điều kiện |
| 🚫 Bỏ qua các hệ thống bên ngoài | Không bao gồm cổng thanh toán, email, v.v. | Xác định tất cả các hệ thống bên ngoài và hiển thị các tương tác của chúng |
| 🚫 Chỉ sử dụng một tác nhân | Giả định chỉ có một người dùng sử dụng hệ thống | Xác định tất cả các bên liên quan và nhu cầu của họ |
| 🚫 Sử dụng thuật ngữ kỹ thuật | ví dụ: “Cập nhật cơ sở dữ liệu”, “gọi API” | Duy trì các hành vi chức năng — “Gửi yêu cầu” là tốt hơn |
| Thực hành | Giải thích |
|---|---|
| ✅ Bắt đầu từ mục tiêu kinh doanh | Mô hình hóa từ trên xuống — phù hợp với các mục tiêu chiến lược. |
| ✅ Tham gia sớm các bên liên quan | Phỏng vấn người dùng cuối hoặc chuyên gia lĩnh vực để xác minh các use case. |
| ✅ Giữ các use case độc lập | Mỗi use case nên đại diện cho một mục tiêu duy nhất và rõ ràng. |
| ✅ Sử dụng các tình huống thực tế | Dựa vào các hoạt động thực tế của người dùng (ví dụ: một sinh viên đăng ký một lớp học). |
| ✅ Xác nhận với đội nhóm | Xem xét sơ đồ cùng với các nhà phát triển, người kiểm thử và các chuyên gia phân tích kinh doanh. |
| ✅ Cập nhật theo từng giai đoạn | Khi yêu cầu thay đổi, hoàn thiện sơ đồ theo các chu kỳ nhỏ hơn. |
| ✅ Tài liệu hóa các trường hợp sử dụng một cách chi tiết | Bao gồm các điều kiện tiền và hậu, cũng như tiêu chí thành công/thất bại trong một tài liệu riêng biệt. |
[30] Kỹ thuật yêu cầu – Sách nền tảng về mô hình hóa trường hợp sử dụng.
[27] Xác định các trường hợp sử dụng trong yêu cầu phần mềm – Các phương pháp thực tiễn để suy ra các trường hợp sử dụng từ các tác nhân.
[16, 40] – Tài liệu toàn diện về kỹ thuật yêu cầu và thiết kế hệ thống.
Tiêu chuẩn IEEE/ISO: ISO/IEC 29148 – Hướng dẫn về chuẩn hóa trường hợp sử dụng.
Sách được đề xuất:
Yêu cầu phần mềm: Làm đúng ngay từ lần đầu bởi Ian Sproul
Quy trình phát triển phần mềm thống nhất (RUP) – Giới thiệu mô hình hóa trường hợp sử dụng trong UML
Thành viên
Thư viện viên
Quản trị viên
Hệ thống thư mục trực tuyến
Cổng thanh toán
Thành viên:
Mượn một cuốn sách
Trả lại một cuốn sách
Tìm kiếm sách
Xem trạng thái thành viên
Thư viện viên:
Mượn sách
Trả sách
Cập nhật hồ sơ sách
Tạo danh sách quá hạn
Quản trị viên:
Thêm sách mới
Quản lý tài khoản người dùng
Tạo báo cáo hàng năm
Hệ thống thư mục trực tuyến:
Tìm kiếm sách
Thông báo cho thành viên về các đầu sách mới
Cổng thanh toán:
Xử lý phạt
Xử lý phí gia hạn
Thành viên → Mượn → Bao gồm → Trả lại
Thư viện viên → Mượn → Gia hạn → Gửi thông báo (nếu quá hạn)
Quản trị viên → Thêm sách → Bao gồm → Cập nhật thư mục
Sơ đồ này rõ ràng cho thấy ai làm gì, họ có thể làm gì và các hệ thống tương tác với nhau như thế nào.
✅ Tôi đã xác định tất cả các tác nhân liên quan chưa?
✅ Các trường hợp sử dụng có mô tả rõ ràng và hướng đến mục tiêu không?
✅ Tất cả các tác nhân có được kết nối với ít nhất một trường hợp sử dụng không?
✅ Các mối phụ thuộc (bao gồm/mở rộng) có được mô hình hóa đúng không?
✅ Có phải có các tác nhân hoặc trường hợp sử dụng nào bị thiếu không?
✅ Sơ đồ có dễ đọc và hiểu không?
✅ Tôi đã trình bày nó với các bên liên quan chưa?
Tạo ra một sơ đồ trường hợp sử dụng không chỉ đơn thuần là vẽ các đường và hình hộp — đó là một quá trình chiến lược yêu cầu hiểu sâu sắc về nhu cầu người dùng, sự rõ ràng trong ngôn ngữ, và sự chú ý đến chi tiết.
Mặc dù sơ đồ trông đơn giản, việc sử dụng sai tác nhân và trường hợp sử dụng dẫn đến thiết kế hệ thống kém, bỏ sót yêu cầu và người dùng thất vọng. Bằng cách tuân theo các bước trong hướng dẫn này — xác định các tác nhân thông qua các câu hỏi thực tế, suy ra các trường hợp sử dụng từ nhu cầu của tác nhân, và tránh những sai lầm phổ biến — bạn có thể tạo ra các sơ đồ trường hợp sử dụng chính xác, khả thi và phù hợp với các bên liên quan.
✅ Nhớ rằng: Một sơ đồ trường hợp sử dụng tốt kể một câu chuyện — câu chuyện về cách người dùng tương tác với hệ thống để đạt được mục tiêu của họ.