Trong bài viết trước, chúng ta đã nhấn mạnh tầm quan trọng của bản vẽ Use Case trong việc nắm bắt yêu cầu và kiến trúc chức năng của hệ thống. Bài viết này sẽ đi sâu vào chi tiết cấu trúc, cách xây dựng và ứng dụng thực tế của bản vẽ Use Case.
Mục Lục
1. Cấu Trúc Của Bản Vẽ Use Case
Hãy bắt đầu với một ví dụ điển hình về Use Case Diagram:
Hình 1. Bản vẽ Use Case minh họa các tác nhân và chức năng trong ứng dụng ATM, bao gồm Khách hàng (Customer), Kỹ thuật viên ATM (ATM Technician) và Ngân hàng (Bank).
Bản vẽ này mô tả rõ ràng các đối tượng tương tác (Customer, ATM Technician, Bank) và các chức năng mà họ sử dụng. Điều này giúp chúng ta hình dung bức tranh tổng thể về hệ thống và những ai sẽ sử dụng nó.
Bây giờ, hãy khám phá chi tiết từng thành phần cấu tạo nên bản vẽ Use Case.
1.1. Tác Nhân (Actor)
Tác nhân đại diện cho người dùng hoặc bất kỳ đối tượng bên ngoài nào tương tác với hệ thống. Đừng quên những đối tượng “hậu trường” như Bank trong ví dụ trên.
Tác nhân được biểu diễn bằng các ký hiệu sau:
Hoặc
Hình 2. Các biểu tượng thường dùng để thể hiện Tác nhân (Actor) trong sơ đồ Use Case.
1.2. Use Case (Trường Hợp Sử Dụng)
Use Case mô tả một chức năng cụ thể mà tác nhân có thể thực hiện trong hệ thống. Nó được ký hiệu bằng hình elip:
Hình 3. Ký hiệu hình elip đại diện cho một Use Case, thể hiện chức năng mà người dùng có thể thực hiện trong hệ thống.
Việc xác định chính xác các Use Case mà tác nhân sử dụng sẽ giúp bạn định hình các chức năng cần thiết của hệ thống.
1.3. Quan Hệ (Relationship)
Quan hệ (connector) liên kết các thành phần trong bản vẽ Use Case. Có bốn loại quan hệ chính:
- Association (kết hợp)
- Generalization (tổng quát hóa)
- Include (bao gồm)
- Extend (mở rộng)
Chúng ta sẽ đi sâu vào từng loại quan hệ này.
+ Quan hệ Association (Kết Hợp)
Association mô tả mối quan hệ giữa tác nhân và Use Case, hoặc giữa các Use Case với nhau.
Hình 4. Ví dụ về quan hệ Association, thể hiện User (người dùng) sử dụng chức năng Login (đăng nhập) trong hệ thống.
+ Quan hệ Generalization (Tổng Quát Hóa)
Generalization thể hiện quan hệ thừa kế giữa các tác nhân hoặc giữa các Use Case. Ví dụ, một “User” có thể kế thừa toàn bộ quyền của một “Guest”.
Hình 5. Ví dụ về quan hệ Generalization, trong đó User (người dùng) thừa kế toàn bộ quyền hạn của Guest (khách).
+ Quan hệ Include (Bao Gồm)
Include mô tả việc một Use Case lớn được chia thành các Use Case nhỏ hơn để dễ dàng quản lý, hoặc để tái sử dụng chức năng. Ví dụ, Use Case “Xác thực mật khẩu” có thể được tách ra từ Use Case “Đăng nhập”.
Hình 6. Ví dụ về quan hệ Include, trong đó Use Case “Xác thực mật khẩu” được tách ra từ Use Case “Đăng nhập” để tái sử dụng và dễ quản lý.
+ Quan hệ Extend (Mở Rộng)
Extend mô tả việc một Use Case được tạo ra để bổ sung chức năng cho một Use Case có sẵn, trong một điều kiện nhất định. Ví dụ, Use Case “Mở tài khoản” có thể được mở rộng bằng Use Case “Thêm người sở hữu tài khoản” nếu khách hàng là công ty.
Hình 7. Ví dụ về quan hệ Extend, trong đó Use Case “Thêm người sở hữu tài khoản” mở rộng chức năng của Use Case “Mở tài khoản” khi khách hàng là công ty.
1.4. Ranh Giới Hệ Thống (System Boundary)
System Boundary xác định phạm vi của hệ thống đang được thiết kế. Các đối tượng bên ngoài ranh giới này, nhưng tương tác với hệ thống, được coi là tác nhân. Ranh giới hệ thống giúp chúng ta dễ dàng chia hệ thống lớn thành các hệ thống con để phân tích và thiết kế.
2. Các Bước Xây Dựng Use Case Diagram
Sau khi đã nắm vững các ký hiệu, chúng ta sẽ tìm hiểu cách tạo ra một bản vẽ Use Case hoàn chỉnh:
-
Bước 1: Xác định các Tác nhân (Actor)
Trả lời các câu hỏi sau:
- Ai sử dụng hệ thống này?
- Hệ thống nào tương tác với hệ thống này?
Ví dụ, với hệ thống ATM:
- Ai sử dụng hệ thống? -> Customer, ATM Technician
- Hệ thống nào tương tác với hệ thống này? -> Bank
Vậy, chúng ta có 3 tác nhân: Customer, ATM Technician và Bank.
-
Bước 2: Xác định các Use Case
Trả lời câu hỏi: Các tác nhân sử dụng những chức năng gì trong hệ thống?
Ví dụ:
- Customer sử dụng các chức năng: Check Balance, Deposit, Withdraw, Transfer
- ATM Technician sử dụng: Maintenance, Repair
- Bank tương tác với tất cả các chức năng trên.
Như vậy, hệ thống cần có các chức năng: Check Balance, Deposit, Withdraw, Transfer, Maintenance và Repair.
-
Bước 3: Xác định các Quan hệ
Phân tích và xác định các loại quan hệ giữa các tác nhân và Use Case, giữa các tác nhân với nhau, và giữa các Use Case với nhau. Sau đó, kết nối chúng lại để tạo thành bản vẽ Use Case hoàn chỉnh.
Hình 8. Bản vẽ Use Case hoàn chỉnh cho hệ thống ATM, thể hiện các tác nhân, Use Case và mối quan hệ giữa chúng.
3. Đặc Tả Use Case
Bản vẽ Use Case cho chúng ta biết hệ thống cần những chức năng gì và ai sử dụng chúng. Tuy nhiên, chúng ta cần hiểu rõ hơn về cách các chức năng này vận hành. Để làm điều này, chúng ta cần đặc tả các Use Case.
Có hai cách để đặc tả Use Case:
-
Cách 1: Viết đặc tả chi tiết cho từng Use Case
Sử dụng mẫu sau:
Tên Use Case: //Account Details Mã số Use Case: //UCSEC35 Mô tả tóm tắt: //Hiển thị thông tin chi tiết của Account Các bước thực hiện: //Liệt kê các bước thực hiện Điều kiện thoát: //Khi người dùng kích nút Close Yêu cầu đặc biệt: //Ghi rõ nếu có Yêu cầu trước khi thực hiện: //Phải đăng nhập Điều kiện sau khi thực hiện: //Ghi rõ những điều kiện nếu có sau khi thực hiện Use Case này -
Cách 2: Sử dụng các bản vẽ khác để đặc tả
Sử dụng Activity Diagram, Sequence Diagram… để mô tả chi tiết luồng hoạt động của Use Case. Chúng ta sẽ tìm hiểu về các bản vẽ này trong các bài viết tiếp theo.
4. Ứng Dụng Của UseCase Diagram
Use Case Diagram đóng vai trò quan trọng trong suốt quá trình phát triển hệ thống. Dưới đây là một số ứng dụng tiêu biểu:
- Phân tích và hiểu hệ thống.
- Thiết kế hệ thống.
- Làm cơ sở cho việc phát triển và kiểm tra các bản vẽ khác như Class Diagram, Activity Diagram, Sequence Diagram, Component Diagram.
- Làm cơ sở để giao tiếp với khách hàng và các nhà đầu tư.
- Hỗ trợ kiểm thử chức năng và kiểm thử chấp nhận.
5. Kết luận
Chúng ta đã khám phá bản vẽ Use Case, một công cụ quan trọng trong việc phân tích, thiết kế và phát triển phần mềm. Hãy thực hành thường xuyên để nắm vững cách xây dựng và sử dụng chúng một cách hiệu quả. Trong bài viết tiếp theo, chúng ta sẽ cùng nhau thực hành xây dựng Use Case Diagram từng bước một.
