Chuyển tới nội dung

Mối Quan Hệ Include và Extend Trong Use Case

Mối Quan Hệ Include và Extend Trong Use Case

Khi thiết kế hệ thống phần mềm, sơ đồ Use Case là công cụ không thể thiếu giúp chúng ta mô tả cách người dùng tương tác với hệ thống. Nhưng nếu chỉ đơn thuần vẽ các Use Case độc lập, mô hình sẽ trở nên rời rạc, khó mở rộng và khó quản lý. Đây là lúc hai mối quan hệ quan trọng IncludeExtend phát huy tác dụng.

Hãy tưởng tượng bạn đang xây dựng một hệ thống đặt hàng trực tuyến. Một số chức năng có thể chia sẻ hoặc phụ thuộc vào nhau. Làm sao để thể hiện điều đó một cách logic và hiệu quả? Hãy cùng tìm hiểu!

1. Hiểu về Use Case và Quan Hệ Giữa Các Use Case

Use Case là gì?

Use Case là một kịch bản mô tả cách một tác nhân (actor) tương tác với hệ thống để đạt được mục tiêu cụ thể. Ví dụ: trong hệ thống mua hàng, các Use Case có thể là Đặt hàng, Thanh toán, Kiểm tra giỏ hàng, v.v.

Nhưng trong thực tế, một số Use Case có những phần chung lặp lại, hoặc có những chức năng mở rộng chỉ được kích hoạt trong điều kiện đặc biệt. Để tổ chức chúng hợp lý, UML cung cấp hai loại quan hệ đặc biệt:

Include: Dùng để tái sử dụng các Use Case chung.

Extend: Dùng để mở rộng Use Case trong một số điều kiện nhất định.

2. Mối Quan Hệ Include – Khi Một Use Case Cần Chia Sẻ Hành Vi Chung

Khái niệm

Quan hệ Include thể hiện việc một Use Case bắt buộc phải gọi một Use Case khác để hoàn thành nhiệm vụ của nó.

🔹 Cách nhận biết: Khi có một đoạn chức năng lặp đi lặp lại ở nhiều Use Case khác nhau, ta có thể tách nó ra thành một Use Case riêng rồi “Include” vào các Use Case cần sử dụng nó.

Ví dụ thực tế

Giả sử trong hệ thống đặt hàng, có các Use Case sau:

Đặt hàng

Thanh toán đơn hàng

