BÀI 7 LÀM VIỆC VỚI CÁC USE CASE DIAGRAM Use case là một khái niệm hữu ích giúp phân tích viên hiểu được hành vi của hệ thống.. Nội dung chính trong bài học này: + Biểu diễn một mô hình
Trang 1BÀI 7
LÀM VIỆC VỚI CÁC USE CASE DIAGRAM
Use case là một khái niệm hữu ích giúp phân tích viên hiểu được hành vi của hệ thống Nó giúp ta ghi nhận các yêu cầu từ quan điểm người dùng Nội dung chính trong bài học này: + Biểu diễn một mô hình use case (use case model)
+ Trực quan hóa mối quan hệ giữa các use case
+ Tìm hiểu vai trò của các use case diagram trong quá trình phát triển
+ Tạo và ứng dụng các mô hình use case
+ Xem xét bức tranh tổng thể của UML
Biểu diễn một mô hình use case (Use Case Model)
Một actor kích hoạt một use case và một actor cũng nhận các giá trị trả về từ use case Hình ellipse biểu diễn use case, hình người gậy biểu diễn actor Actor kích hoạt (initiating actor) nằm bên trái của use case trong khi actor nhận (receiving actor) nằm bên phải Tên của actor xuất hiện bên dưới actor Tên của use case xuất hiện bên trong hoặc dưới elippse Một đường nối giữa một actor và use case biểu diễn sự liên lạc giữa actor và use case
Một ưu điểm của phân tích use case là cho thấy ranh giới (boundary) giữa hệ thống với thế giới bên ngoài Actor đặc trưng cho bên ngoài hệ thống, trong khi use case là bên trong Ta dùng một hình chữ nhật để biểu diễn ranh giới hệ thống (system boundary)
Thuật ngữ: Các tác nhân (actor), các use case và các đường nối tạo nên một mô hình use
case (use case model)
Hình 7.1
Trong một use case
model, hình người gậy
(stick) biểu diễn một
actor, hình ellipse biểu
diễn một use case và
một đường nối biểu diễn
liên lạc giữa actor và
use case
Trang 2Xem lại ví dụ “Soda machine”
Áp dụng những ký hiệu vừa học vào ví dụ bài trước Ta xây dựng các use case cho một
“soda machine” Trong hệ thống có các use case “Buy soda”, “Restock” và “Collect” Các actor là Customer, Supplier’s Representative và Collector Hình 7.2 biểu diễn mô hình use case cho “soda machine”
Hình 7.2
Một mô hình use case
của “soda machine”
Theo dõi các bước trong kịch bản:
Mỗi use case là một tập hợp các kịch bản (scenario) và mỗi kịch bản là một chuỗi các bước (step) Các bước không xuất hiện trong sơ đồ cũng như trong các ghi chú đính kèm các use case Mặc dù vậy UML không ngăn cấm việc này Sự rõ ràng là điều quan trọng trong việc tạo bất cứ diagram nào Việc đính kèm ghi chú cho từng use case đôi khi làm rối diagram Use case diagram thường là một phần trong tài liệu thiết kế mà khách hàng và đội phát triển cùng tham khảo Mỗi diagram trên một trang riêng Mỗi kịch bản cho mỗi use case cũng đặt trong một trang riêng, liệt kê theo dạng sau:
Actor mà kích hoạt use case
Tiền điều kiện (precondition) cho use case
Các bước (step) trong kịch bản (scenario)
Hậu điều kiện (postcondition) khi kịch bản hoàn tất
Actor nhận kết quả từ use case
Ta cũng có thể trình bày các giả sử cho kịch bản (ví dụ, mỗi lượt chỉ một người dùng soda machine) và một mô tả ngắn gọn (brief description) của kịch bản
Trang 3Biểu diễn mối liên kết (relationship) giữa các use case:
Thuật ngữ: Ví dụ trong bài 6 đã cho thấy 2 cách thức mà các use case có thể liên kết với
nhau Một cách là bao gồm (inclusion), cho phép tái sử dụng các step của một use case này bên trong một use case khác Cách khác là mở rộng (extension), cho phép tạo một use case
mới bằng cách bổ sung một số step vào một use case sẵn có
Thuật ngữ: Hai loại quan hệ khác là tổng hợp hóa (generalization) và nhóm (grouping)
Giống như trường hợp các class, generalization có một use case thừa kế từ use case khác Grouping là một cách đơn giản để gom nhóm các use case
Bao gồm (inclusion)
Xét các use case “Restock” và “Collect” trong ví dụ của bài 6 Chúng đều bắt đầu với các bước mở khóa, mở máy và kết thúc với các bước đóng máy, khóa máy Use case “Mở máy”
đã được tạo ra để they thế cho hai bước đầu còn use case “Đóng máy” thay thế cho hai bước cuối
Để biểu diễn quan hệ bao gồm (inclusion), ta dùng biểu tượng mà đã dùng cho sự phụ thuộc (dependency) giữa các class, một đường đứt nét nối các class với mũi tên chỉ đến class phụ thuộc Ngay phía trên đường inclusion, ta thêm một stereotype <<include>>
Chú ý: Use case bao gồm (included use case) không bao gồm đứng một mình Nó luôn là
một phần của một use case khác chứa nó
Hình 7.3
Mô hình use case của
máy soda với inclusion
Trang 4Mở rộng (extension):
Thuật ngữ: theo như bài 6, use case “Restock” là cơ sở cho use case “Restock according to
sales” Use case mới được gọi là mở rộng (extend) use case ban đầu vì nó thêm các bước mới vào trình tự trong use case gốc, được gọi là use case cơ sở (base)
Thuật ngữ: Việc mở rộng chỉ xảy ra tại một số điểm cụ thể trong trình tự của use case cơ
sở Những điểm này gọi là điểm mở rộng (extension point) Trong use case “Restock”,
những bước mới (chú ý đến loại hàng bán và quyết định loại nhãn bán nhiều hơn) xuất hiện sau khi nhà cung cấp mở máy soda và sẵn sàng nạp soda Điểm mở rộng là “Nạp các ngăn chứa” (Fill the compartment)
Giống như inclusion, ta trực quan hóa extension với đường phụ thuộc kèm theo stereotype
<<extends>> Trong use case cơ sở, điểm mở rộng xuất hiện dưới tên của use case
Hình 7.4
Một use case diagram
biểu diễn extension và
inclusion
Sự tổng quát hóa (generalization)
Các class có thể thừa kế từ một lớp khác và use case cũng vậy Trong việc thừa kế use case, use case con thừa kế các hành vi và ngữ nghĩa từ cha, và bổ sung thêm các hành vi riêng của
nó Ta có thể áp dụng use case con bất cứ nơi nào mà ta có thể áp dụng use case cha
Trong ví dụ, use case “Buy a cup of soda” nếu có sẽ thừa kế từ use case “Buy soda” Use case con sẽ thêm các hành vi như “add ice” và “mix soda brands” Ta mô hình hóa generalization của use case tương tự như mô hình hóa generalization của các class
Hình 7.5
Một use case có thể
thừa kế ý nghĩa và hành
vi từ use case khác
Mối quan hệ generalization có thể tồn tại giữa các actor cũng như giữa các use case Ta có thể trình bày người đại diện nhà cung cấp và người thu ngân như là các nhân viên của nhà cung cấp Nếu ta đổi tên người đại diện là Restocker thì Restocker và Collector đều là con của Supplier Agent
Trang 5Hình 7.6
Giống như các class và
use case, actor cũng có
thể có mối quan hệ tổng
quát hóa
Bức tranh tổng thể
Hiện giờ chúng ta đã nắm được cách thức tổ chức của UML Hình 7.7 trực quan hóa các tổ chức đó
Hình 7.7
Tổ chức của UML
Tóm lược
Use case là một công cụ mạnh mẽ cho việc thu thập yêu cầu chức năng Use case diagram
bổ sung thêm sức mạnh bởi: nó trực quan hóa các use case, nó hỗ trợ việc liên lạc giữa phân tích viên và người dùng và giữa phân tích viên với khách hàng Trong một use case diagram, biểu tượng cho một use case là một hình ellipse Biểu tượng cho một tác nhân (actor) là một hình người gậy (stick) Một đường kết hợp (association) liên kết một actor với một use case Các use case thường nằm trong một hình chữ nhật biểu diễn cho ranh giới hệ thống (system boundary)
Trang 6Sự bao gồm (inclusion) được biểu diễn bởi đường phụ thuộc (dependency line) với một stereotype tên <<include>> Sự mở rộng (extension) cũng được biểu diễn bởi đường phụ thuộc với một stereotype tên <<extends>> Hai mối quan hệ khác giữa các use case là sự tổng quát hóa (generalization), trong đó một use case thừa kế ý nghĩa, hành vi của use case khác, và việc gom nhóm (grouping) nhằm tổ chức một tập các use case Sự tổng quát hóa được biểu diễn tương tự như biểu diễn sự thừa kế giữa các class Sự gom nhóm được biểu diễn bởi biểu tương gói (package)
Câu hỏi
1 Nêu 2 ưu điểm của việc trực quan hóa một use case?
2 Mô tả sự tổng quát hóa? Trong quan hệ giữa các use case?
3 Sự giống và khác nhau giữa class và use case
Bài tập
1 Vẽ một use case diagram cho một TV remote control