Bỏ qua tới nội dung
Phạm Thủy
Quay lại

Use Case cho BA

Note này hướng dẫn BA dùng Use Case để mô tả các hành động và kịch bản cụ thể mà hệ thống phải xử lý khi phản hồi tác nhân. Trọng tâm không phải vẽ sơ đồ UML cho đúng ký hiệu, mà là mô tả đủ rõ ai làm gì, trong điều kiện nào, và hệ thống phản hồi ra sao — gồm cả luồng thường lẫn ngoại lệ.

Note này dùng để làm gì

Mở note này khi bạn cần:

Đọc kèm:


1. Use Case là gì

Use Case là một kỹ thuật trong phân tích hệ thống dùng để mô tả các hành động và kịch bản cụ thể. Nó mô phỏng các tình huống thực tế mà hệ thống phải xử lý: hành động đầu vào của tác nhân, và phản hồi tương ứng của hệ thống.

Khác với FDD (nhìn hệ thống ở mức cây tính năng tổng thể), Use Case đi sâu vào một tính năng cụ thể và làm rõ cách tính năng đó vận hành khi có người dùng tương tác.


2. Năm bước xác định Use Case

Bước 1: Xác định tác nhân (Actors)

Tác nhân là người hoặc đối tượng (hệ thống khác) tương tác với hệ thống của ta. Phân biệt hai nhóm:

NhómVí dụ
Tác nhân bên ngoàingười dùng cuối (end users), hệ thống ngoài, đối tác (partners), người tiêu dùng dịch vụ, người giám sát, hệ thống tự động bên ngoài
Tác nhân bên trongngười dùng hệ thống (system users), quản trị viên (administrator), hệ thống tự động nội bộ, dịch vụ nội bộ, hệ thống cơ sở dữ liệu

Xác định đúng actor giúp không sót người/hệ thống nào liên quan tới tính năng.

Bước 2: Xác định mục tiêu (Objectives)

Mục tiêu giúp giới hạn phạm vi của tính năng: đảm bảo tập trung vào mục tiêu chính yếu, tránh lan man sang phần không liên quan. Nếu không chốt mục tiêu, Use Case dễ phình to và mô tả lẫn lộn nhiều chức năng.

Bước 3: Xác định các hành động (Actions)

Bao gồm các sự kiện kích hoạt Use Case — thường gọi là Trigger. Trigger trả lời câu hỏi: điều gì làm kịch bản này bắt đầu?

Bước 4: Xác định kịch bản (Scenarios)

Mỗi kịch bản cần làm rõ điều kiện đầu và điều kiện cuối:

Thành phầnÝ nghĩa
Pre-condition (điều kiện tiên quyết)điều kiện bắt buộc phải thỏa mãn để tính năng có thể bắt đầu
Post-condition (điều kiện hoàn thành)kết quả mong đợi sau khi kịch bản kết thúc thành công

Bước 5: Mô tả chi tiết

Triển khai chi tiết các luồng sự kiện (main flow, alternative flow, exception flow). Phần luồng chi tiết thường được mô tả sâu hơn ở bước viết flow/đặc tả riêng.


3. Ví dụ Use Case theo ShopFlow

Actor và Use Case tổng quan

ActorUse Case chínhGhi chú
Khách hàngBrowse Product Catalog, Create Customer Order, Simulate Order Paymentbám Jira SF-2, SF-3, SF-4
Chủ shopUpdate Delivery Status, Process Customer Return, View Low Stock Alertbám Jira SF-5, SF-8, SF-9
Nhân viên khoManage Inventory Stock, Receive Supplier Stock, Update Delivery Status, Process Customer Returnbám Jira SF-5, SF-6, SF-7, SF-8

3a. Quan hệ Include và Extend giữa các Use Case

Ngoài quan hệ actor–use case (association), UML Use Case Diagram còn hai loại quan hệ giữa các use case với nhau: <<include>><<extend>>. Cả hai đều mô tả hành vi xảy ra trong cùng một lần thực thi — khác với quan hệ tuần tự theo thời gian (xem thêm ở mục Anti-patterns).

