de_DEen_USes_ESfa_IRfr_FRhi_INid_IDpl_PLpt_PTru_RUvizh_CNzh_TW

Làm chủ Phương pháp Hướng dẫn bởi Use Case: Hướng dẫn Toàn diện về Yêu cầu và Thiết kế

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ổng quan về Phương pháp luận: Cách tiếp cận dựa trên Use Case với AI + VPasCode

Tại sao thứ tự này lại quan trọng?

  1. 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.
  2. 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.
  3. 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.
  4. 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

Biểu đồ Use Case cho hệ thống quản lý đơn hàng trực tuyến, thể hiện tương tác giữa Khách hàng và Kho hàng.

@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)

  1. Khách hàng đăng nhập.
  2. Khách hàng gửi giỏ hàng với các mặt hàng đã chọn.
  3. 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.
  4. Hệ thống tính phí tổng số tiền thông qua cổng thanh toán.
  5. Hệ thống lưu đơn hàng với trạng thái đã xác nhận.
  6. Hệ thống trả về xác nhận đơn hàng kèm theo mã đơn hàng.
  7. 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)

Biểu đồ trình tự minh họa quy trình Đặt hàng với các tương tác giữa Khách hàng, Dịch vụ Đơn hàng, Cổng thanh toán và Cơ sở dữ liệu Đơn hàng.

@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.
  • alt Phâ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)

Giao diện VPasCode hiển thị Biểu đồ Hoạt động Đặt hàng với các làn (swimlanes) cho Khách hàng, Hệ thống và Kho hàng.

@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

Biểu đồ Hoạt động Đặt hàng minh họa luồng quy trình qua các làn (swimlanes) của Khách hàng, Hệ thống và Kho hàng.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/endif cấ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:

  1. Sơ đồ trường hợp sử dụng:
    • Sử dụng usecase cho 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.
  2. Biểu đồ trình tự:
    • Xác định người tham gia bằng cách sử dụng actor, participant, hoặc database.
    • Sử dụng -> cho các lời gọi đồng bộ và --> cho các phản hồi.
    • Sử dụng activate và deactivate để hiển thị vòng đời đối tượng.
    • Sử dụng alt, else, và kết thúc cho các đoạn kết hợp biểu diễn các luồng thay thế.
  3. 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/endif cho các nút quyết định.
    • Sử dụng start và stop để đánh dấu ranh giới quy trình.

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 繁體中文.