Hủy đơn hàng

    Cả ba Use Case này đều yêu cầu kiểm tra thông tin khách hàng. Thay vì lặp lại bước này trong từng Use Case, ta tạo một Use Case riêng gọi là “Xác minh thông tin khách hàng” và sử dụng quan hệ Include.

    📌 Mô hình UML

    [Đặt hàng]  ---<<include>>--->  [Xác minh thông tin khách hàng]  
    [Thanh toán đơn hàng]  ---<<include>>--->  [Xác minh thông tin khách hàng]  
    [Hủy đơn hàng]  ---<<include>>--->  [Xác minh thông tin khách hàng]  
    

    Khi nào nên dùng Include?

    ✅ Khi có một Use Case chung xuất hiện trong nhiều Use Case khác nhau.
    ✅ Khi muốn tránh lặp code và làm hệ thống rõ ràng hơn.
    ✅ Khi chức năng được gọi là bắt buộc phải có.

    3. Mối Quan Hệ Extend – Khi Một Use Case Cần Được Mở Rộng Trong Một Số Trường Hợp

    Khái niệm

    Quan hệ Extend thể hiện một Use Case mở rộng chức năng của một Use Case khác, nhưng chỉ trong một số điều kiện nhất định.

    🔹 Cách nhận biết: Khi một chức năng không phải lúc nào cũng xảy ra, chỉ được kích hoạt dựa trên một điều kiện cụ thể, thì ta sử dụng Extend.

    Ví dụ thực tế

    Giả sử trong hệ thống đặt hàng, ta có Use Case Thanh toán đơn hàng. Trong một số trường hợp, khách hàng có thể chọn sử dụng Mã giảm giá, nhưng không phải ai cũng có mã giảm giá. Vậy, ta không nên gộp “Sử dụng mã giảm giá” vào “Thanh toán đơn hàng”, mà nên sử dụng quan hệ Extend.

    📌 Mô hình UML

    [Thanh toán đơn hàng]  ---<<extend>>--->  [Sử dụng mã giảm giá]  
    

    ✅ Ở đây, “Sử dụng mã giảm giá” không phải lúc nào cũng xảy ra, mà chỉ được kích hoạt nếu khách hàng có mã giảm giá.

    Khi nào nên dùng Extend?

    ✅ Khi một Use Case chỉ xảy ra trong một số điều kiện nhất định.
    ✅ Khi không muốn làm phức tạp Use Case chính bằng các chức năng phụ trợ.
    ✅ Khi muốn mô tả rõ ràng điều kiện nào kích hoạt một Use Case mở rộng.

    4. So Sánh Include và Extend – Khi Nào Dùng Cái Nào?

    Tiêu chíIncludeExtend
    Bản chấtTái sử dụng một phần chức năng chungMở rộng chức năng khi có điều kiện
    Bắt buộc?Bắt buộcKhông bắt buộc
    Ứng dụngKhi nhiều Use Case có chung một phần chức năngKhi một chức năng chỉ xảy ra trong một số trường hợp
    Hướng quan hệMột chiều (Use Case chính gọi Use Case chung)Một chiều (Use Case mở rộng chỉ được kích hoạt trong một số điều kiện)
    Ví dụXác minh thông tin khách hàngSử dụng mã giảm giá trong thanh toán

    5. Lời Kết – Ứng Dụng Include và Extend Trong Dự Án Thực Tế

    Việc hiểu rõ IncludeExtend giúp chúng ta tổ chức hệ thống một cách hợp lý, giảm trùng lặp và làm cho sơ đồ Use Case dễ hiểu hơn.

    👉 Khi thiết kế hệ thống thực tế, hãy luôn đặt câu hỏi:
    ✔️ Chức năng này có được dùng chung nhiều nơi không? → Nếu có, hãy tách nó ra và dùng Include.
    ✔️ Chức năng này có phải lúc nào cũng xảy ra không? → Nếu không, hãy dùng Extend.

    Chỉ cần hiểu đúng bản chất của hai mối quan hệ này, bạn sẽ có một sơ đồ Use Case rõ ràng, trực quan và dễ bảo trì hơn rất nhiều. 🚀

    Chia Sẻ Bài Viết
    Follow Nam Trên LinkedIn
    Follow on LinkedIn

    BÀI VIẾT KHÁC

    Tham Khảo Các Dịch Vụ Của Web Designer Lê Thành Nam

    Thiết Kế WebsiteTrọn Gói
    Thiết Kế Website
    Trọn Gói
    Nâng Tầm Thương Hiệu, Tối Ưu Hiệu Suất
    SEO Website Tổng Thể
    SEO
    Website Tổng Thể
    Tăng Thứ Hạng, Thu Hút Khách Hàng
    Nâng Cấp Website
    Nâng Cấp
    Website
    Đổi Mới Hiệu Suất, Nâng Cao Trải Nghiệm
    Quản Trị Website
    Quản Trị
    Website
    Đảm Bảo Hoạt Động, Tối Ưu Hiệu Suất

    Cần Một Website Ấn Tượng?

    Bạn muốn một website không chỉ đẹp mà còn thu hút khách hàng và gia tăng doanh số? Mình là Lê Thành Nam, chuyên gia thiết kế web từng hợp tác với nhiều thương hiệu trong và ngoài nước. Nam tin rằng một website không chỉ là nơi trưng bày mà còn là công cụ giúp bạn nổi bật, chuyên nghiệp và chinh phục khách hàng trong từng click chuột! Hãy sở hữu ngay cho mình một website đẹp mắt và hiệu quả với mức giá vô cùng phải chăng cho tất cả mọi người bạn nhé! 

    Đừng chần chừ! Nhấn vào nút bên dưới để nhận tư vấn miễn phí ngay hôm nay. 

    Bạn cần một website vừa đẹp mắt vừa hiệu quả trong việc thu hút khách hàng và tăng doanh số? Mình là Lê Thành Nam, chuyên gia thiết kế web với kinh nghiệm hợp tác cùng nhiều thương hiệu trong và ngoài nước. Hãy để mình giúp bạn sở hữu một website chuyên nghiệp, ấn tượng, và phù hợp mọi ngân sách!