Include — hành vi bắt buộc, dùng chung

<<include>> dùng khi một use case luôn luôn gọi một use case khác tại một điểm cố định trong flow của nó. Included use case không tồn tại độc lập — nó chỉ là một đoạn hành vi được tách ra vì nhiều use case cha cùng dùng chung, tránh lặp lại mô tả.

Ví dụ trong ShopFlow:

Ba use case Manage Inventory Stock (SF-6), Receive Supplier Stock (SF-7), Process Customer Return (SF-8) — dù trigger khác nhau (chỉnh tay / nhập hàng / khách trả hàng) — đều kết thúc bằng cùng một hành động: ghi nhận số lượng tồn kho mới vào DB. Đây là ứng viên include chuẩn: tách hành động đó ra thành một use case riêng tên Adjust Stock Quantity, và cả ba use case cha đều include nó.

UC5 (Manage Inventory Stock)   ..> Adjust Stock Quantity : <<include>>
UC6 (Receive Supplier Stock)   ..> Adjust Stock Quantity : <<include>>
UC7 (Process Customer Return)  ..> Adjust Stock Quantity : <<include>>

Đặc điểm nhận biết include: nếu bỏ use case con ra, use case cha không còn hoàn chỉnhManage Inventory Stock mà không ghi được vào DB thì coi như không làm được gì.

Extend — hành vi tùy chọn, có điều kiện

<<extend>> dùng khi một use case chèn thêm hành vi bổ sung vào một use case khác, chỉ khi thỏa điều kiện nhất định, tại một điểm gọi là extension point. Khác với include, base use case vẫn hoàn chỉnh và tự đứng được một mình kể cả khi không có extending use case.

Ví dụ trong ShopFlow:

Sau khi Adjust Stock Quantity chạy xong (dù được gọi từ UC5, UC6 hay UC7), hệ thống kiểm tra: nếu số lượng tồn kho rơi xuống dưới ngưỡng cấu hình, thì mới chèn thêm View Low Stock Alert (SF-9). Nếu không dưới ngưỡng, Adjust Stock Quantity vẫn coi là hoàn tất bình thường — không cần alert.

Adjust Stock Quantity <.. View Low Stock Alert : <<extend>>
                                                  (extension point: stock below threshold)

Diagram đầy đủ

ShopFlow Use Case Diagram

Lưu ý về PlantUML: extension point trong oval Adjust Stock Quantity được dựng bằng Creole formatting (--- tạo đường kẻ ngăn cách, <b> in đậm), không phải một construct UML chuyên biệt mà PlantUML hiểu về mặt ngữ nghĩa. Đây chỉ là mẹo trình bày cho giống chuẩn UML; PlantUML không có keyword riêng cho extension point như <<include>> hay <<extend>>.

Bảng so sánh nhanh

Tiêu chíIncludeExtend
Base case cần con không?Bắt buộc — không hoàn chỉnh nếu thiếuKhông — vẫn hoàn chỉnh dù thiếu
Điều kiện thực thiLuôn luôn xảy raChỉ khi thỏa điều kiện tại extension point
Vị trí trong flowCố định, xác định trướcĐiểm rẽ nhánh tùy chọn
Ví dụ ShopFlowUC5/UC6/UC7 include Adjust Stock QuantityAdjust Stock Quantity extend bởi View Low Stock Alert

Lưu ý về actor khi dùng extend

Actor chính của View Low Stock AlertChủ shop, nhưng use case gốc Adjust Stock Quantity lại được kích hoạt bởi actor khác nhau tùy use case cha (Nhân viên kho hoặc Chủ shop). Đây là quan hệ extend do hệ thống tự kích hoạt (system-triggered) sau khi điều kiện thỏa mãn, không phải actor chủ động gọi. UML không bắt buộc extend phải cùng actor với base case — chỉ cần base case tự hoàn chỉnh độc lập là đủ điều kiện.

Mini-glossary bổ sung


