Chương 5
MƠ HÌNH THIẾT KẾ
CÁCH TẠO SƠ ĐỒ LỚP THIẾT KẾ
(DESIGN MODEL: CREATING DESIGN CLASS DIAGRAMS)
Sơ đồ lớp thiết kế (Design class diagram)
• Sơ đồ lớp thiết kế biểu diễn chi tiết của các lớp phần mềm và giao diện trong một ứng dụng. Những thông tin
tiêu biểu trong sơ đồ lớp thiết kế bao gồm:
•
•
•
•
•
•
Các lớp (classes)
Mối quan hệ và thuộc tính (associations & attributes
Giao diện và thao tác trên giao diện (interfaces with their operations)
Các phương thức (methods)
Thuộc tính (attribute)
Các phụ thuộc (dependencies)
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
2
Domain Model - Design Model Classes
• Domain model: các lớp khái niệm đại diện cho các khái niệm trừu tượng trong thế giới thực mà người phát
triển phần mềm đang quan tâm.
• Mơ hình lớp thiết kế (Design model class): lớp thiết kế đại diện cho các lớp phần mềm, nó được định
nghĩa như là một thành phần của phần mềm ứng dụng.
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
3
Domain Model - Design Model Classes
• Ví dụ
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
4
Xây dựng sơ đồ lớp thiết kế
• Các bước xây dựng sơ đồ lớp thiết kế
•
•
•
•
Xác định các lớp phần mềm
Xác định các phương thức
Bổ sung các loại thông tin
Tinh chỉnh các mối quan hệ
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
5
Xác định các lớp phần mềm
• Xác định những lớp mà tham gia vào các giải pháp phần mềm. Các lớp này có thể được tìm thấy bằng cách
duyệt tất cả các sơ đồ tương tác và danh sách các lớp trong domain model.
• Tuy nhiên có những lớp trong domain model không cần xuất hiện trong sơ đồ lớp thiết kế
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
6
Xác định các lớp phần mềm
• Ví dụ: Một hệ thống máy tính tiền được sử dụng để ghi lại doanh thu và xử lý các khoản thanh toán, được sử
dụng trong một cửa hàng bán lẻ, hệ thống bao gồm các thành phần phần cứng như máy tính và máy qt mã
vạch
• Hệ thống có thể giao tiếp với các ứng dụng khác như máy tính thuế, hệ thống kiểm soát hàng tồn kho, kho lưu
trữ sản phẩm theo Loại sản phẩm.
• Hệ thống tự động xuất hóa đơn thanh toán khi tất cả các sản phẩm mà khách hàng mua được nhập vào hệ
thống.
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
7
Xác định các lớp phần mềm
• Ví dụ: các lớp khái niệm trong domain model của hệ thống máy tính tiền
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
8
Xác định các lớp phần mềm
• Ví dụ: các lớp phần mềm trong hệ thống máy tính tiền
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
9
Xác đinh phương thức
• Các phương thức của mỗi lớp có thể được xác định bằng cách phân tích các biểu đồ tương tác.
• Nói chung, tập hợp tất cả các Messages được gửi đến một lớp X trên tất cả các sơ đồ tương tác thường là
các phương thức của lớp X phải xác định.
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
10
Xác đinh phương thức
• Ví dụ: sơ đồ tương tác của hoạt động tính tiền trong hệ thống máy tính tiền
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
11
Xác đinh phương thức
• Một số vấn đề với tên phương thức
•
Thơng điệp Create trong sơ đồ tương tác, chỉ ra một đối tượng mới được khởi tạo, khi chuyển thiết kế sang ngơn ngữ lập
trình hướng đối tượng, nó phải được thể hiện trong ngữ cảnh của ngôn ngữ hiện thực.
•
Ví dụ: C ++, Java khơng có phương thức create() mà là new()
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
12
Xác đinh phương thức
• Một số vấn đề với tên phương thức
•
•
Một thơng điệp dạng (multiobject) truyền tới các đối tượng chứa bên trong lớp đó
•
Vì vậy, Find() khơng phải là một phần của lớp Productspecification; nó là một phần của interface của multiobject. Do đó,
khơng thêm Find() vào lớp Productspecification
Ví dụ: Find() là một thơng điệp đến một tập đối tượng
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
13
Bổ sung role vào mối quan hệ
• Bổ sung điều hướng vào mối quan hệ:
•
Điều hướng là một thuộc tính của Role, chỉ ra rằng mối quan hệ được thực hiện từ lớp nguồn đến lớp mục tiêu.
• Ví dụ:
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
14
Bổ sung role vào mối quan hệ
• Ví dụ:
Sơ đồ lớp của hệ thống máy tính
tiền được bổ sung Role vào các
mối quan hệ
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
15
Sử dụng Package tổ chức domain model
• Để dễ dàng trong phần thiết kế hướng đối tượng, domain model được tổ chức thành các package.
• Tổ chức domain model thành các package là một thủ tục phức tạp, dựa trên hai nguyên tắc cơ bản: sự gắn
kết và độc lập.
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
16
Nhóm các lớp vào Package
• Ngun tắc 1: nhóm các lớp vào package phải thỏa các tiêu chí gắn kết (coherence) sau:
•
•
•
Mục tiêu: các lớp phải trả về các dịch vụ đáp ứng yêu cầu người dùng
Ổn định: sự cô lập các lớp trong một package phải thực sự ổn định trong quá trình phát triển dự án, và sau đó.
Thời gian sống của các đối tượng: tiêu chí này giúp phân biệt được các lớp mà đối tượng có thời gian sống rất khác
nhau.
• Ngun tắc 2: nhóm các lớp vào package phải giảm thiểu sự phụ thuộc (dependency) giữa các package
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
17
Nhóm các lớp vào Package
• Cách chọn các lớp vào một package cần phải:
•
•
•
•
Có cùng chủ đề, có quan hệ chặt chẽ bởi khái niệm hoặc mục đích
Cùng một hệ thống phân cấp
Tham gia cùng một use case
Có quan hệ kết hợp chặt.
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
18
Nhóm các lớp vào Package
• Ký hiệu Package trong UML: được hiển thị như một thư mục dạng tab, Subordinate packages có thể được
hiển thị bên trong nó.
• Tên packages
•
•
Nếu package mơ tả các phần tử của nó thì tên Package đặt trong tab
Ngược lại, thì tên Package đặt trong package.
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
19
Quyền sở hữu và tham chiếu
• Quyền sở hữu:
•
•
Một phần tử được sở hữu bởi package chứa nó.
Tuy nhiên, Một phần tử có thể được tham chiếu đến một phần tử trong package khác. Trong trường hợp này, tên của phần
tử được xác định bởi tên của package theo định dạng: PackageName::ElementName
• Ví dụ:
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
20
Package phụ thuộc
• Nếu một phần tử trong mơ hình phụ thuộc vào một phần tử khác thì giữa chúng có mối quan hệ phụ thuộc
• Một package phụ thuộc chỉ ra rằng các phần tử bên trong nó kết hợp với các phần tử trongpackage mục tiêu
• Trong UML mối quan hệ phụ thuộc được biểu diễn bằng ký hiệu:
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
21
Package phụ thuộc
• Ví dụ: package Sales phụ thuộc vào package Core Elements
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
22
Ví dụ 1
• Mơ hình package domain của hệ thống máy tính tiền
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
23
Ví dụ 1
• Package Core
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
24
Ví dụ 1
• Package Products
Bài giảng Phân tích thiết kế hệ thống - GV: Từ Thị Xuân Hiền
25