Sơ đồ Use Case là một công cụ trực quan quan trọng trong phân tích và thiết kế hệ thống, giúp mô tả rõ các chức năng mà hệ thống cần thực hiện thông qua sự tương tác với người dùng. Không chỉ hỗ trợ định hình yêu cầu phần mềm một cách rõ ràng, sơ đồ Use Case còn đóng vai trò là cầu nối hiệu quả giữa khách hàng và nhóm phát triển trong việc xây dựng hệ thống phù hợp thực tiễn. Hãy cùng tìm hiểu khái niệm, ký hiệu, cách xây dựng và ứng dụng sơ đồ Use Case vào một bài toán thực tế qua nội dung dưới đây.

I. KHÁI NIỆM SƠ ĐỒ USE CASE
Mô hình UseCase (use case model) là mô hình của các chức năng dự định của hệ thống.
- Mô hình UseCase đóng vai trò là cam kết giữa khách hàng và nhà phát triển ứng dụng.
- Mục đích quan trọng nhất của mô hình UseCase là truyền đạt các chức năng của hệ thống tới khách hàng, các bên tham gia
Sơ đồ UseCase là một thành phần của mô hình UseCase, là phần trực quan hóa mô hình, gồm các actor và các use case, mối quan hệ giữa Actor và UseCase, mối quan hệ giữa các UseCase với nhau.
- Mỗi use case là một mô tả về cách người dùng(Actor) tương tác với hệ thống để đạt được một mục tiêu cụ thể. Nói đơn giản use case là một chức năng mà hệ thống cung cấp cho người dùng.
Ví dụ:
.jpg)
II. CÁC KÝ HIỆU TRONG BẢN VẼ USE CASE
- Actor: Actor được dùng để chỉ người sử dụng hoặc một đối tượng nào đó bên ngoài tương tác với hệ thống. Actor được biểu diễn như sau:
.jpg)
- Use Case: là chức năng mà các Actor sẽ sử dụng. Nó được ký hiệu như sau:
.jpg)
Với việc xác định các chức năng mà Actor sử dụng bạn sẽ xác định được các Use Case cần có trong hệ thống.
- Relationship (Quan hệ): Hay còn gọi là conntector được sử dụng để kết nối giữa các đối tượng với nhau. Có các kiểu quan hệ:
.jpg)
Association thường được dùng để mô tả mối quan hệ giữa Actor và Use Case và giữa các Use Case với nhau. Ví dụ thể hiện Actor User sử dụng Use Case Login
.jpg)
- Quan hệ Generalization: được sử dụng để thể hiện quan hệ thừa kế giữa các Actor hoặc giữa các Use Case với nhau
.jpg)
- Ví dụ Actor User thừa kế toàn bộ quyền của Actor Guest
.jpg)
- Quan hệ Include: Include là quan hệ giữa các Use Case với nhau, nó mô tả việc một Use Case lớn được chia ra thành các Use Case nhỏ để dễ cài đặt, dễ hiểu (module hóa) hoặc thể hiện sự dùng lại
.jpg)
Use Case “Verify Password” có thể gộp chung vào Use Case Login nhưng tách ra để cho các Use Case khác sử dụng hoặc để module hóa cho dễ hiểu, dễ cài đặt
.jpg)
- Quan hệ Extend: dùng để mô tả quan hệ giữa 2 Use Case. Quan hệ Extend được sử dụng khi có một Use Case được tạo ra để bổ sung chức năng cho một Use Case có sẵn và được sử dụng trong một điều kiện nhất định nào đó
.jpg)
Ví dụ:
.jpg)
Trong ví dụ trên “Open Account” là Use Case cơ sở để cho khách hàng mở tài khoản. Tuy nhiên, có thêm một điều kiện là nếu khách hàng là công ty thì có thể thêm người sở hữu lên tài khoản này. Add Account Holder là chức năng mở rộng của Use Case “Open Account” cho trường hợp cụ thể nếu Actor là Công ty nên quan hệ của nó là quan hệ Extend.
- System Boundary: được sử dụng để xác định phạm vi của hệ thống mà chúng ta đang thiết kế. Các đối tượng nằm ngoài hệ thống này có tương tác với hệ thống được xem là các Actor.
.jpg)
System Boundary sẽ giúp chúng ta dễ hiểu hơn khi chia hệ thống lớn thành các hệ thống con để phân tích, thiết kế.
III. CÁC BƯỚC XÂY DỰNG SƠ ĐỒ USE CASE
Bước 1: Tìm các Actor
- Trả lời các câu hỏi sau để xác định Actor cho hệ thống:
- 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?
- Xem xét ví dụ về ATM chúng ta thấy:
- 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
Như vậy có 03 Actor: Customer, ATM Technician và Bank
Bước 2: Tìm các Use case
Trả lời câu hỏi các Actor sử dụng chức năng gì trong hệ thống? chúng ta sẽ xác định được các Use Case cần thiết cho hệ thống.
Xem xét ví dụ ở trên ta thấy:
- Customer sử dụng các chức năng: Check Balance(Kiểm tra số dư), Deposit(gửi tiền), Withdraw(rút tiền) và Transfer(chuyển khoản)
- ATM technician sử dụng: Maintenance(bảo trì) và Repair (sửa chửa)
- Bank tương tác với tất cả các chức năng trên.
Tóm lại, chúng ta phải xây dựng hệ thống có các chức năng: Check Balance, Deposit, Withdraw, Transfer, Maintenance và Repair để đáp ứng được cho người sử dụng và các hệ thống tương tác.
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 Actor và Use Case, giữa các Actor với nhau, giữa các Use Case với nhau sau đó nối chúng lại chúng ta sẽ được bản vẽ Use Case.
.jpg)
IV. DEMO
Bài tập 1. Xây dựng sơ đồ Use case cho một hệ thống thương mại điện tử (E Commerce) như sau:
“Một công ty chuyên kinh doanh về các thiết bị điện tử và công nghệ thông tin trong nhiều năm nay và đã có một lượng khách hàng nhất định. Để mở rộng hoạt động kinh doanh của mình, công ty mong muốn xây dựng một hệ thống thương mại điện tử nhằm mở rộng phạm vi kinh doanh trên mạng Internet.
Hệ thống mới phải đảm bảo cho khách hàng viếng thăm Website dễ dàng lựa chọn các sản phẩm, xem các khuyến mãi cũng như mua hàng. Việc thanh toán có thể được thực hiện qua mạng hoặc thanh toán trực tiếp tại cửa hàng. Khách hàng có thể nhận hàng tại cửa hàng hoặc sử dụng dịch vụ chuyển hàng có phí của công ty.
Ngoài ra, hệ thống cũng cần có phân hệ để đảm bảo cho công ty quản lý các hoạt động kinh doanh như số lượng hàng có trong kho, quản lý đơn đặt hàng, tình trạng giao hàng, thanh toán v.v…
Thông tin chi tiết các chức năng các bạn có thể tham khảo thêm tại các Website bán hàng.
Bạn hãy giúp công ty xây dựng hệ thống use casse trên."
Hướng dẩn: Các bước xây dựng bản vẽ Use Case
Bước 1: Thu thập kiến thức liên quan đến hệ thống sẽ xây dựng
Trước hết, để phân tích hệ thống trên bạn phải có kiến thức về hệ thống thương mại điện tử, chúng ta có thể tìm hiểu thông qua các nguồn sau:
- Xem các trang Web bán hàng qua mạng như amazon, lazada.vn, bkc.vn v.v..
- Xem các hệ thống mẫu về thương mại điện tử nguồn mở như Magento, OpenCart, Spree Commerce v.v…
- Đọc sách, báo về eCommerce
- Hỏi những người chuyên về lĩnh vực này (hỏi chuyên gia)
Lưu ý: Bạn không thể thiết kế tốt được nếu bạn không có kiến thức về lĩnh vực của sản phẩm mà bạn sẽ xây dựng.
Bước 2: Xác định các Actor
Hãy trả lời cho câu hỏi “Ai sử dụng hệ thống này?”
Xem xét Website chúng ta nhận thấy:
- Những người muốn mua hàng vào website để xem thông tin. Những người này là Khách hàng tiềm năng (Guest).
- Những người đã đặt hàng vào kiểm tra đơn hàng, thanh toán v.v.. gọi là Khách hàng (Customer).
- Về phía đơn vị bán hàng, có những người sau đây tham gia vào hệ thống:
- Người quản lý bán hàng: quyết định nhập hàng, giá bán, quản lý tồn kho, doanh thu, chính sách khuyến mãi.
- Người bán hàng: Tư vấn cho khách hàng, theo dõi đơn hàng, thu tiền, theo dõi chuyển hàng cho khách.
- Quản lý kho: xuất, nhập hàng, quản lý tồn kho
- Quản trị hệ thống: Tạo người dùng, Phân quyền, Tạo cửa hàng
Tiếp theo chúng ta trả lời câu hỏi “Hệ thống nào tương tác với hệ thống này?”
Giả sử ở đây, chúng ta sử dụng dịch vụ của Ngân Lượng để thanh toán trực tuyến và gọi nó là “Cổng thanh toán” thì ta có thêm một Actor tương tác với hệ thống.
Như vậy, chúng ta đã có các Actor của hệ thống gồm: Khách hàng tiềm năng, khách hàng, Quản lý bán hang, Người bán hàng, Quản lý Kho, Quản trị hệ thống, Cổng thanh toán
Bạn cần khảo sát và phân tích thêm cũng như hỏi trực tiếp khách hàng để xác định đầy đủ các Actor cho hệ thống.
Bước 3: Xác định Use Case
Bạn cần trả lời câu hỏi “Actor sử dụng chức năng gì trên hệ thống?”.
Trước tiên, xem xét với Actor “Khách hàng tiềm năng” trên trang bkc.vn để xem họ sử dụng chức năng nào?
- Xem trang chủ
- Xem các sản phẩm theo:
- Theo chủng loại
- Nhà sản xuất
- Tìm kiếm theo văn bản gõ vào
- Xem chi tiết sản phẩm được chọn
- Xem khuyến mãi
- Xem so sánh
- Mua hàng
- Quản lý giỏ hàng
- Chat với người bán hàng
- Đăng ký tài khoản để trở thành khách hàng
Tiếp theo, xem xét Actor “Khách hàng” và nhận thấy họ sử dụng chức năng:
- Đăng nhập
- Xem đơn hàng
- Thanh toán
Tiếp theo, xem xét Actor “Người bán hàng” và họ có thể sử dụng các chức năng:
- Đăng nhập
- Chat với khách hàng
- Theo dõi đơn hàng
- Thu tiền
- Theo dõi chuyển hàng
Tương tự như vậy bạn xác định chức năng cho các Actor còn lại.
Bước 4: Vẽ bản vẽ Use Case
Trước hết chúng ta xem xét và phân tích các chức năng của “Khách hàng tiềm năng” chúng ta nhận thấy.
- Chức năng xem sản phẩm có 2 cách là chọn loại sản phẩm, nhà sản xuất để xem và gõ vào ô tìm kiếm. Nên chúng ta tách ra làm 2 là Xem sản phẩm và Tìm kiếm.
- Chức năng mua hàng, thực chất là thêm vào giỏ hàng nên có thể xem là chức năng con của quản lý giỏ hàng.
Đặt lại tên cho gọn và xác định các mối quan hệ của chúng, chúng ta có thể vẽ Use Case Diagram cho Actor này như sau:
.jpg)
Tiếp theo, chúng xem xét các chức năng cho Actor “Khách hàng” và nhận thấy chức năng “Thanh toán” thường thực hiện cho từng đơn hàng cụ thể nên có thể nó là chức năng con của “Quản lý đơn hàng”. Ngoài ra, các chức năng Actor này sử dụng không giao với Actor “Khách hàng tiềm năng” nên nó được biểu diễn như sau:
.jpg)
Tiếp tục xem xét Actor “Người bán hàng” chúng ta nhận thấy:
- Chức năng “Thu tiền” thực tế là thanh toán trực tiếp tại quày cho từng đơn hàng và chức năng “Theo dõi chuyển hàng” được thực hiện trên từng đơn hàng nên nó có thể là chức năng con của “Quản lý đơn hàng”.
- Chức năng “Quản lý đơn hàng” ở đây quản lý cho nhiều khách hàng nên sẽ khác với chức năng “Quản lý đơn hàng” của Actor “Khách hàng” nên để phân biệt chúng ta sửa chức năng “Quản lý đơn hàng ” của Actor “Khách hàng” thành “Quản lý đơn hàng cá nhân”
Tiếp tục xem xét Actor “Người bán hàng” chúng ta nhận thấy:
- Chức năng “Đăng nhập” có thể dùng chung với Actor “Khách hàng”, chức năng Chat dùng chung với Actor “Khách hàng tiềm năng”
Vẽ chúng chung với nhau chúng ta được bản vẽ như sau:
.jpg)
Thầy Dương Quang Huy – Giảng viên Khoa CNTT - ĐT