Use Case mẫu: UC-ORD-001 Create Customer Order

Thành phầnNội dung
Use Case IDUC-ORD-001
Primary actorKhách hàng
Goaltạo order từ sản phẩm còn available stock
Triggerkhách submit order từ danh sách sản phẩm đã chọn
Pre-conditionsản phẩm active; khách đã nhập thông tin giao hàng hợp lệ
Post-condition thành côngorder được tạo ở status Pending Payment; stock được reserve
Post-condition thất bạikhông tạo order; inventory không đổi
Requirement/JiraFR-ORD-001, SF-3, SF-11

Main flow

  1. Khách hàng chọn sản phẩm và số lượng.
  2. Khách hàng nhập thông tin giao hàng.
  3. Khách hàng submit order.
  4. Hệ thống kiểm available stock cho từng order item.
  5. Hệ thống tạo order ở status Pending Payment.
  6. Hệ thống reserve stock theo quantity của từng item.
  7. Hệ thống chuyển khách hàng sang bước thanh toán mô phỏng.

Exception flow

Điều kiệnHệ thống phản hồi
Một item không đủ available stockreject toàn bộ order và hiển thị thông báo thiếu hàng
Thông tin giao hàng thiếu hoặc sai formatkhông tạo order và yêu cầu khách sửa dữ liệu
Sản phẩm không còn activekhông tạo order và báo sản phẩm không còn bán

Main flow sequence diagram

UC-ORD-001 Sequence Diagram

Use Case này nối được sang:


4. Lưu ý quan trọng khi viết Use Case

  1. Tập trung vào người dùng: luôn lấy tác nhân tương tác làm trung tâm của kịch bản, không mô tả theo góc nhìn kỹ thuật nội bộ.
  2. Phân tích đủ luồng: bao quát cả normal case (luồng thành công) lẫn exception (lỗi hoặc luồng rẽ nhánh). Đây là chỗ Use Case tạo giá trị rõ nhất so với mô tả tính năng chung chung.
  3. Mô tả rành mạch: mọi tình huống diễn đạt rõ để đội phát triển không hiểu nhầm.
  4. Cập nhật thường xuyên: Use Case là tài liệu sống, cần cập nhật theo thay đổi của yêu cầu hoặc hệ thống — giống nguyên tắc tài liệu sống của FDD.

5. Anti-patterns

Anti-patternVì sao nguy hiểmCách sửa
Chỉ mô tả happy pathsót lỗi, rẽ nhánh, edge caseliệt kê đủ normal case + exception
Không chốt mục tiêu trướcUse Case phình to, lẫn nhiều chức năngxác định objective ở Bước 2 để giới hạn scope
Bỏ qua pre/post-conditionkhông rõ khi nào được bắt đầu, khi nào coi là xongghi rõ pre-condition và post-condition
Mô tả theo góc nhìn hệ thốngkhó kiểm chứng theo hành vi người dùngviết theo tác nhân: actor làm gì, hệ thống phản hồi gì
Vẽ dependency (.>) giữa các use case để thể hiện thứ tự thời gianinclude/extend/dependency chỉ đúng cho quan hệ trong cùng 1 lần thực thi, không phải trình tự nghiệp vụ theo statechuyển sang pre-condition trong Use Case Spec hoặc State Machine Diagram của entity
Viết một lần rồi để yênUse Case lệch khỏi hệ thống thậtcoi là tài liệu sống, cập nhật theo thay đổi

6. Checklist nhanh

Trước khi coi một Use Case là đủ dùng, kiểm tra:


Mini-glossary

References

Internal Sources

Nguồn gốc: tổng hợp từ video bài giảng “Usecase và So sánh Usecase với FDD”. Danh sách actor và 5 bước bám theo cách trình bày trong bài; chi tiết luồng sự kiện (main/alternative/exception flow) thuộc bài học sau, chưa khai triển ở đây.


Chia sẻ bài viết:

Bài trước
SRS và BRD cho BA
Bài sau
Agile Concepts cho BA